![]() |
發布時間: 2020-6-18 20:49
正文摘要:測試stc8a單片機的12位adc,不要求精度。硬件電路 AVref接VCC,AVcc接VCC,VCC為5V; AGnd接GND.測試結果:都是最大值4095, 以下是我的程序: ... |
coody_sz 發表于 2023-3-12 11:52 我也想不明白,但是事實證明就是。我用的是STC15W408AS,SOP28封裝,芯片最下面的一串數字是2219H3RK92.XA。現在用內部晶振是正常的,只要一用外部晶振,ADC_RES得到的值就是255,我已經排除其他原因了。 這款芯片用好久了,以前都用內部晶振,沒發現有什么,這次因為需要高精度時鐘,換了外部晶振,就這樣了。 我感覺STC的芯片暗BUG多,我曾經還遇到過開機啟動不進入程序,并且電流增大,芯片發燙的,最后的解決方案是改電路,增加延時電容,延遲啟動單片機,就好了。這些神奇的BUG我一直找不到原因。。。 |
leeye 發表于 2023-3-11 19:43 怎么會?ADC時鐘取自系統時鐘,系統時鐘是內部時鐘、外部晶振二選一。 我有好多東西用的STC15W408AS做的,就是因為帶ADC和PWM、SPI、串口,而我基本都使用外部晶振的。 |
把查詢 ADC完成標志的語句 改成: while((ADC_CONTR & 0x20) != 0x20); 或者: while((ADC_CONTR & 0x20) == 0x00); |
我今天調試STC15W408AS發現,使用外部晶振ADC就采不到數據,我這個10位的采出來永遠都是0x03FF,換成內部晶振采的數據就準確了。 我猜測你是不是也用外部晶振。這個BUG直接想罵人! ![]() |
直接下載STC官方例程就可以測試啦 |
樓主這個問題解決了嗎 |
從程序說你看看adc定義的數據類型 |
R1接地了沒有? 多少是要并聯一個104電容在R1兩頭的 至于官方電路,串不串電感和0歐電阻要不要都無所謂,反正你對精度沒有要求 |
要參考官方的電路圖 |
1、把R1短路看看ADC值 2、確保V看看Vref接了Vcc |
手冊中的原理圖要看看比對一下,AVCC接到VCC時串個電感,AGND接到GND時加個0R電阻,這是有作用的,不然人家不會推薦這種電路接法 |