1.配置pyb內部adc
2.配置pyb內部dac(這裡由於nano沒有dac這裡就不貼出**操作了)
1.putty
2.pyb nano
adc (模擬訊號轉換為數字量)是嵌入式中最常用的功能之一,在micropython 同樣也提供了相應的函式,可以直接讀取 adc 轉換的結果。在pyboard中,我們需要先導入adc模組,再指定乙個adc使用的gpio,然後就可以讀取指定gpio上adc轉換的結果了:
from pyb import adc
v = adc(pin.cpu.a0)
#定義adc物件
v.read(
)#讀取adc結果
通過read()函式讀取的adc結果是12位的,數值範圍為0~4095。
這個方法非常簡單,但是不夠靈活,不能設定 adc 轉換的引數。因此在pyboard 中,還另外提供了一種使用 adc 的方法,它先用adcall 函式設定adc的轉換位數,然後read_channel()函式讀取指定通道的adc轉換結果。
from pyb import adcall
adc = pyb.adcall(12)
#可以設定8/10/12
adc.read_channel(0)
#讀取通道0 pa0
adc.read_channel(2)
#讀取通道2 pa2
pyb.adcall()函式會影響所有的adc埠,因此這兩種adc的方法不要混合使用。
在不需要高精度adc時,可以通過降低adc的位數來提高轉換速度,還可以通過pyb.adcalll()讀取內部感測器。上面介紹的第二種adc方法還有乙個優點,就是可以讀取晶元內部的溫度感測器、vbat電壓和基準電壓等引數。
read_core_temp -
-read_core_vbat -
-read_core_vref -
-read_vref -
-
注意讀取內部感測器時,盡量將adc位數設定高一些,這樣轉換結果的誤差才比較小。
pyb.adc(pin):通過gpio定義乙個adc
pyb.adcall(resolution):定義adc的解析度,可以設定為8/10/12
==adc.read()==讀取adc的值,返回值與adc解析度有關,8位最大255,10位最大1023,12位最大4095
adc.read_channel(channel):讀取指定adc通道的值
adc.read_core_temp():讀取內部溫度感測器
adc.read_core_vbat():讀取vbat電壓
vback = adc.read_core_vbat() * 1.21 / adc.read_core_vref()
adc.read_core_vref():讀取vref電壓(1.21v參考)
3v3 = 3.3 * 1.21 / adc.read_core_vref()
adc.read_timed(buf, timer):以指定頻率讀取adc引數到buf
buf,緩衝區 timer,頻率(hz)
注:使用這個函式會將adc的結果限制到8位,這個函式是阻塞式的,會延時 len(buf)/timer
PYB操作 UART操作
uart是universal asynchronous receiver transmitter 通用非同步收發傳輸器 的簡稱,在微控制器和嵌入式系統中,串列埠 uart 一直都是非常重要的外設。雖然串列埠的速度並不快,但是因為它使用簡單 串列埠可能是兩個晶元之間傳輸資料最簡單的方式 占用軟體和硬體...
zju 7 ADC操作實驗
1 實驗目的 1 學習和掌握s3c2410下adc介面的操作方法以及應用程式的編寫 二 實驗內容 1 編寫edukit iv實驗箱linux作業系統下按鍵adc的應用程式,並顯示adc的值。三 主要儀器裝置 1 ubuntu12.04系統。2 英培特eduk4 s3c2410試驗平台 四 操作方法和...
STM32多通道ADC操作
自 今天嘗試了下stm32的adc取樣,並利用dma實現取樣資料的直接搬運儲存,這樣就不用cpu去參與操作了。找了不少例子參考,adc和dma的設定了解了個大概,並直接利用開發板來做一些實驗來驗證相關的操作,保證自己對各部分設定的理解。我這裡用了3路的adc通道,1路外部變阻器輸入,另外兩路是內部的...