偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SPI 子系統(tǒng)之SPI spec

網(wǎng)絡(luò) 網(wǎng)絡(luò)設(shè)備
外設(shè)的寫操作和讀操作是同步完成的。如果只進(jìn)行寫操作,主機(jī)只需忽略接收到的字節(jié);反之,若主機(jī)要讀取從機(jī)的一個字節(jié),就必須發(fā)送一個空字節(jié)來引發(fā)從機(jī)的傳輸。

1.SPI hardware

SPI:Serial Perripheral Interface,串行外圍設(shè)備接口,由 Motorola 公司提出,是一種高速、全雙工、同步通信總線。SPI 以主從方式工作,通常是有一個主設(shè)備和一個或多個從設(shè)備,無應(yīng)答機(jī)制。

本文我們講解標(biāo)準(zhǔn)的 4 線 SPI,四根線如下:

①CS/SS,Slave Select/Chip Select,片選信號線,用于選擇需要進(jìn)行通信的從設(shè)備。

②SCK,Serial Clock,串行時鐘,和 I2C 的 SCL 一樣,為 SPI 通信提供時鐘。

③MOSI/SDO,Master Out Slave In/Serial Data Output,主輸出從輸入。

④MISO/SDI,Master In Slave Out/Serial Data Input,主輸入從輸出。

2.SPI 四種工作模式

SPI 有四種工作模式,通過時鐘極性(CPOL)和時鐘相位(CPHA)的搭配來得到四種工作模式:

①、CPOL=0,串行時鐘空閑狀態(tài)為低電平。
②、CPOL=1,串行時鐘空閑狀態(tài)為高電平。
③、CPHA=0,串行時鐘的第一個跳變沿(上升沿或下降沿)采集數(shù)據(jù)。
④、CPHA=1,串行時鐘的第二個跳變沿(上升沿或下降沿)采集數(shù)據(jù)。

示例波形圖如下:

SPI 是全雙工的,所以讀寫時序可以一起完成。

3.SPI 傳輸機(jī)制

從圖可以看出,主機(jī)和從機(jī)都有一個串行移位寄存器,主機(jī)通過向它的 SPI 串行寄存器寫入一個字節(jié)來發(fā)起一次傳輸。寄存器通過 MOSI 信號線將字節(jié)傳送給從機(jī),從機(jī)也將自己的移位寄存器中的內(nèi)容通過 MISO 信號線返回給主機(jī)。這樣,兩個移位寄存器中的內(nèi)容就被交換。

外設(shè)的寫操作和讀操作是同步完成的。如果只進(jìn)行寫操作,主機(jī)只需忽略接收到的字節(jié);反之,若主機(jī)要讀取從機(jī)的一個字節(jié),就必須發(fā)送一個空字節(jié)來引發(fā)從機(jī)的傳輸。

雖然 SPI 四線制支持讀寫同時進(jìn)行,但實(shí)際上我們很多時候并不需要又讀又寫,見以下兩種情況(參考 BMA223 數(shù)據(jù)手冊):

注意:如下三幅圖示均為 CPOL=1,CPHA=1

(1)主機(jī)向從機(jī)寫數(shù)據(jù)

主機(jī)發(fā)送先發(fā)送 8 bits,第一個 bit 為 0 代表這次主機(jī)是想寫數(shù)據(jù)到從機(jī),AD6~AD0 表示要寫的寄存器地址。然后,主機(jī)就會一直寫下去。在這期間 SDO 一直沒用,一直是高阻態(tài),算是一直讀到1。

(2)主機(jī)從從機(jī)讀數(shù)據(jù)

這種情況下,主機(jī)先發(fā)送 8 bits,第一位為 1 代表這次是讀,然后 AD6 ~ AD0 是想要讀的寄存器地址,然后 SDO 開始返回數(shù)據(jù)。

4.SPI timing diagram

Tcsb_setup:建立時間
Tcsb_hold:保持時間
tsckl:低電平時間
tsckh:高電平時間
SCK period :Tsckl + tsckh
一般情況下 Tsckl = tsckh

