1
I2C-bus
• I2C(Inter-Integrated Circuit)是由飛利浦公司
  發表的一種雙向兩線式串列通訊匯流排,
  是用來控制IC與IC之間直接通訊的串列通訊
  介面。

• 這些周邊裝置可以是串列EEPROM、顯示器
  驅動器、A/D 轉換器等。


                                     2
I2C-bus
• 傳輸速度:
 – 標準模式 100 Kbit/s
 – 快速模式 400 Kbit/s
 – 高速模式 3.4 Mbit/s


• 限制:
 – 連接至I2C-bus的最大元件數,加總電容值應限
   制在400pF

                              3
I2C-bus
                              V+

                   Rp   Rp

SDA


SCL



        MCU                  EEPROM    溫度
      PIC18F4520             24LC32A   TC74




                                              4
V+

          Rp   Rp

 SDA


 SCL




DATA   CLOCK        DATA   CLOCK
OUT     OUT         OUT     OUT

DATA   CLOCK        DATA   CLOCK
 IN      IN          IN      IN



                                   5
I 2 C-bus 的傳送、讀取

 接收端        傳送端
讀取資料       改變資料




                   6
START & STOP condition
 START condition:當 SCL High期間,SDA 產生 High → Low
  STOP condition:當 SCL High期間,SDA 產生 Low → High


SDA


SCL




  START 和 STOP condition 都是由主控端(master)產生

                                             7
I 2 C-bus的一筆交易資料




• Every byte put on the SDA line must be 8-bits long.
• Each byte has to be followed by an acknowledge bit.
• Data is transferred with the most significant bit (MSB) first
                                                                  8
Acknowledgement

 接收端        傳送端
讀取資料       改變資料




                    9
接收端讀取8位元回應ACK

回應ACK

讀取8位元




                                        A

        1   2   3   4   5   6   7   8       9

                                                10
傳送端送出8位元讀取ACK

讀取ACK

送8位元




                                        A

        1   2   3   4   5   6   7   8       9

                                                11
I 2 C-bus完整的一筆資料交易
  控制碼   資料   資料




                     12
控制碼

1:主控端讀取資料
0:主控端傳送資料



指定通訊裝置的位址



            13
主控端-傳送資料




           14
主控端-傳送資料

               主控端


S 控制碼      A   資料    A   資料   A P

R/W = 0
               從屬端

                                    15
主控端-讀取資料




           16
主控端-讀取資料

              主控端
R/W = 1

S 控制碼     A   資料    A   資料   A P



              從屬端

                                   17
混和模式

S   控制碼   A 資料 A Sr   控制碼   A 資料 A P




                                  18
混和模式


S 控制碼    A    資料   A   資料   A P




Sr 控制碼
S        A   資料    A   資料   A P


                                  19
混和模式


S 控制碼    A    資料   A   資料   A P




Sr 控制碼
S        A   資料    A   資料   A P


                                  20
void I2CInit(void);
void Sbit(void);
void Pbit(void);
unsigned char I2CWrite(unsigned char Data);
unsigned char I2CRead ( unsigned char ack );
void I2Cpoll(unsigned char Dev);

                                               21
100 kHz and 400 kHz Clock Compatibility
Page Write Time 5 ms max.

32-Byte Page Write Buffer

                                                 Page Latches




                                          寫入保護




                                                        22
23
24
25
提昇電阻

       26
27
000
001
002
003

FFD
FFE
FFF




      指定記憶體位址

                28
29
30
31
32
24LC32A資料寫入操作
  Start                 位址          位址
              控制碼
condition             High byte   Low byte

              指定記憶體位址
            資料方向 PIC → 24LC32A



                                               Stop
               資料       資料         資料
                                             condition

                      傳送記憶體資料
                    資料方向 PIC → 24LC32A
                                                   33
24LC32A資料讀取操作
  Start                 位址          位址
              控制碼
condition             High byte   Low byte

              指定記憶體位址
            資料方向 PIC → 24LC32A



 Restart                                       Stop
              控制碼       資料         資料
condition                                    condition

                  記憶體資料讀取
                資料方向 PIC ← 24LC32A
                                                   34
24LC32A資料讀取操作
  Start              位址          位址         End
            控制碼
condition          High byte   Low byte   condition

               指定記憶體位址
             資料方向 PIC → 24LC32A



  Start                                     Stop
            控制碼      資料         資料
condition                                 condition

               記憶體資料讀取
             資料方向 PIC ← 24LC32A
                                                35
請完成24LC32A讀寫操作
    指定記憶體位址:0x03,連續寫入A,B,C三筆資料
              控制碼            位址           位址
      S       R/W = 0      High byte    Low byte
                                                      資料     資料   資料   P

      S                                                                P


       指定記憶體位址:0x03,連續讀取三筆資料
    控制碼          位址            位址                  控制碼
S   R/W = 0    High byte     Low byte     Sr       R/W = 1
                                                             資料   資料   資料        P

S                                         Sr                                     P

                                                                            36
37
J10




      38
指定位址0x03

 寫入資料

 錯誤處理




           39
指定位址0x03




   資料讀取




           40

艾鍗學院單晶片韌體-I2C EEPROM 操作