灵动微课堂 (第257讲)|MM32F5270平台ADC注入通道的单周期采样的实现
来源:灵动MM32MCU 发布时间:2023-05-25 分享至微信

点击蓝字添加“星标★” 关注我们


引入

MM32F5270的ADC可配置4个注入通道来扩展转换通道,那么可进行转换的通道最多可达20个。

特点

1.通道优先级

注入通道转换顺序从JSQ0 ~ JSQ3优先级由高到底依次转换。

2. 通道转换方式

支持单端转换、差分转换和伪差分转换。

3. 数据补偿

注入通道转换的值减去对应注入补偿寄存器的值,补偿后的结果可能为负值,因此配置了注入补偿寄存器的注入通道转换结果是有符号数据,根据数据对齐方式不同符号位SEXT不同。图3.1描述了数据分辨率与数据补偿左对齐关系,图3.2描述数据对齐及注入通道符号位位置。

图3.1 数据分辨率与数据补偿左对齐

图3.2 数据对齐

4. 注入通道中断

注入通道序列转换结束中断(JEOSIF)、注入通道转换结束中断(JEOCIF)和注入通道采样结束中断(JEOSMPIF)。

5. 注入通道启动转换

主要有两种方式,第一种是在任意通道工作模式下,使能自动注入ANYCR_JAUTO,当任意通道序列转换完成后,注入通道会自动紧跟着转换;第二种是自行设置注入转换使能ANYCR_JADST,即可转换注入通道。注意注入通道转换完成后ANYCR_JADST,将被硬自动清除。


例程介绍

在任意通道工作模式下,配置规则组转换序列,再配置注入组转换序列,使能自动注入,查看注入通道是否转换完成。

具体配置步骤:

1

配置ADC初始化结构体,配置分辨率12位、单周期转换、数据右对齐、单端转换、参考内部电压

2

配置规则组转换序列和每个规则通道的采样时间,注入组转换序列和每个注入通道的采样时间

3

使能注入通道自动转换

4

使能ADC

参数定义如下:

#defineAPP_ADC_SEQ_LEN3u
#defineAPP_ADC_EXT_SEQ_LEN2u
/*channelsinanysequence.*/
uint32_tapp_adc_seq_channels[APP_ADC_SEQ_LEN]=
{
BOARD_ADC_CHN_NUM_1,
BOARD_ADC_CHN_NUM_4,
BOARD_ADC_CHN_NUM_5,
};
/*channelsininjectsequence.*/
uint32_tapp_adc_extseq_channels[APP_ADC_EXT_SEQ_LEN]=
{
BOARD_ADC_CHN_NUM_5,
BOARD_ADC_CHN_NUM_1
};


配置代码如下:

/*setuptheconverter.*/
ADC_Init_Typeadc_init;
adc_init.Resolution=ADC_Resolution_Alt0;
adc_init.ConvMode=ADC_ConvMode_SeqOneTime;
adc_init.Align=ADC_Align_Right;
adc_init.SingleDiffMode=ADC_SingleDiffConvMode_SingleEnd;
adc_init.SingleVolt=ADC_SingleConvVref_Internal;
ADC_Init(ADC1,adc_init);

/*setuptheconversionanysequence.*/
/*configregularsequencechannel*/
for(uint32_ti=0u;i<APP_ADC_SEQ_LEN;i++)
{
ADC_EnableSeqSlot(ADC1,i,app_adc_seq_channels[i]);
ADC_SetChnSampleTime(ADC1,app_adc_seq_channels[i],ADC_SampleTime_Alt7);
}
/*configinjectchannel.*/
for(uint32_ti=0u;i<APP_ADC_EXT_SEQ_LEN;i++)
{
ADC_EnableExtSeqSlot(ADC1,i,app_adc_extseq_channels[i]);
ADC_SetChnSampleTime(ADC1,app_adc_extseq_channels[i],ADC_SampleTime_Alt7);
}
/*enabletheinjectatuoconversion.*/
ADC_EnableAutoExtSeqSlot(ADC1,true);
/*powerontheconverter.*/
ADC_Enable(ADC1,true);


注:ADC转换前必须获取校验因子,否则无法转换。

结果如下图:


往期精彩

第256讲|MM32G0140 I2C驱动EEPROM

第255讲|MM32SPIN0280内部时钟捕获外部HSE时

第254讲|Mini-F0160实现USB转3路虚拟串口

第253讲|为MindSDK搭建Keil MDK开发环境

第252讲|开源项目:基于MM32F0160微控制器的机械键盘

第251讲|为MindSDK搭建armgcc编译环境(Windows版)

第250讲|mm32-2nd-bootloader技术白皮书(6)——总结及注意事项

第249讲|mm32-2nd-bootloader技术白皮书(5)——编译可在QSPI Flash上运行的程序

第248讲|mm32-2nd-bootloader技术白皮书(4)——设计实现简单的2nd bootloader

第247讲|mm32-2nd-bootloader技术白皮书(3)——设计实现QSPI Flash的下载算法

第246讲|mm32-2nd-bootloader技术白皮书(2)——QSPI外设简介

第245讲|mm32-2nd-bootloader技术白皮书(1)——配置软硬件环境

第244讲|FlexCAN OTA

第243讲|单独下载可执行文件到MM32F5微控制器

灵动微课堂大合辑


公众号推送机制改版

感兴趣的动态频频“失联”?

简单两步点亮“星标★”

不再错过每一篇灵动动态!


关于灵动

上海灵动微电子股份有限公司成立于 2011 年,是中国本土领先的通用 32 位 MCU 产品及解决方案供应商。公司基于 Arm Cortex-M 系列内核开发的 MM32 MCU 产品拥有 F/G/L/A/SPIN/W 六大系列,目前已量产近 300多款型号,累计交付超 4 亿颗,每年都有近亿台配备了灵动 MM32MCU 的优秀产品交付到客户手中,在本土通用 32 位 MCU 公司中位居前列。

灵动客户涵盖智能工业、汽车电子、通信基建、医疗健康、智慧家电、物联网、个人设备、手机和电脑等应用领域。灵动是中国为数不多的同时获得了 Arm-KEIL、IAR、SEGGER 官方支持的本土 MCU 公司,并建立了独立、完整的通用 MCU 生态体系。灵动始终秉承着“诚信、承诺、创新、合作”的精神,为客户提供从硬件芯片到软件算法、从参考方案到系统设计的全方位支持。


灵动股份

微信号:MindMotion-MMCU

长按识别二维码关注我们

MORE

官网:www.mm32mcu.com

微信公众号:灵动MM32MCU

灵动MM32MCU技术论坛:

bbs.21ic.com/iclist-696-1.html

[ 新闻来源:灵动MM32MCU,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!