星期四, 7月 07, 2005

RTC w I2C interface : X1205


Feature
  • Data/Time以Packed BCD方式工作。
  • 2 Alarm (w INT)
  • Pulse Interrupt
Device Addressing,以下是I2C command。

  • 先送第一個byte : 1101代表對CCR動作,接著的111是這個device的address(故定),最後一個bit代表這次command是要做read/Write。
  • 接著兩個byte是access的目標address。
  • 最後是一個byte的data
Clock Control Registers (CCR) : 所有用來控制/表示RTC內部狀態的registers
起始Address : 0x3F
寫入動作
  • 寫入0x02到status register,set WEL bit (Write Enable Latch),預防在寫入時資料被update。
  • 寫入0x06到status register,set WEL和RWEL (register write enable latch)。
  • 寫入1到8 bytes的資料到register中,設定clock, alarm, control data。這個動作需要10ms來完成。寫完後,RWEL bit會被reset。
  • 寫入0x00到status register,reset WEL和RWEL。
  • 在以上任step間進行read動作不會有影響。
Dummy Write
因為只有write command時有指定register address的動作,所以利用write command還設定target register address但是不寫入資料
  • 送出I2C Start
  • 送出device id, R/W bit =1
  • 送出target register address ( 2 byte)
  • 不送data,改送另一個I2C Start或是I2C Stop
Random讀取動作,可以任意讀取任意的位址
  • 先對要讀取的register作一次dummy write動作,送出要讀的address,但是在送出data之前就stop。
  • 接著作讀取動作(R/W bit=1)。就可以對該位址進行讀取
Sequencial讀取動作

  • Sequencial可以由Random Read開始或是由目前address所指位置開始。一個一個address的讀。
  • I2C在每一個byte後都會有一個ack clk,在read command時,ack command由master控制,Master在讀完一個byte後,如果還要讀下一個byte,就在ack 送Low,如果不要下一個byte資料,就在ack 送high
  • 資料收完後,送stop command。

沒有留言:

張貼留言