天天看點

UART、I2C、SPI接口常見面試問題總結

UART

定義:Universal Asynchronous Receiver/Transmitter - 通用異步收發傳輸器。

特點:速率不快、可全雙工、結構上一般由波特率産生器、UART發送器、UART接收器組成,硬體2-3線。

UART、I2C、SPI接口常見面試問題總結

線:RXD,TXD,GND,半雙工的話就兩根(地線必須有)。

空閑位:

UART協定規定,當總線處于空閑狀态時信号線的狀态為高電平。

起始位:

開始進行資料傳輸時發送方要先發出一個低電平來表示傳輸字元的開始(與空閑位相反)。

資料位:

資料可以是5、6、7、8、9位,一般為8位,先發送最低位。

奇偶校驗位:

序列槽校驗分為幾種方式:

1.無校驗(no parity)。

2.奇校驗(odd parity):如果資料位中“1”的數目是偶數,則校驗位為“1”,反之為“0”。

3.偶校驗(even parity):如果資料位中“1”的數目是偶數,則校驗位為“0”,反之為“1”。

4.mark parity:校驗位始終為1。

5.space parity:校驗位始終為0。

停止位:

資料結束标志,可以是1、1.5、2位的高電平。

即可設定的有資料位、校驗位和停止位。

波特率:

資料傳輸速率使用波特率來表示,機關bps,如果序列槽波特率為9600bps,那麼傳輸一個比特需要的時間是1/9600≈104.2us。

I2C

定義:Inter-Integrated Circuit - 內建電路總線。

特點:雙向、雙線、串行、多主要接口标準、速率不快、半雙工、同步接口、具有總線仲裁機制。非常适用于器件之間近距離經常性資料通信,可實作裝置組網。

線:SCL、SDA。

起始信号:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送資料。 

結束信号:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送資料。

寫操作:

主機發送起始信号後發送I2C從機位址(7位)和寫操作0(1位),主機等待從機發送ACK,收到ACK後主機發送從機寄存器位址(8位),接着繼續等待ACK,等到ACK後主機發送要寫入寄存器的資料。主機發送data,從機發送ACK,重複多次可順序寫入多個寄存器直至主機産生結束信号。

讀操作(随機讀):

主機發送起始信号後,繼續發送從機位址和寫操作0,主機等待從機發送ACK,收到ACK後主機發送從機寄存器位址,接着繼續等待ACK,等到ACK後主機再次發起起始信号,然後發送從機位址和讀操作1,并等待ACK,從機發送ACK之後接着發送指定寄存器裡的資料,主機發送ACK表示收到,從機繼續發送資料即順序讀取下一個寄存器。當主機希望停止接收資料時就傳回一個非應答信号NACK,資料傳輸将結束。

總線仲裁機制:

SDA線的仲裁是建立在總線具有線“與”邏輯功能的原理上的。節點在發送1位資料後,比較總線上所呈現的資料與自己發送的是否一緻,是,繼續發送;否則,退出競争。SDA線的仲裁可以保證I2C總線系統在多個主節點同時企圖控制總線時通信正常進行并且資料不丢失(因為仲裁結束之前各節點發送資料一緻),總線系統通過仲裁隻允許一個主節點可以繼續占據總線。

最大從機數:

由I2C位址決定,7位位址,2^7=128,但是0x00不用,是以理論上可以挂127個從機。但是,雖然I2C協定沒有規定總線上裝置的最大數目,但是規定了總線的電容不能超過400pF。管腳都是有輸入電容的,PCB上也會有寄生電容,是以會有一個限制,實際設計中經驗值大概是不超過8個器件。

上拉電阻作用:

I2C的接口一般都是OD或者OC門,晶片内部無上拉電阻時,外部需要加上拉電阻才能輸出高電平。

SPI

定義:Serial Peripheral Interface - 串行外設接口。

特點:同步、串行、高速、可全雙工、可實作多個SPI裝置互聯、硬體2-4線。

線:MISO、MOSI、SCLK、CS。最少可以隻用2根,單向通信的時候可以隻使用一條資料線,隻有一個從機的時候可以取消片選線。

傳輸模式:

通過設定控制寄存器SPICR1中的CPOL和CPHA位,将SPI可以分成四種傳輸模式。

UART、I2C、SPI接口常見面試問題總結
UART、I2C、SPI接口常見面試問題總結

CPOL=0,表示當SCLK=0時處于空閑态,SCLK=1有效。

CPOL=1,表示當SCLK=1時處于空閑态,SCLK=0有效。

CPHA=0,表示資料采樣是在第一個跳變沿,資料發送在第二個跳變沿。

CPHA=1,表示資料采樣是在第二個跳變沿,資料發送在第一個跳變沿。

UART、I2C、SPI接口常見面試問題總結

繼續閱讀