標(biāo)題: stm8單片機的ADC2連續(xù)采集通道間干擾 [打印本頁]
作者: Valarmorghulis 時間: 2019-8-1 15:37
標(biāo)題: stm8單片機的ADC2連續(xù)采集通道間干擾
1. 序
本項目使用ADC2+多通道進(jìn)行ADC溫度傳感器采集,由于ADC2沒有緩存模式,只能一次一次去讀取采集的數(shù)據(jù),即讀取“ADC數(shù)據(jù)低位寄存器(ADC_DRL)和ADC數(shù)據(jù)高位寄存器(ADC_DRH)”,在使用多通道連續(xù)采集的時候,只能按照先后順序去采集+讀取數(shù)據(jù)并做響應(yīng)處理。
初始化配置的代碼如下:
void bsp_AdcInit()
{
ADC_CR2_ALIGN = 1; //右對齊數(shù)據(jù)
ADC_CR1_CONT = 1; //連續(xù)轉(zhuǎn)換模式
ADC_CR1_SPSEL = 4; //8分頻時鐘
}
void bsp_Channel9Init()//PE6->溫度1
{
ADC_CR1_ADON = 1; //啟動轉(zhuǎn)換
ADC_CSR &= (uint8_t)(~0x0F); // Clear the ADC2 channels
ADC_CSR |= 0X09;
ADC_CR1_ADON = 1; //啟動轉(zhuǎn)換
}
void bsp_Channel8Init()//PE7->溫度2
{
ADC_CR1_ADON = 1; //啟動轉(zhuǎn)換
ADC_CSR &= (uint8_t)(~0x0F); // Clear the ADC2 channels
ADC_CSR |= 0X08;
ADC_CR1_ADON = 1; //啟動轉(zhuǎn)換
}
需要采集哪個通道的數(shù)據(jù)就調(diào)用哪個通道的配置函數(shù),
//--------------------溫度采集-------------------
bsp_AdcVoltageToTemp8();
bsp_AdcVoltageToTemp9();
2. 問題
采集過程中需要頻繁切換選中的通道,這時候就會出現(xiàn)通道之間的干擾,產(chǎn)生一個明顯的影響。例如,室溫為27°時,采集到的溫度只有23/24℃。
3. 原理
搜索51hei上的相關(guān)問題,我找到一個本論壇大神比較合理的解釋。
關(guān)于通道間干擾問題.png (37.09 KB, 下載次數(shù): 40)
下載附件
2019-8-1 15:35 上傳
4. 解決方案
在調(diào)用切換通道的配置函數(shù)之后,加一個延時,等電容電壓穩(wěn)定過后,再去采集和處理數(shù)據(jù)
channel8.png (8.62 KB, 下載次數(shù): 38)
下載附件
2019-8-1 15:36 上傳
以上Word格式文檔51黑下載地址:
ADC2連續(xù)采集模式并輪流采集.doc
(69.5 KB, 下載次數(shù): 20)
2019-8-1 15:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |