SPI 控制器驅動層
SPI 控制器驅動層負責最底層的數據收發,主要有以下功能:
- 申請必要的硬件資源,比如中斷、DMA 通道、DMA 內存緩沖區等等
- 配置 SPI 控制器的工作模式和參數,使之可以和相應的設備進行正確的數據交換
- 向通用接口層提供接口,使得上層的協議驅動可以通過通用接口層訪問控制器驅動
- 配合通用接口層,完成數據消息隊列的排隊和處理,直到消息隊列變空為止
SPI 主機驅動就是 SOC 的 SPI 控制器驅動。Linux 內核使用 spi_master/spi_controller 表示 SPI 主機驅動,spi_master 是個結構體,定義在 include/linux/spi/spi.h 文件中。
SPI 主機驅動的核心就是申請 spi_master,然后初始化 spi_master,最后向 Linux 內核注冊 spi_master。
API 如下:
spi_alloc_master 函數:申請 spi_master。
spi_master_put 函數:釋放 spi_master。
spi_register_master函數:注冊 spi_master。
spi_unregister_master 函數:注銷 spi_master。
spi_bitbang_start函數:注冊 spi_master。
spi_bitbang_stop 函數:注銷 spi_master。
SPI 主機驅動的加載
以 MTK 為例,源碼來自于小米開源項目
https://github.com/MiCode/Xiaomi_Kernel_OpenSource
小米每做一個項目,都會把 kernel 部分開源,因為需要遵循 Linux GPL 開源協議。
【設備】聲明在設備樹中
kernel-4.14/arch/arm64/boot/dts/mediatek/mt6885.dts

【驅動】
kernel-4.14/drivers/spi/spi-mt65xx.c


匹配以后,probe 函數執行,申請 spi_master,初始化 spi_master,最后向 Linux 內核注冊 spi_master。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
控制器
+關注
關注
114文章
17791瀏覽量
193131 -
驅動
+關注
關注
12文章
1956瀏覽量
88524 -
SPI
+關注
關注
17文章
1885瀏覽量
101230
發布評論請先 登錄
相關推薦
熱點推薦
步進電機驅動控制器介紹
01步進電機驅動控制器步進電機驅動器作為實驗裝置可控的部分,能夠提供自動測量的方法。前面已經有兩款步進電機驅動器:SH-20403AXIS12雙軸藍牙移動框架基于ESP8266WiFi
發表于 08-31 08:32
基于SPI的EEPROM控制器設計與實現
應用實例描述了EEPROM讀寫操作的流程和時序。通過編寫ARM處理器的驅動程序,對控制器進行操作,實現了對EEPROM的讀與寫的具體過程,同時驗證了SP1總線接口設計的正確性。關鍵詞:SPI
發表于 08-04 14:59
?20次下載
利用SPI控制器控制nRF24L01射頻模塊的驅動程序設計
電子發燒友網站提供《利用SPI控制器控制nRF24L01射頻模塊的驅動程序設計.pdf》資料免費下載
發表于 11-06 16:34
?1次下載
SPI控制器驅動層功能介紹
評論