請教:我使用PD2(AIN3)采樣。該口我連接到GND。但是運行程式,采樣到的資料不停變化,也不是0.第一次使用該芯片,不知道怎么回事,請各位前播指點一下,感謝!
//--------------------------------------
void init_adc(void)
{
//PD2
PD_DDR_DDR2=0; //PD2:input
PD_CR1_C12=0;
PD_CR2_C22=0; //FLOATING WIHTOUT INTERRUPT
ADC_CSR=0X03; //EOCIE=0
//Channel:AIN3
ADC_TDRL |=0X08; //AIN3:DISABLE Schmitt trigger
ADC_CR1=0X00; //fADC=fMASTER/2
//CONT=1
//ADON=0
ADC_CR2=0x00; //ALIGN=0
//SCAN=0
ADC_CR3=0X00; //DBUF=1
AdcFlag=0;
}
void enable_adc(void)
{
unsigned char i=0;
ADC_CR1 |= 0x01;
delay_us(200);
for(i=0;i<10;i++)
{
ADC_CR1 |= 0x01;
while(!(ADC_CSR & 0x80));
AdcData[i]=ADC_DRH;
ADC_CR1 &= 0x7f;
};
uj5u.com熱心網友回復:
由于外界干擾,電源噪音等,采樣到的資料不停變化很正常,可以通過硬體,軟體處理減少影響。uj5u.com熱心網友回復:
是,但是資料按道理在理論值附近波動。我把采樣口固定電平0V或1.2V, 采樣到的值完全亂了,所以才奇怪。
謝謝你的回復。
uj5u.com熱心網友回復:
如果采樣到的值完全亂了,那可能你的程式還有問題。uj5u.com熱心網友回復:
是,所以我把采樣程式發了出來,感覺不出哪里還有問題,EOC標志都是正常產生。能否請您幫忙看下哪里出了問題。
感覺STM的搞得太復雜了,我之前用過EMC,SONIX,NYQUEST等等臺灣芯片,都沒那么復雜。設定好后值都符合理論值。
uj5u.com熱心網友回復:
抱歉,我沒有STM8S003F3,無法幫忙。
uj5u.com熱心網友回復:
問題原因找到了,不是軟體代碼問題,是OPTION BYTE的AFR2需要設定1,否則該功能無法正常實作。在做PWM輸出時才查閱到這點。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/56270.html
標籤:單片機/工控
上一篇:求大神幫忙
