查看: 555|回复: 1

【瑞萨RA4系列开发板体验】adc使用

[复制链接]

116

主题

133

帖子

3768

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3768
发表于 2023-2-7 16:31:17 | 显示全部楼层 |阅读模式
【瑞萨RA4系列开发板体验】adc使用
作者:jf_92517703


rasc配置
1.配置adc引脚

2.配置stacks adc

2.

软件
bsp_adc0.h
  1. #ifndef __RA4_ADC0_H__
  2. #define __RA4_ADC0_H__
  3. #include "hal_data.h"
  4. #include "stdio.h"

  5. /*adc始化 */
  6. void adc0_Init(void);
  7. void read_adc(void);
  8. #endif
复制代码
bsp_adc0.c
  1. #include "bsp_adc0.h"

  2. /*

  3. 初始化 */
  4. void adc0_Init(void)
  5. {
  6.    fsp_err_t err = FSP_SUCCESS;
  7.   /* 初始化adc */
  8.   err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
  9.   /* Handle any errors. This function should be defined by the user. */
  10.   if(FSP_SUCCESS != err)
  11.     {
  12.         printf("ADC0 Open API failed\\r\\n");
  13.     }
  14.   /* 配置并是能通道 */
  15.     err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
  16.     assert(FSP_SUCCESS == err);
  17. }

  18. /*
  19. adc中断回调 */
  20. volatile bool scan_complete_flag = false;
  21. void adc0_callback(adc_callback_args_t * p_args)
  22. {
  23.         //宏将告知编译器回调函数不使用参数 p_args,从而避免编译器发出警告,
  24.     FSP_PARAMETER_NOT_USED(p_args);
  25.     scan_complete_flag = true;
  26. }

  27. void read_adc(void)
  28. {
  29.   fsp_err_t err = FSP_SUCCESS;
  30.   double a0,a1,a2;
  31.   uint16_t adc_data=0;
  32.   (void) R_ADC_ScanStart(&g_adc0_ctrl);
  33.    scan_complete_flag = false;
  34.   while (!scan_complete_flag)
  35.   {
  36.       /* Wait for callback to set flag. */
  37.   }
  38.   /*
  39.                 读取adc的值
  40.         */
  41.   err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adc_data);
  42.   assert(FSP_SUCCESS == err);
  43.   a0=(double)(adc_data/4095.0)*3.3;
  44.        
  45.         err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_1, &adc_data);
  46.   assert(FSP_SUCCESS == err);
  47.   a1=(double)(adc_data/4095.0)*3.3;
  48.        
  49.         err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_2, &adc_data);
  50.   assert(FSP_SUCCESS == err);
  51.   a2=(double)(adc_data/4095.0)*3.3;
  52.   printf("ch0 %f ch2 %f ch3 %fv: %.02f \\r\\n",a0,a1,a2);
  53. }
复制代码
测试结果


回复

使用道具 举报

3

主题

195

帖子

1191

积分

金牌会员

Rank: 6Rank: 6

积分
1191
发表于 2023-3-14 10:59:24 | 显示全部楼层

不错,学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户排行榜

RA助手

主题: 116帖子:133精华:0

RA_Lance

主题: 92帖子:132精华:9

lugl

主题: 38帖子:126精华:0

xujiwei263

主题: 16帖子:73精华:0

books咦

主题: 11帖子:11精华:2

Juggernaut

主题: 9帖子:95精华:0
快速回复 返回顶部 返回列表