|

【Maker電子學】I2C 界面解密 — PART 3

   
作者:Bird

上一篇文章【Maker電子學】I2C 界面解密 — PART 2,我們聊了 I2C(以下寫作 I2C 界面的底層時序以及它基本的定址方法,接下來我們繼續探討在這個底層的邏輯上要如何傳輸資料、控制不同的週邊晶片。

從點名開始

(圖片來源:Bird)

上次我們說過,I2C 的傳輸由 master device 在 bus 上造出 START 狀態開始,緊接著是要接收訊號裝置的 I2C 地址;由於接收訊號的裝置是 slave,因此這個裝置的地址又稱為 slave address。

Slave address 包含了 7 個 bit 的地址以及 1 個 bit 的 R/W bit,這個 R/W bit 代表接下來資料傳輸的方向,而對 master 來說,讀取是 1、寫入是 0。

緊接著 slave address 後,就是一個 byte 一個 byte 的資料。我們來看一下這些資料的基本格式。

基本格式

下面是 I2C master 對 slave 寫入一個 byte 資料的格式:

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Liang Bird

Author: Liang Bird

在外商圈電子業中闖蕩多年,經歷過 NXP、Sony、Crossmatch 等企業,從事無線通訊、影像系統、手機、液晶面板、半導體、生物辨識等不同領域產品開發。熱愛學習新事物,協助新創團隊解決技術問題。台大農機系、台科大電子所畢業,熱愛賞鳥、演奏管風琴、大提琴、法國號,亦是不折不扣的熱血 maker。

Share This Post On

7 Comments

  1. 陳 柏榮

    不好意思,有一處不理解。
    在”而讀取週期的狀況一樣很類似:”下面那張圖,讀取為什麼跟寫入一樣是用W=0? 讀取不是應該為1嗎,感謝釋疑

    Post a Reply
  2. 前篇說到master傳送資料/地址到slave時
    ack方向是slave寫入master
    ACK=1: slave表示「出錯了、沒有人在家、不要繼續」
    ACK=0: salve表示「好、OK、收到、請繼續」

    請問這段
    「至於可以連續寫入多少筆資料,則要看 slave 這邊晶片的設計,當寫入太多,超過 slave 可以允許的範圍,它就會用 ACK=0來喊停,告訴 master 不要再寫了。」
    ACK是不是應該是1?

    Post a Reply
    • Liang Bird

      嗯,以邏輯準位來說,ACK 是 0,NAK 是 1,您是正確的,謝謝指正。

      Post a Reply
  3. “如果 master 在讀完某筆資料後,送出 ACK=0 告訴 slave 它後面還要繼續讀,”
    請問這邊master要繼續讀的話應該是ACK=1嗎?

    另外很感謝您寫的各篇文章,幫助很多

    Post a Reply
    • 這個部分我也有點疑慮,我使用24C32的EEPROM,說明書上是寫
      master要繼續讀的話應該是ACK=0。

      另外想說很感謝原PO,這篇文章對我很有幫助。

      Post a Reply
      • Liang Bird

        多謝指正,是我筆誤,已修正。謝謝!
        很高興文章能對您有幫助。

        Post a Reply

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *