熟悉GD32的小伙伴都知道,ADC除了可以采集IO口上的電壓外,還有兩個內部通道,分別為內部溫度傳感器通道(ADC0_CH16)和Vrefint通道(ADC0_CH17),其中內部溫度傳感器通道可以采集芯片周圍的溫度(注意,這個溫度通道適用于采集相對溫度,如果用來測試絕對溫度,是有一定的誤差哦),Vrefint是一個穩定的帶隙基準電壓,典型值為1.2V。
有的小伙伴反饋使用這兩個內部通道時,始終得不到轉換數據,那么可能的原因有哪些呢?
原因一:
使用ADC的外部通道即IO電壓時,將IO口配置為模擬模式,
![wKgZomWzDmiAGoXlAABF4RuCVXs186.png](https://file1.elecfans.com/web2/M00/BE/7B/wKgZomWzDmiAGoXlAABF4RuCVXs186.png)
然后配置ADC就可以正常工作了,而由于內部通道不需要配置IO口,所有有的小伙伴就直接將IO口的配置去除,但此時發現內部通道始終沒有數據。
![wKgaomWzDmyAFGZpAAE-seG1x8U131.png](https://file1.elecfans.com/web2/M00/BF/67/wKgaomWzDmyAFGZpAAE-seG1x8U131.png)
這是因為ADC的配置中少了一個關鍵的函數,那就是adc_tempsensor_vrefint_enable:
![wKgZomWzDnKAN7zAAAA77ctDYS4267.png](https://file1.elecfans.com/web2/M00/BE/7B/wKgZomWzDnKAN7zAAAA77ctDYS4267.png)
這個函數是用來打開ADC內部通道的,需要在ADC使能前調用,否則就沒辦法正常使用內部通道哦。
原因二:
我們知道同一個IO口可以給多個ADC單元來使用,比如PA0,從datasheet中可以看出可以用于ADC0、ADC1或ADC2的通道0
![wKgZomWzDniACsFoAAA5AlZlBSQ774.png](https://file1.elecfans.com/web2/M00/BE/7B/wKgZomWzDniACsFoAAA5AlZlBSQ774.png)
所以很多小伙伴想當然的認為內部通道也可以給ADC1或ADC2來使用,但其實GD32的用戶手冊中已經明確的指出內部通道只能用于ADC0:
![wKgaomWzDoGAB2ZpAAGTtkDOTf4531.png](https://file1.elecfans.com/web2/M00/BF/67/wKgaomWzDoGAB2ZpAAGTtkDOTf4531.png)
所以你用ADC1或ADC2去轉換,當然是不行的啦。
-
單片機
+關注
關注
6044文章
44627瀏覽量
638969 -
IO
+關注
關注
0文章
463瀏覽量
39405 -
adc
+關注
關注
99文章
6537瀏覽量
545880 -
GD32
+關注
關注
7文章
416瀏覽量
24501
發布評論請先 登錄
相關推薦
GD32開發實戰指南(基礎篇) 第14章 內部溫度傳感器
![](https://file1.elecfans.com/web2/M00/BE/7C/wKgZomWzEIiAFRr0AArvytRajp8066.png)
怎樣使用軟件觸發讀取GD32的ADC呢
GD32替換STM32?這些坑你別踩...
【GD32】GD32讀取ADC數據
![【<b class='flag-5'>GD32</b>】<b class='flag-5'>GD32</b>讀取<b class='flag-5'>ADC</b>數據](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【GD32】GD32設置TIMER0輸出PWM
![【<b class='flag-5'>GD32</b>】<b class='flag-5'>GD32</b>設置TIMER0輸出PWM](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【GD32】GD32 DMA+ADC多通道掃描
![【<b class='flag-5'>GD32</b>】<b class='flag-5'>GD32</b> DMA+<b class='flag-5'>ADC</b>多<b class='flag-5'>通道</b>掃描](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何通過GD32 MCU內部ADC參考電壓通道提高采樣精度?
![如何通過<b class='flag-5'>GD32</b> MCU<b class='flag-5'>內部</b><b class='flag-5'>ADC</b>參考電壓<b class='flag-5'>通道</b>提高<b class='flag-5'>采樣</b>精度?](https://file1.elecfans.com/web2/M00/C1/DD/wKgaomXb5fuAdeoXAAAqpkxPnlg241.png)
GD32 MCU ISP失敗的原因
![<b class='flag-5'>GD32</b> MCU ISP失敗的<b class='flag-5'>原因</b>](https://file1.elecfans.com/web2/M00/C1/B2/wKgZomXeix-AYt0QAAA9fb4pF5E360.png)
GD32 MCU內部溫度傳感器如何使用,以及適合哪種應用場景?
![<b class='flag-5'>GD32</b> MCU<b class='flag-5'>內部</b>溫度傳感器如何使用,以及適合哪種應用場景?](https://file1.elecfans.com/web2/M00/C1/B2/wKgZomXei6uAWiRjAABRFQwMSmQ163.png)
GD32 ADC轉換時間如何計算?
![<b class='flag-5'>GD32</b> <b class='flag-5'>ADC</b>轉換時間如何計算?](https://file1.elecfans.com/web2/M00/C2/75/wKgZomXlJOGANn8xAAA8pT3MMN4777.png)
評論