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文章
16959瀏覽量
182858 -
驅動
+關注
關注
12文章
1898瀏覽量
86511 -
SPI
+關注
關注
17文章
1775瀏覽量
94653
發布評論請先 登錄
步進電機驅動控制器介紹
基于SPI的EEPROM控制器設計與實現

利用SPI控制器控制nRF24L01射頻模塊的驅動程序設計

評論