全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 处理器/DSP >

MM32F5270平台ADC注入通道的单周期采样的实现

时间:2023-06-01 17:25

人气:

作者:admin

标签: 串口中断  寄存器  转换器 

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

引入

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

特点

**1. **通道优先级

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

2. 通道转换方式

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

3. 数据补偿

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

image.png

image.png

4. 注入通道中断

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

5. 注入通道启动转换

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

例程介绍

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

具体配置步骤:

image.png

参数定义如下:

#define APP_ADC_SEQ_LEN 3u
#define APP_ADC_EXT_SEQ_LEN 2u
/* channels in any sequence. */
uint32_t app_adc_seq_channels[APP_ADC_SEQ_LEN] =
{
    BOARD_ADC_CHN_NUM_1,
    BOARD_ADC_CHN_NUM_4,
    BOARD_ADC_CHN_NUM_5,
};
/* channels in inject sequence. */
uint32_t app_adc_extseq_channels[APP_ADC_EXT_SEQ_LEN] =
{
    BOARD_ADC_CHN_NUM_5,
    BOARD_ADC_CHN_NUM_1
};

配置代码如下:

/* setup the converter. */
ADC_Init_Type adc_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);

/* setup the conversion any sequence. */
/* config regular sequence channel */
for (uint32_t i = 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);
}
/* config inject channel. */
for (uint32_t i = 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);
}
/* enable the inject atuo conversion. */
ADC_EnableAutoExtSeqSlot(ADC1, true);
/* power on the converter. */
ADC_Enable(ADC1, true);

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

结果如下图:

640.gif

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信