SPI 控制器驅(qū)動(dòng)層
SPI 控制器驅(qū)動(dòng)層負(fù)責(zé)最底層的數(shù)據(jù)收發(fā),主要有以下功能:
- 申請(qǐng)必要的硬件資源,比如中斷、DMA 通道、DMA 內(nèi)存緩沖區(qū)等等
- 配置 SPI 控制器的工作模式和參數(shù),使之可以和相應(yīng)的設(shè)備進(jìn)行正確的數(shù)據(jù)交換
- 向通用接口層提供接口,使得上層的協(xié)議驅(qū)動(dòng)可以通過(guò)通用接口層訪問(wèn)控制器驅(qū)動(dòng)
- 配合通用接口層,完成數(shù)據(jù)消息隊(duì)列的排隊(duì)和處理,直到消息隊(duì)列變空為止
SPI 主機(jī)驅(qū)動(dòng)就是 SOC 的 SPI 控制器驅(qū)動(dòng)。Linux 內(nèi)核使用 spi_master/spi_controller 表示 SPI 主機(jī)驅(qū)動(dòng),spi_master 是個(gè)結(jié)構(gòu)體,定義在 include/linux/spi/spi.h 文件中。
SPI 主機(jī)驅(qū)動(dòng)的核心就是申請(qǐng) spi_master,然后初始化 spi_master,最后向 Linux 內(nèi)核注冊(cè) spi_master。
API 如下:
spi_alloc_master 函數(shù):申請(qǐng) spi_master。
spi_master_put 函數(shù):釋放 spi_master。
spi_register_master函數(shù):注冊(cè) spi_master。
spi_unregister_master 函數(shù):注銷 spi_master。
spi_bitbang_start函數(shù):注冊(cè) spi_master。
spi_bitbang_stop 函數(shù):注銷 spi_master。
SPI 主機(jī)驅(qū)動(dòng)的加載
以 MTK 為例,源碼來(lái)自于小米開源項(xiàng)目
https://github.com/MiCode/Xiaomi_Kernel_OpenSource
小米每做一個(gè)項(xiàng)目,都會(huì)把 kernel 部分開源,因?yàn)樾枰裱?Linux GPL 開源協(xié)議。
【設(shè)備】聲明在設(shè)備樹中
kernel-4.14/arch/arm64/boot/dts/mediatek/mt6885.dts
【驅(qū)動(dòng)】
kernel-4.14/drivers/spi/spi-mt65xx.c
匹配以后,probe 函數(shù)執(zhí)行,申請(qǐng) spi_master,初始化 spi_master,最后向 Linux 內(nèi)核注冊(cè) spi_master。
-
控制器
+關(guān)注
關(guān)注
114文章
17049瀏覽量
183567 -
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1912瀏覽量
86710 -
SPI
+關(guān)注
關(guān)注
17文章
1791瀏覽量
95271
發(fā)布評(píng)論請(qǐng)先 登錄
深度解析Linux SPI總線和設(shè)備驅(qū)動(dòng)架構(gòu)

步進(jìn)電機(jī)驅(qū)動(dòng)控制器介紹
控制器的功能
關(guān)于SPI繼電器控制驅(qū)動(dòng)器設(shè)計(jì)要領(lǐng)的分析和應(yīng)用

關(guān)于SPI繼電器驅(qū)動(dòng)控制器的現(xiàn)狀和發(fā)展應(yīng)用分析

基于SPI的EEPROM控制器設(shè)計(jì)與實(shí)現(xiàn)

linux spi應(yīng)用層驅(qū)動(dòng)以及回環(huán)測(cè)試代碼
車身控制器的各個(gè)功能規(guī)范介紹
MAX6951/MAX6950 LED顯示驅(qū)動(dòng)器與MAXQ2000微控制器的通信

基于FPGA的SPI Flash控制器的設(shè)計(jì)方案

SPI驅(qū)動(dòng)源文件目錄在哪

利用SPI控制器控制nRF24L01射頻模塊的驅(qū)動(dòng)程序設(shè)計(jì)

詳解Zynq中的SPI控制器

評(píng)論