天天看點

spi總線 上層調用_全志R16_SPI總線驅動的使用文檔

全志R16_SPI總線驅動的使用文檔

(2019-08-15 09:29:47)

标簽:

全志r16

介紹Linux 核心中SPI 子系統的接口及使用方法,為SPI裝置驅動的開發提供參考。适用于基于Linux

3.4核心的全志R16硬體平台。

2. 2. 子產品介紹

2.1. 子產品功能介紹

Linux 中 SPI 體系結構圖 2.1 所示,圖中用分割線分成了三個層次:

1. 使用者空間,包括所有使用 SPI 裝置的應用程式;

2. 核心,也就是驅動部分;

3. 硬體,指實際實體裝置,包括了 SPI 控制器和 SPI 外設。

其中,Linux 核心中的 SPI 驅動程式僅支援主裝置,邏輯上又可以分為 3 個部分:

1. SPI 核心(SPI Core):實作對 SPI 總線驅動及 SPI 裝置驅動的管理;

2. SPI 總線驅動(SPI Master Driver):針對不同類型的 SPI 控制器,實作對 SPI

總線通路的具體方法;

3. SPI 裝置驅動(SPI Device Driver):針對特定的 SPI 裝置,實作具體的功能,包括 read,write

以及 ioctl 等對使用者層操作的接口。

SPI總線驅動主要實作了适用于特定SPI控制器的總線讀寫方法,并注冊到Linux核心的SPI架構,SPI外設就可以通過SPI架構完成裝置和總線的适配。但是總線驅動本身并不會進行任何的通訊,它隻是提供通訊的實作,等待裝置驅動來調用其函數。

SPI

Core的管理正好屏蔽了SPI總線驅動的差異,使得SPI裝置驅動可以忽略各種總線控制器的不同,不用考慮其如何與硬體裝置通訊的細節。

2.2. 相關術語介紹

Sunxi 指Allwinner 的一系列 SOC 硬體平台

SPI:Serial Peripheral Interface,同步串行外設接口

SPI Master:SPI 主裝置

SPI Device:指 SPI 外部裝置

2.3. 子產品配置介紹

2.3.1 sys_config.fex sys_config.fex 配置說明

在不同的 Sunxi 硬體平台中,SPI 控制器的數目也不同,但對于每一個 SPI 控制器來說,

在 sys_config.fex 中配置參數相似,如下:

[spi0]

spi_used = 1

spi_cs_bitmap = 1

spi_cs0 = port:PC27<3><1>

spi_sclk = port:PC02<3>

spi_mosi = port:PC00<3>

spi_miso = port:PC01<3>

其中:

1. spi_used 置為 1 表示使能,0 表示不使能;

2. spi_cs_bitmap,由于 SPI 控制器支援多個 CS,這一個參數表示 CS 的掩碼;

3. spi_cs0、spi_sclk、spi_mosi 和 spi_miso 用于配置相應的 GPIO。

對于 SPI 裝置,還需要通過以下參數配置 SPI board info,這些資訊會通過 SPI 子系統的接口

spi_register_board_info()在 SPI 總線驅動初始化前就注冊到核心中。

[spi_devices]

spi_dev_num = 1

[spi_board0]

modalias = "m25p32"

max_speed_hz = 33000000

bus_num = 0

chip_select = 0

mode = 0

其中:

1. spi_dev_num 表示 SPI 裝置的數目,決定了下面有幾個[spi_boardx];

2. modalias,SPI 裝置的名字,在做總線适配時會用到;

3. max_speed_hz,最大傳輸速度,機關是 Hz;

4. bus_num,SPI 控制器的序号,從 0 開始編号;

5. chip_select,理論上可以選 0,1,2,3,取決于硬體的 CS 連線

6. mode,即 spi_board_info 結構中的 mode 成員,其定義同 spi_device 中的 mode

分享:

spi總線 上層調用_全志R16_SPI總線驅動的使用文檔

喜歡

spi總線 上層調用_全志R16_SPI總線驅動的使用文檔

贈金筆

加載中,請稍候......

評論加載中,請稍候...

發評論

登入名: 密碼: 找回密碼 注冊記住登入狀态

昵   稱:

評論并轉載此博文

spi總線 上層調用_全志R16_SPI總線驅動的使用文檔

發評論

以上網友發言隻代表其個人觀點,不代表新浪網的觀點或立場。