引入
MM32F5270的ADC可配置4個(gè)注入通道來(lái)擴(kuò)展轉(zhuǎn)換通道,那么可進(jìn)行轉(zhuǎn)換的通道最多可達(dá)20個(gè)。
特點(diǎn)
**1. **通道優(yōu)先級(jí)
注入通道轉(zhuǎn)換順序從JSQ0 ~ JSQ3優(yōu)先級(jí)由高到底依次轉(zhuǎn)換。
2. 通道轉(zhuǎn)換方式
支持單端轉(zhuǎn)換、差分轉(zhuǎn)換和偽差分轉(zhuǎn)換。
3. 數(shù)據(jù)補(bǔ)償
注入通道轉(zhuǎn)換的值減去對(duì)應(yīng)注入補(bǔ)償寄存器的值,補(bǔ)償后的結(jié)果可能為負(fù)值,因此配置了注入補(bǔ)償寄存器的注入通道轉(zhuǎn)換結(jié)果是有符號(hào)數(shù)據(jù),根據(jù)數(shù)據(jù)對(duì)齊方式不同符號(hào)位SEXT不同。圖3.1描述了數(shù)據(jù)分辨率與數(shù)據(jù)補(bǔ)償左對(duì)齊關(guān)系,圖3.2描述數(shù)據(jù)對(duì)齊及注入通道符號(hào)位位置。
4. 注入通道中斷
注入通道序列轉(zhuǎn)換結(jié)束中斷(JEOSIF)、注入通道轉(zhuǎn)換結(jié)束中斷(JEOCIF)和注入通道采樣結(jié)束中斷(JEOSMPIF)。
5. 注入通道啟動(dòng)轉(zhuǎn)換
主要有兩種方式,第一種是在任意通道工作模式下,使能自動(dòng)注入ANYCR_JAUTO,當(dāng)任意通道序列轉(zhuǎn)換完成后,注入通道會(huì)自動(dòng)緊跟著轉(zhuǎn)換;第二種是自行設(shè)置注入轉(zhuǎn)換使能ANYCR_JADST,即可轉(zhuǎn)換注入通道。注意注入通道轉(zhuǎn)換完成后ANYCR_JADST,將被硬自動(dòng)清除。
例程介紹
在任意通道工作模式下,配置規(guī)則組轉(zhuǎn)換序列,再配置注入組轉(zhuǎn)換序列,使能自動(dòng)注入,查看注入通道是否轉(zhuǎn)換完成。
具體配置步驟:
參數(shù)定義如下:
#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轉(zhuǎn)換前必須獲取校驗(yàn)因子,否則無(wú)法轉(zhuǎn)換。
結(jié)果如下圖:
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8587瀏覽量
146609 -
寄存器
+關(guān)注
關(guān)注
31文章
5279瀏覽量
119721 -
串口中斷
+關(guān)注
關(guān)注
0文章
64瀏覽量
13835 -
ADC采樣
+關(guān)注
關(guān)注
0文章
134瀏覽量
12811 -
靈動(dòng)微
+關(guān)注
關(guān)注
3文章
174瀏覽量
22635 -
MM32
+關(guān)注
關(guān)注
1文章
106瀏覽量
730
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論