PYB操作 ADC操作

2021-09-29 23:18:56 字數 1623 閱讀 1279

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路外部變阻器輸入,另外兩路是內部的...