

点击蓝字添加“星标★” 关注我们
引入
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转换前必须获取校验因子,否则无法转换。
结果如下图:

往期精彩
第255讲|MM32SPIN0280内部时钟捕获外部HSE时钟
第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)——配置软硬件环境
公众号推送机制改版
感兴趣的动态频频“失联”?
简单两步点亮“星标★”
不再错过每一篇灵动动态!

关于灵动
上海灵动微电子股份有限公司成立于 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 生态体系。灵动始终秉承着“诚信、承诺、创新、合作”的精神,为客户提供从硬件芯片到软件算法、从参考方案到系统设计的全方位支持。

灵动股份


长按识别二维码关注我们

MORE
官网:www.mm32mcu.com
微信公众号:灵动MM32MCU
灵动MM32MCU技术论坛:
bbs.21ic.com/iclist-696-1.html
暂无评论哦,快来评论一下吧!
