打印
[活动专区]

【AutoChips 7801x MCU评测报告】之多通道ADC采样

[复制链接]
8206|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个通道顺序扫描:

#include "bsp_adc.h"

stc_adc_t ADC;

///< ADC 采样端口初始化
static void App_AdcPortInit(void)
{   
    ///< 开启GPIO外设时钟
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
   
    Gpio_SetAnalogMode(GpioPortA, GpioPin0);        //PA00 (AIN0)
    Gpio_SetAnalogMode(GpioPortA, GpioPin2);        //PA02 (AIN2)
    Gpio_SetAnalogMode(GpioPortA, GpioPin5);        //PA05 (AIN5)
}

///< ADC 模块初始化
static void App_AdcInit(void)
{
    stc_adc_cfg_t              stcAdcCfg;

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


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

    Adc_CfgSqrChannel(AdcSQRCH0MUX, AdcExInputCH0);
    Adc_CfgSqrChannel(AdcSQRCH1MUX, AdcExInputCH2);
    Adc_CfgSqrChannel(AdcSQRCH2MUX, AdcExInputCH5);   
    ///< ADC 中断使能
    Adc_EnableIrq();
    EnableNvic(ADC_DAC_IRQn, IrqLevel3, TRUE);   
    ///< 启动顺序扫描采样
    Adc_SQR_Start();
}   

///< ADC 中断服务程序
void Adc_IRQHandler(void)
{   
        static int i= 0;
        if(TRUE == Adc_GetIrqStatus(AdcMskIrqSqr))
    {
        Adc_ClrIrqStatus(AdcMskIrqSqr);      
        ADC.Restult0[i]   = Adc_GetSqrResult(AdcSQRCH0MUX);  //获取顺序扫描通道0
        ADC.Restult2[i]   = Adc_GetSqrResult(AdcSQRCH1MUX);  //获取顺序扫描通道1
        ADC.Restult5[i]   = Adc_GetSqrResult(AdcSQRCH2MUX);  //获取顺序扫描通道2        
        ADC.RestultAcc[i] = Adc_GetAccResult();   
                ADC.converted_OK = TRUE;       
                if((++i) >= ADC_LOOP_NUM)
                {
                        i = 0;
                }
        Adc_SQR_Stop();
    }
}


void BSP_ADC_Init(void)
{
        ///< ADC 采样端口初始化
    App_AdcPortInit();   
    ///< ADC 模块初始化
    App_AdcInit();   
    ///< ADC 顺序扫描 功能配置
    App_AdcSQRCfg();
}

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





使用特权

评论回复

相关帖子

沙发
zhouyong77| | 2020-9-17 18:30 | 只看该作者
精度咋样?

使用特权

评论回复
板凳
zeshoufx| | 2020-9-17 18:45 | 只看该作者
谢谢分享【多通道ADC采样】

使用特权

评论回复
地板
caigang13| | 2020-9-18 07:26 | 只看该作者
楼主这颗芯的ADC精度咋样?

使用特权

评论回复
5
zhengshuai888| | 2020-9-22 14:31 | 只看该作者
感谢楼主分享

使用特权

评论回复
6
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"
楼主,为什么我复制你的代码没有这个头文件

使用特权

评论回复
7
冰糖炖雪梨| | 2020-10-23 11:07 | 只看该作者

谢谢分享【多通道ADC采样】

使用特权

评论回复
8
向日葵的武士| | 2020-10-27 16:41 | 只看该作者
感谢楼主分享!

使用特权

评论回复
9
道子| | 2020-10-27 16:47 | 只看该作者
谢谢分享【多通道ADC采样】

使用特权

评论回复
10
goodluck09876| | 2020-10-28 10:09 | 只看该作者

谢谢分享【多通道ADC采样】

使用特权

评论回复
11
WJY19950827| | 2021-8-19 14:24 | 只看该作者
楼主,链接失效了,能麻烦再发一下吗,感谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

857

帖子

14

粉丝