Difference between revisions of "IOP16 I2C"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) (→Timing) |
Blwikiadmin (talk | contribs) (→Timing) |
||
Line 27: | Line 27: | ||
== Timing == | == Timing == | ||
+ | |||
+ | * 400 KHz bit timing | ||
[[file:FRONT_PANEL_READ_WRITE_WORKING_400 KHz-timing.PNG]] | [[file:FRONT_PANEL_READ_WRITE_WORKING_400 KHz-timing.PNG]] |
Latest revision as of 19:04, 10 April 2022
Contents
I2C Interface
- The I2C core provides register addresses that the CPU can read or written to
- Address 0 -> DATA (write/read) or SLAVE ADDRESS (write)
- Address 1 -> Command/Status Register (write/read)
Data Buffer (write/read)
- bit 7-0 = Stores I2C read/write data, or
- bit 7-1 = Holds the first seven address bits of the I2C slave device
- bit 0 = I2C 1:read/0:write bit
Command Register (write)
- bit 7-2 = Reserved
- bit 1-0
- 00: IDLE
- 01: START
- 10: nSTART
- 11: STOP
Status Register (read)
- bit 7-2 = Reserved
- bit 1 = ERROR (I2C transaction error)
- bit 0 = BUSY (I2C bus busy)
Timing
- 400 KHz bit timing
Example (R32V2020)
; Write 0x22 to IOCON register (not sequential operations) START lix r8,0x01 bsr write_I2C_Ctrl_Reg ; I2C Slave address lix r8,0x40 bsr write_I2C_Data_Address_Reg IDLE lix r8,0x00 bsr write_I2C_Ctrl_Reg ; IO control register lix r8,0x05 bsr write_I2C_Data_Address_Reg ; STOP lix r8,0x03 bsr write_I2C_Ctrl_Reg ; Disable sequential operation lix r8,0x22 bsr write_I2C_Data_Address_Reg