注意:真實(shí)的波形圖如上,高低電平并不是到達(dá)最高點(diǎn)才算,0.3Vdd 以下為低電平,0.7Vdd 以上為高電平,計算信號時間長度的時候需要注意這個微小的時間,硬件設(shè)計必須注意信號質(zhì)量風(fēng)險,軟件開發(fā)人員也要會看波形圖。

這里的參數(shù),一般 spi 驅(qū)動不需要設(shè)置,但是半導(dǎo)體廠商提供的 spi 控制器驅(qū)動中,可以修改這些參數(shù)。我們寫 SPI 驅(qū)動時候,可以根據(jù)從設(shè)備的要求來修改這些參數(shù)。

5.DMA 與 FIFO

不同平臺對于 SPI FIFO 和 DMA 的 buffer size 設(shè)置不同:

傳輸 32bytes 以下使用 FIFO,傳輸 32bytes 以上使用 DMA。

DMA 可以自動發(fā)起多次傳輸,一次最大 256K 。

6.I2C 與 SPI 對比

功能

I2C

SPI

線數(shù)

2(SDA,SCL)

4(MOSI,MISO,SCLK,CS)

主機(jī)數(shù)量

>=1

==1

類型

半雙工

全雙工

回應(yīng)機(jī)制

yes

no

速度

<=3.4Mbps

high

應(yīng)用

重要數(shù)據(jù)

大量數(shù)據(jù)

流控

yes

no

設(shè)備地址

yes

no

常規(guī)用途

命令

數(shù)據(jù)

I2C 和 SPI 的速率如下:

I2C模式

速度

標(biāo)準(zhǔn)

100KHz

快速

400KHz

快速+

1MHz

高速

3.4MHz

SPI 速率:幾十 MHz 甚至上百 MHz,速度取決于 CPU 的 SPI 控制器和時鐘 clock

STM32F103 的 SPI 最高支持 18MHz,imx6ull 的 SPI 最高支持 52MHz,其他芯片一般用不到更高的,因?yàn)樗俣仍娇觳ㄐ钨|(zhì)量越不好,越容易出問題。

具體采用多大速率還和外設(shè)有關(guān),比如 EEPROM 的 W25Q128 的 SPI 最高支持 80MHz,ICM20608 傳感器的 SPI 最高支持8MHz。一般用在 flash 上的速度會較快。

7.擴(kuò)展

SPI 協(xié)議其實(shí)是包括:Standard SPI、Dual SPI 和 Queued SPI 三種協(xié)議接口。

Dual SPI 還是四線制,只是傳輸線可以變?yōu)橥较颍俣仁?Standard SPI 的兩倍。

Queued SPI 是六線制,多了兩根數(shù)據(jù)線,傳輸速度是 Standard SPI 的四倍。

責(zé)任編輯:武曉燕 來源: 嵌入式Linux系統(tǒng)開發(fā)
相關(guān)推薦

2022-05-15 22:34:32

SPI 控制器SPI 子系統(tǒng)

2024-10-29 08:34:55

SPI機(jī)制接口

2025-05-08 03:25:00

DubboSPI機(jī)制

2023-12-11 07:21:12

SPI機(jī)制插件

2025-08-05 01:55:00

JavaSPI機(jī)制

2011-11-30 14:35:19

JavaSPI

2025-03-04 09:02:25

JavaSPI機(jī)制

2022-11-02 21:45:54

SPIJava

2021-03-05 11:52:50

LinuxSPI驅(qū)動詳解

2010-06-09 11:05:28

SPI總線協(xié)議

2023-06-05 08:07:33

JavaJava SPI

2022-08-17 08:17:01

SPI機(jī)制接口

2020-12-14 11:35:22

SPI Java機(jī)制

2022-05-06 08:26:32

JavaSPI機(jī)制

2022-06-28 08:02:44

SPISpringJava

2022-05-05 13:54:37

SPI機(jī)制APISPI

2023-08-28 10:42:25

DubboSPIJava

2021-05-30 07:54:24

SPI機(jī)制場景

2023-04-28 08:42:08

Linux內(nèi)核SPI驅(qū)動

2021-09-10 08:31:19

DubboSPI框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號