[活动专区] 【AutoChips 7801x MCU评测报告】之多通道ADC采样

[复制链接]
8655|10
 楼主| caizhiwei 发表于 2020-6-21 22:37 | 显示全部楼层 |阅读模式

    经过几天的整理,7801的资料已经传到网盘:
https://cloud.189.cn/t/YNBFFn7fauMz(访问码:7bpu)
   片上ADC模块是12位逐次逼近型模拟数字转换器,拥有12路外部通道和2路内部通道,支持单次、
连续、扫描或间断转换多种模式。模拟监控器特性允许应用程序监测输入电压是否超出设定的电压范围。
  12位分辨率
  ADC通道输入电压范围:AVSS < Vin < AVDD
  最大转换速率:1MSPS
  14路通道:12路外部通道,  1 路内部温度传
(Bandgap),每路通道可单独配置采样时间

看完以上参数,中规中矩。接下来就是代码调试了。
代码如下,采用了3个通道顺序扫描:

  1. #include "bsp_adc.h"

  2. stc_adc_t ADC;

  3. ///< ADC 采样端口初始化
  4. static void App_AdcPortInit(void)
  5. {   
  6.     ///< 开启GPIO外设时钟
  7.     Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
  8.    
  9.     Gpio_SetAnalogMode(GpioPortA, GpioPin0);        //PA00 (AIN0)
  10.     Gpio_SetAnalogMode(GpioPortA, GpioPin2);        //PA02 (AIN2)
  11.     Gpio_SetAnalogMode(GpioPortA, GpioPin5);        //PA05 (AIN5)
  12. }

  13. ///< ADC 模块初始化
  14. static void App_AdcInit(void)
  15. {
  16.     stc_adc_cfg_t              stcAdcCfg;

  17.     DDL_ZERO_STRUCT(stcAdcCfg);
  18.    
  19.     ///< 开启ADC/BGR外设时钟
  20.     Sysctrl_SetPeripheralGate(SysctrlPeripheralAdcBgr, TRUE);
  21.    
  22.     Bgr_BgrEnable();        ///< 开启BGR
  23.    
  24.     ///< ADC 初始化配置
  25.     stcAdcCfg.enAdcMode         = AdcScanMode;              ///<采样模式-扫描
  26.     stcAdcCfg.enAdcClkDiv       = AdcMskClkDiv2;            ///<采样分频,最大24Mhz,见手册P289
  27.     stcAdcCfg.enAdcSampCycleSel = AdcMskSampCycle8Clk;      ///<采样周期数-8
  28.     stcAdcCfg.enAdcRefVolSel    = AdcMskRefVolSelAVDD;      ///<参考电压选择-VCC
  29.     stcAdcCfg.enAdcOpBuf        = AdcMskBufDisable;         ///<OP BUF配置-关
  30.     stcAdcCfg.enInRef           = AdcMskInRefDisable;       ///<内部参考电压使能-关
  31.     stcAdcCfg.enAdcAlign        = AdcAlignRight;            ///<转换结果对齐方式-右
  32.     Adc_Init(&stcAdcCfg);
  33. }


  34. ///< ADC 顺序扫描 功能配置
  35. static void App_AdcSQRCfg(void)
  36. {
  37.     stc_adc_sqr_cfg_t          stcAdcSqrCfg;
  38.    
  39.     DDL_ZERO_STRUCT(stcAdcSqrCfg);
  40.         
  41.     ///< 顺序扫描模式功能及通道配置
  42.     ///< 注意:扫描模式下,当配置转换次数为n时,转换通道的配置范围必须为[SQRCH(0)MUX,SQRCH(n-1)MUX]
  43.     stcAdcSqrCfg.bSqrDmaTrig = FALSE;
  44.     stcAdcSqrCfg.enResultAcc = AdcResultAccEnable;
  45.     stcAdcSqrCfg.u8SqrCnt    = 3;
  46.     Adc_SqrModeCfg(&stcAdcSqrCfg);

  47.     Adc_CfgSqrChannel(AdcSQRCH0MUX, AdcExInputCH0);
  48.     Adc_CfgSqrChannel(AdcSQRCH1MUX, AdcExInputCH2);
  49.     Adc_CfgSqrChannel(AdcSQRCH2MUX, AdcExInputCH5);   
  50.     ///< ADC 中断使能
  51.     Adc_EnableIrq();
  52.     EnableNvic(ADC_DAC_IRQn, IrqLevel3, TRUE);   
  53.     ///< 启动顺序扫描采样
  54.     Adc_SQR_Start();
  55. }   

  56. ///< ADC 中断服务程序
  57. void Adc_IRQHandler(void)
  58. {   
  59.         static int i= 0;
  60.         if(TRUE == Adc_GetIrqStatus(AdcMskIrqSqr))
  61.     {
  62.         Adc_ClrIrqStatus(AdcMskIrqSqr);      
  63.         ADC.Restult0[i]   = Adc_GetSqrResult(AdcSQRCH0MUX);  //获取顺序扫描通道0
  64.         ADC.Restult2[i]   = Adc_GetSqrResult(AdcSQRCH1MUX);  //获取顺序扫描通道1
  65.         ADC.Restult5[i]   = Adc_GetSqrResult(AdcSQRCH2MUX);  //获取顺序扫描通道2        
  66.         ADC.RestultAcc[i] = Adc_GetAccResult();   
  67.                 ADC.converted_OK = TRUE;       
  68.                 if((++i) >= ADC_LOOP_NUM)
  69.                 {
  70.                         i = 0;
  71.                 }
  72.         Adc_SQR_Stop();
  73.     }
  74. }


  75. void BSP_ADC_Init(void)
  76. {
  77.         ///< ADC 采样端口初始化
  78.     App_AdcPortInit();   
  79.     ///< ADC 模块初始化
  80.     App_AdcInit();   
  81.     ///< ADC 顺序扫描 功能配置
  82.     App_AdcSQRCfg();
  83. }

  84. ///*在主循环中调用 Adc_SQR_Start(); 启动一次转换,均值滤波*/





zhouyong77 发表于 2020-9-17 18:30 来自手机 | 显示全部楼层
精度咋样?
zeshoufx 发表于 2020-9-17 18:45 | 显示全部楼层
谢谢分享【多通道ADC采样】
caigang13 发表于 2020-9-18 07:26 来自手机 | 显示全部楼层
楼主这颗芯的ADC精度咋样?
zhengshuai888 发表于 2020-9-22 14:31 | 显示全部楼层
感谢楼主分享
2334566436 发表于 2020-10-21 09:51 | 显示全部楼层
User\timer_triger_regular_adc.c(1): error:  #5: cannot open source input file "bsp_adc.h": No such file or directory
  #include "bsp_adc.h"
楼主,为什么我复制你的代码没有这个头文件
冰糖炖雪梨 发表于 2020-10-23 11:07 | 显示全部楼层

谢谢分享【多通道ADC采样】
向日葵的武士 发表于 2020-10-27 16:41 | 显示全部楼层
感谢楼主分享!
道子 发表于 2020-10-27 16:47 | 显示全部楼层
谢谢分享【多通道ADC采样】
goodluck09876 发表于 2020-10-28 10:09 | 显示全部楼层

谢谢分享【多通道ADC采样】
WJY19950827 发表于 2021-8-19 14:24 | 显示全部楼层
楼主,链接失效了,能麻烦再发一下吗,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

856

帖子

16

粉丝
快速回复 在线客服 返回列表 返回顶部