|
【瑞萨RA4系列开发板体验】ADC电压测量
作者:lugl
瑞萨RA4M2集成了● 12-bit A/D Converter (ADC12)● 12-bit 及温度传感器(TSN)。可以8位、10位、12位来采集数据,转换速率1M
【学习资料】
①B站的视频教程:https://www.bilibili.com/video/B ... _history.page.click
②CSDN博客:https://blog.csdn.net/qq_24312945/article/details/120791923
③官方提供的例程:r20an0608eu0121-ek-ra4m2-exampleprojects\ek_ra4m2\adc
【开发步骤】
在上面printf的工程上添加adc功能:
1、打开配置工具:
2、选择P002这个脚来进行ADC检测:
3、选择12位转换、右对齐,单次转换、Channel2
4、定义回调函数为adc0_callback、中断级别2:
5、同步工程,回到keil.
6、添加bsp_adc.c、bsp_adc.h,并把这两个文件添加到工程:
7、编写bsp_adc.c内容如下:
- #include "bsp_adc.h"
- #include "bsp_debug_uart.h"
- void bsp_adc_init(void)
- {
- fsp_err_t err = FSP_SUCCESS;
- /* Initializes the module. */
- err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
- /* Handle any errors. This function should be defined by the user. */
- if(FSP_SUCCESS != err)
- {
- printf("ADC0 Open API failed\r\n");
- }
- /* Enable channels. */
- err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
- assert(FSP_SUCCESS == err);
- }
- volatile bool scan_complete_flag = false;
- void adc0_callback(adc_callback_args_t * p_args)
- {
- //宏将告知编译器回调函数不使用参数 p_args,从而避免编译器发出警告,
- FSP_PARAMETER_NOT_USED(p_args);
- scan_complete_flag = true;
- }
- void read_adc(void)
- {
- fsp_err_t err = FSP_SUCCESS;
- double a0;
- uint16_t adc_data0=0;
- (void) R_ADC_ScanStart(&g_adc0_ctrl);
- scan_complete_flag = false;
- while (!scan_complete_flag)
- {
- /* Wait for callback to set flag. */
- }
-
- err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_2, &adc_data0);
- assert(FSP_SUCCESS == err);
- a0=(double)(adc_data0/4095.0)*3.3;
- printf("v: %.02f \r\n",a0);
- }
复制代码 bsp_adc.h:
- #ifndef __BSP_ADC_H__
- #define __BSP_ADC_H__
- #include "hal_data.h"
- #include <stdio.h>
- void bsp_adc_init(void);
- void read_adc(void);
- #endif
复制代码 8、在hal_entry.c中增加如下内容:
- void hal_entry(void)
- {
- bsp_uart_init();
- bsp_can0_init();
- bsp_adc_init();//adc初始化
- while(1)
- {
- can_send();
- read_adc();//读取adc的数值
- R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
- // NOLINT100->160
- }
- #if BSP_TZ_SECURE_BUILD
- /* Enter non-secure code */
- R_BSP_NonSecureEnter();
- #endif
- }
复制代码 下载到开发板,把P002接到3.3v上,可以看到测得的电压为3.30V:
把p002接到数据电源上,测试动态数据,非常准确:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|