I2C Registers

From 3dbrew
Revision as of 05:36, 23 February 2014 by Yellows8 (talk | contribs)
Jump to navigation Jump to search

Registers

NAME PHYSICAL ADDRESS PROCESS ADDRESS WIDTH
REG_I2C1DATA 0x10161000 0x1EC61000 1
REG_I2C1CNT 0x10161001 0x1EC61001 1
REG_I2C1CNTEX 0x10161002 0x1EC61002 2
REG_I2C1SCL 0x10161004 0x1EC61004 2
REG_I2C2DATA 0x10144000 0x1EC44000 1
REG_I2C2CNT 0x10144001 0x1EC44001 1
REG_I2C2CNTEX 0x10144002 0x1EC44002 2
REG_I2C2SCL 0x10144004 0x1EC44004 2
REG_I2C3DATA 0x10148000 0x1EC48000 1
REG_I2C3CNT 0x10148001 0x1EC48001 1
REG_I2C3CNTEX 0x10148002 0x1EC48002 2
REG_I2C3SCL 0x10148004 0x1EC48004 2

I2C Devices

Device id Device bus id Device address Device description
0 1 0x4a Power management?(same device addr as the DSi power-management)
1 1 0x7a Camera0?(same dev-addr as DSi cam0)
2 1 0x78 Camera1?(same dev-addr as DSi cam1)
3 2 0x4a MCU
4 2 0x78 ?
5 2 0x2c ?
6 2 0x2e ?
7 2 0x40 ?
8 2 0x44 ?
9 3 0xa6 ?
10 3 0xd0 ?
11 3 0xd2 ?
12 3 0xa4 ?
13 3 0x9a IR
14 3 0xa0 eeprom?

Device 3

REGISTER WIDTH DESCRIPTION
0x03 8 ?
0x04 8 ?
0x18 8 ?
0x20 8 Writing u8 value 4 here triggers a hardware system reboot. Writing u8 value 8 triggers a shutdown via power-off?
0x22 8 ?
0x23 8 ?
0x24 8 ?
0x28 8 ?
0x29 8 ?
0x2A 8 ?
0x2B 8 ?
0x2C 8 ?
0x2D 0x64 This is used for controlling the notification LED(see MCURTC:SetInfoLEDPatternHeader as well), when this register is written.
0x2E 1 This returns the notification LED status when read.
0x30 8 ?
0x31 8 ?
0x32 8 ?
0x33 8 ?
0x34 8 ?
0x35 8 ?
0x36 8 ?
0x37 8 ?
0x38 8 ?
0x39 8 ?
0x3A 8 ?
0x3B 8 ?
0x3C 8 ?
0x41 8 ?
0x43 8 ?
0x4E 8 ?
0x50 8 ?
0x51 8 ?
0x58 8 ?
0x60 8 ?

Device 13

Raw I2C register address Internal register address Width Description
0x0 0x0 0x40 RHR / THR (data receive/send FIFO)
0x18 0x3 0x1 LCR

See the datasheet linked to on the Hardware page for reference. From that datasheet, for the structure of the I2C register address u8: "Bit 0 is not used, bits 2:1 select the channel, bits 6:3 select one of the UART internal registers. Bit 7 is not used with the I2C-bus interface, but it is used by the SPI interface to indicate a read or a write operation."

I2CCNT

REG_I2CxCNT
BIT DESCRIPTION
0 HOLD (0=Last byte of transaction, 1=More bytes coming)
2 Error flag/ack?
4 Read mode related?
5 Read mode?
6 IRQ enable?
7 Enable?