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