• <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>


  • 應答的目的,就是“接收方”告知“發送方”,我已正常收到剛剛發來的數據。

    等待應答ACK

    既然是應答,就有兩向性:IIC從機應答IIC主機;IIC主機應答IIC從機。

    上圖的應答ACK/NACK都是IIC主機主動輸出的,是用來告知從機“我主機已正常收到”。

    而IIC從機告知主機的應答ACK,這里要用等待ACK的概念,主機通過讀取SDA管腳電平來檢測ACK信號。

    以上是利用GPIO管腳模擬實現的時序,封裝成DigCore_Embed嵌入式軟件架構的BSP層接口,對上層提供IIC硬件接口,向下操作GPIO和時序的模擬。移植過程中可以根據目標平臺,在上述這些已經封裝好的接口內,做適當調整。

    比如采用官方Demo程序代替GPIO模擬方案,只需要修改這以上接口中的代碼即可,對于上層應用庫,不論是溫濕度傳感器SHT20,還是EEPROM存儲芯片AT24C1024B,甚至是BS81163-A的觸摸鍵盤芯片,這幾個使用了BSP層的IIC接口,這些代碼都無需改動。

    這就是嵌入式軟件的分層設計思想的優勢。

    以上函數內部所調用的接口,都是當前BSP層里IIC模塊源碼中的靜態函數:

    總結,IIC時序的模擬,主要思路是根據IIC時序特點,在對應的信號后面做對應的時延,以達到時序的展現!難點之處就是把IIC時序拆解成多個信號特征進行模擬時,如果對信號時序圖了解不深,在對比代碼時比較繞,需要靜下心仔細核對!

    以上代碼僅僅完成初步的編寫和整理,未在具體外設上驗證。此BPS層的IIC模塊最終源碼,敬請期待下回分享出來!


  • <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 调性视频