華大電子MCU-CIU32F011x3同步串行接口
12. 同步串行接口(ssp)
12.1. 模塊介紹
spi_iic 模塊可用作 spi 接口通信和 iic 接口通信,兩種功能同一時間只能選擇其中一種使用。該模塊集成兩種接口協(xié)議,節(jié)省資源的同時又能滿足不同的應(yīng)用需求。
12.2. 功能特點
12.2.1. spi 功能
• 支持主模式和從模式工作
• 可編程時鐘極性,采樣相位,支持 4 種模式
• 支持 1~32bit 傳輸
• 支持 5byte 發(fā)送/接收數(shù)據(jù)緩沖
• 傳輸數(shù)據(jù)順序 msb 和 lsb
• 支持標準模式,三線模式
• 可觸發(fā)中斷的專用發(fā)送和接收標志
12.2.2. iic 功能
• 支持主模式和從模式
• 主模式支持時鐘同步和總線仲裁
• 從模式支持在發(fā)送數(shù)據(jù)沒有準備好或者接收緩沖器滿時候拉低 scl
• 從模式支持 7bit 地址或者 10bit 地址
• 從模式支持接收廣播地址
• 支持 5byte 發(fā)送/接收數(shù)據(jù)緩沖
12.3. 功能說明
12.3.1. spi 工作模式
• 模式 0:時鐘空閑為 0,上升沿采樣,下降沿出數(shù)據(jù)
• 模式 1:時鐘空閑為 0,下降沿采樣,上升沿出數(shù)據(jù)
• 模式 2:時鐘空閑為 1,下降沿采樣,上升沿出數(shù)據(jù)
• 模式 3:時鐘空閑為 1,上升沿采樣,下降沿出數(shù)據(jù)
12.3.2. spi 接口模式
• 標準模式:通信線有 clk,cs,io0(mosi),io1(miso),一個 clk 傳輸 1bit 數(shù)據(jù)
• 三線模式:通信線有 clk,cs,io0,接收和發(fā)送都通過 io0, 一個 clk 傳輸 1bit 數(shù)據(jù)
12.3.3. spi 數(shù)據(jù)幀與內(nèi)部緩存
spi 可支持 1~32bit 幀數(shù)據(jù)傳輸,內(nèi)部集成了一個 40bit 的緩沖區(qū),根據(jù)配置的數(shù)據(jù)幀長度不同,緩沖區(qū)能緩存的幀數(shù)也不一樣。數(shù)據(jù)幀長度<=8bit 時,緩沖區(qū)可容納 5 幀數(shù)據(jù),8bit<數(shù)據(jù)幀長度16bit 時,緩沖區(qū)可容納 1 幀數(shù)據(jù),當緩沖區(qū)無法再容下一幀數(shù)據(jù)時,緩沖區(qū)滿標志會置 1。
12.3.4. iic 主機時鐘同步和總線仲裁
iic 主機模式時,在多主機的應(yīng)用場景下,支持時鐘同步和總線仲裁。當總線上連接了不止一個主機時,就會存在同時發(fā)起通信的情況,這時候需要時鐘同步以及總線仲裁機制決定由哪個主機占用總線完成數(shù)據(jù)傳輸。
時鐘同步的原理:iic 總線上的不同主機可能發(fā)起傳輸時的時鐘頻率不一樣,通過時鐘同步機制,可以讓所有主機的時鐘同步,才能進行逐位仲裁。所有主機的 scl 在總線上是線與的關(guān)系,當總線上的 scl 由高切換到低電平時,所有主機從 0 開始計算低電平周期時間。當電平時間達到時,如果總線上的其它主機的 scl 低電平仍然保持,那么其它主機進入高電平等待狀態(tài),等低電平時間最長的主機的 scl 拉高時再統(tǒng)一拉高。因此,總線上同步后的 scl 的低電平時間由低電平周期最長的主機決定,而高電平時間由高電平周期最短的主機決定。總線仲裁原理:iic 總線上不同主機的 sda 線也是線與的關(guān)系,各主機在 scl 線為高電平時,檢查sda 線的電平是否和自己發(fā)送的 sda 信號一致,如果檢測到 sda 線為低電平時,自己要發(fā)送的 sda 信號為高電平,那么該主機仲裁失敗,停止總線上的傳輸動作。
12.3.5. iic 從機拉低 scl
iic 從機在發(fā)送狀態(tài)下如果緩沖區(qū)中沒有可發(fā)送的數(shù)據(jù),或者在接收狀態(tài)下緩沖區(qū)已滿時,將會在 scl端口輸出低電平,拉低總線上的 scl 信號使主機暫停發(fā)送時鐘。當從機準備好發(fā)送或者接收后,將在 scl輸出高電平,主機又可以重新控制總線上的 scl 線,恢復(fù)數(shù)據(jù)傳輸。
12.3.6. iic 從機支持 7bit/10bit 尋址
iic 從機支持 7bit 或者 10bit 尋址模式,由寄存器 con0 的 iic_slave_addr_width 位決定。7bit 模式下,主機需要在 tx 模式下發(fā)送帶 start 位的 7bit 地址,最后 1bit 為 r/w 標志。當主機寫從機時,尋址完成即可進行數(shù)據(jù)發(fā)送。當主機讀從機時,尋址完成后,主機需要改成 rx 模式,然后配置準備接收的數(shù)據(jù)長度(寄存器 dma_len),然后對寄存器 cmd_data 寫任意值啟動接收。10bit 模式下,主機需要在 tx 模式下發(fā)送帶 start 位的第 1byte 地址(此時 r/w 位為 1),接著發(fā)送第 2byte 地址,此時如果收到從機的 ack 信號,則為尋址成功。接下來如果是主機寫從機,就可以直接進行數(shù)據(jù)發(fā)送。如果是主機讀從機,那么需要主機再次發(fā)送帶 start 為的第 1byte 地址(此時 r/w 為 1),然后切換成 rx 模式,配置寄存器 dma_len,并且對寄存器 cmd_data 寫任意值啟動讀數(shù)據(jù)。
主機讀從機時,從機被尋址成功且收到讀標志時,需要切換成 tx 模式,并且往緩沖區(qū)中寫入要發(fā)送的數(shù)據(jù)。
沈陽芯碩科技有限公司是華大電子專業(yè)代理商,有技術(shù)問題可咨詢芯虎論壇