嵌入式常用功能模組實現原理

2021-10-12 17:18:59 字數 1501 閱讀 1877

分為gpi(輸入模式)和gpo(輸出模式)。其中,gpi可根據微控制器內部電路配置上拉電阻等,具體需要視微控制器而定,gpo分為幾種不同的輸出模式,如開漏、推挽等輸出模式,配合外部的電平轉換電路和隔離電路,常做開關量。

此功能常用的暫存器一般包括方向暫存器和資料暫存器。方向暫存器控制gpo/gpi。而資料暫存器控制io電平狀態。此外還有控制驅動能力等的暫存器,視實際運用場合進行配置。

進行模擬量/數字量轉換的模組。一般多通道共享乙個ad轉換器,因此常常搭配取樣保持器使用。當然,這不是軟體設計者考慮的東西。

adc轉換功能需要選擇adc時鐘,時鐘與暫存器中決定分頻係數的位共同決定取樣頻率。根據實際需要常常採用用所需的取樣頻率反求adc時鐘的分頻係數的方法。

adc取樣有硬體觸發和軟體觸發的方式:硬體觸發採用的是硬體定時進行取樣,而軟體觸發是通過向相應暫存器寫位進行觸發。

adc還帶有比較功能,用來篩選一些無效的資料,此外還有連續轉換、設定長取樣時間等功能,這些也在相應暫存器裡進行配置。

定時中斷是基於微控制器內部計數器實現的。通過對內部計數器的時鐘源和分頻係數的選擇,可以確定乙個時鐘脈衝所佔的實際時間的大小,因此,通過設定模數暫存器即可調節定時時間,再使能計數器(此處應認為定時器)溢位中斷,當數值暫存器達到模數暫存器的值的時候,產生溢位中斷訊號,即可進入定時中斷服務函式。

中斷服務函式需要進行標誌位清除。否則會導致中斷不斷被觸發,pc指標一直在中斷服務函式裡,一直執行中斷服務函式,不執行其他程式的內容。

外部io中斷。中斷訊號由外部裝置上報,mcu接收中斷訊號,進入中斷服務函式。由於是接收外部中斷訊號,所以需要復用對應的io為輸入模式,設定中斷訊號(沿/電平),設定中斷優先順序(有些微控制器預設),使能io中斷,編寫中斷服務函式。(注意各個模組的中斷向量表編號是固定的,編寫服務函式的時候通過這個編號繫結中斷服務函式)中斷服務函式裡需要清除中斷標誌位以讓pc返回,中斷函式不能是個死迴圈。

pwm的實現原理:模數暫存器+計數器+通道數值暫存器。

脈衝週期:此週期的數值反應為模數暫存器的值。pwm需要配置時鐘源。根據時鐘源和自己所需要的脈衝週期,可以確定模數暫存器的數值。簡單地形容一下公式:模數暫存器的值=目標週期/(1/時鐘源頻率)。

占空比:占空比的形式分為三種,中間對齊和兩端對齊的方式,這裡選取最常用的左端對齊方式。占空比可理解為為乙個脈衝週期裡高電平所占有的比例。假設脈衝週期1s,40%占空比則意味著高電平時間0.4s。因此,占空比的數值表示為通道數值暫存器的值。簡單地形容一下公式:通道數值暫存器的值=占空比x模數暫存器的值=占空比x目標週期/(1/時鐘源頻率)

直接儲存器訪問。高效的批量資料傳輸功能,省去了cpu讀取翻譯指令的時間,會占用匯流排。分請求、響應、傳輸、結束四個步驟。dma獲得匯流排控制權後,cpu即刻掛起或者只執行內部操作,由dma控制器輸出讀寫命令,直接控制ram與io口進行dma傳輸。傳輸的兩個重要引數:資料的起始位置、資料長度。

實驗05 PHP常用功能模組

一 完成教材p324 326實驗5.1 檔案命名為sy5 1.php 檔案的讀寫 php header content type text html charset utf 8 doctype html text css div style multipart form data action me...

嵌入式linux實現vnc功能

現在有乙個想法準備在嵌入式裝置和pc之間通過網路實現一種類似遠端桌面的功能,在pc端可以看到嵌入式裝置顯示的內容,並且可以使用滑鼠和鍵盤操作嵌入式裝置的程式。檢視了網路上的一些資料後,準備使用vnc功能來實現,在嵌入式裝置端啟動vncserver,在pc端啟動vncclient,建立連線後能實現需要...

嵌入式常用模組之 環形佇列(1)

在嵌入式開發時候,有很對模組是經常會使用到的。從這篇文字開始,將我覺得一些常用的模組逐一做乙個整理。梳理一下自己的思路,也順便方便大家,如果可以給初學者一點幫助和啟發,那也是再好不過了。環形佇列在非同步接收資料上感覺不能更爽。關於環形佇列詳細講解說明網上也很多了,我就簡單說一下了。為了減少動態分配 ...