Difference between revisions of "I2C Registers"
Jump to navigation
Jump to search
Line 112: | Line 112: | ||
! Device bus id | ! Device bus id | ||
! Device address | ! Device address | ||
+ | ! Accessible via I2C [[I2C_Services|service]] | ||
! Device description | ! Device description | ||
|- | |- | ||
Line 117: | Line 118: | ||
| 1 | | 1 | ||
| 0x4a | | 0x4a | ||
+ | | "i2c::MCU" | ||
| Power management?(same device addr as the DSi power-management) | | Power management?(same device addr as the DSi power-management) | ||
|- | |- | ||
Line 122: | Line 124: | ||
| 1 | | 1 | ||
| 0x7a | | 0x7a | ||
+ | | "i2c::CAM" | ||
| Camera0?(same dev-addr as DSi cam0) | | Camera0?(same dev-addr as DSi cam0) | ||
|- | |- | ||
Line 127: | Line 130: | ||
| 1 | | 1 | ||
| 0x78 | | 0x78 | ||
+ | | "i2c::CAM" | ||
| Camera1?(same dev-addr as DSi cam1) | | Camera1?(same dev-addr as DSi cam1) | ||
|- | |- | ||
Line 132: | Line 136: | ||
| 2 | | 2 | ||
| 0x4a | | 0x4a | ||
+ | | "i2c::MCU" | ||
| MCU | | MCU | ||
|- | |- | ||
Line 137: | Line 142: | ||
| 2 | | 2 | ||
| 0x78 | | 0x78 | ||
+ | | "i2c::CAM" | ||
| ? | | ? | ||
|- | |- | ||
Line 142: | Line 148: | ||
| 2 | | 2 | ||
| 0x2c | | 0x2c | ||
+ | | "i2c::LCD" | ||
| ? | | ? | ||
|- | |- | ||
Line 147: | Line 154: | ||
| 2 | | 2 | ||
| 0x2e | | 0x2e | ||
+ | | "i2c::LCD" | ||
| ? | | ? | ||
|- | |- | ||
Line 152: | Line 160: | ||
| 2 | | 2 | ||
| 0x40 | | 0x40 | ||
+ | | "i2c::DEB" | ||
| ? | | ? | ||
|- | |- | ||
Line 157: | Line 166: | ||
| 2 | | 2 | ||
| 0x44 | | 0x44 | ||
+ | | "i2c::DEB" | ||
| ? | | ? | ||
|- | |- | ||
Line 162: | Line 172: | ||
| 3 | | 3 | ||
| 0xa6 | | 0xa6 | ||
+ | | "i2c::HID" | ||
| Unknown. The device table in I2C-module had the device address changed from 0xA6 to 0xD6 with [[8.0.0-18]]. | | Unknown. The device table in I2C-module had the device address changed from 0xA6 to 0xD6 with [[8.0.0-18]]. | ||
|- | |- | ||
Line 167: | Line 178: | ||
| 3 | | 3 | ||
| 0xd0 | | 0xd0 | ||
+ | | "i2c::HID" | ||
| Gyroscope | | Gyroscope | ||
|- | |- | ||
Line 172: | Line 184: | ||
| 3 | | 3 | ||
| 0xd2 | | 0xd2 | ||
+ | | "i2c::HID" | ||
| ? | | ? | ||
|- | |- | ||
Line 177: | Line 190: | ||
| 3 | | 3 | ||
| 0xa4 | | 0xa4 | ||
+ | | "i2c::HID" | ||
| DebugPad | | DebugPad | ||
|- | |- | ||
Line 182: | Line 196: | ||
| 3 | | 3 | ||
| 0x9a | | 0x9a | ||
+ | | "i2c::IR" | ||
| IR | | IR | ||
|- | |- | ||
Line 187: | Line 202: | ||
| 3 | | 3 | ||
| 0xa0 | | 0xa0 | ||
+ | | "i2c::EEP" | ||
| eeprom? | | eeprom? | ||
|- | |- | ||
Line 192: | Line 208: | ||
| 2 | | 2 | ||
| 0xee | | 0xee | ||
+ | | "i2c::NFC" | ||
| New3DS NFC | | New3DS NFC | ||
|- | |- | ||
Line 197: | Line 214: | ||
| 1 | | 1 | ||
| 0x40 | | 0x40 | ||
− | | | + | | "i2c::QTM" |
+ | | QTM | ||
|- | |- | ||
| 17 | | 17 | ||
| 3 | | 3 | ||
| 0x54 | | 0x54 | ||
+ | | "i2c::IR" | ||
| Used by IR-module starting with [[8.0.0-18]], for New3DS HID via "ir:rst". This deviceid doesn't seem to be supported by i2c module on [[8.0.0-18]](actual support was later added in New3DS i2c module). | | Used by IR-module starting with [[8.0.0-18]], for New3DS HID via "ir:rst". This deviceid doesn't seem to be supported by i2c module on [[8.0.0-18]](actual support was later added in New3DS i2c module). | ||
|} | |} |
Revision as of 06:50, 14 April 2015
Registers
Old3DS | Name | Address | Width | Used by |
---|---|---|---|---|
Yes | I2C1_DATA | 0x10161000 | 1 | |
Yes | I2C1_CNT | 0x10161001 | 1 | |
Yes | I2C1_CNTEX | 0x10161002 | 2 | |
Yes | I2C1_SCL | 0x10161004 | 2 | |
Yes | I2C2_DATA | 0x10144000 | 1 | |
Yes | I2C2_CNT | 0x10144001 | 1 | |
Yes | I2C2_CNTEX | 0x10144002 | 2 | |
Yes | I2C2_SCL | 0x10144004 | 2 | |
Yes | I2C3_DATA | 0x10148000 | 1 | |
Yes | I2C3_CNT | 0x10148001 | 1 | |
Yes | I2C3_CNTEX | 0x10148002 | 2 | |
Yes | I2C3_SCL | 0x10148004 | 2 |
I2C_CNT
BIT | DESCRIPTION |
---|---|
0 | Stop (0=No, 1=Stop/last byte) |
1 | Start (0=No, 1=Start/first byte) |
2 | Pause (0=Transfer Data, 1=Pause after Error, used with/after Stop) |
4 | Ack Flag (0=Error, 1=Okay) (For DataRead: W, for DataWrite: R) |
5 | Data Direction (0=Write, 1=Read) |
6 | Interrupt Enable (0=Disable, 1=Enable) |
7 | Start/busy (0=Ready, 1=Start/busy) |
I2C Devices
Device id | Device bus id | Device address | Accessible via I2C service | Device description |
---|---|---|---|---|
0 | 1 | 0x4a | "i2c::MCU" | Power management?(same device addr as the DSi power-management) |
1 | 1 | 0x7a | "i2c::CAM" | Camera0?(same dev-addr as DSi cam0) |
2 | 1 | 0x78 | "i2c::CAM" | Camera1?(same dev-addr as DSi cam1) |
3 | 2 | 0x4a | "i2c::MCU" | MCU |
4 | 2 | 0x78 | "i2c::CAM" | ? |
5 | 2 | 0x2c | "i2c::LCD" | ? |
6 | 2 | 0x2e | "i2c::LCD" | ? |
7 | 2 | 0x40 | "i2c::DEB" | ? |
8 | 2 | 0x44 | "i2c::DEB" | ? |
9 | 3 | 0xa6 | "i2c::HID" | Unknown. The device table in I2C-module had the device address changed from 0xA6 to 0xD6 with 8.0.0-18. |
10 | 3 | 0xd0 | "i2c::HID" | Gyroscope |
11 | 3 | 0xd2 | "i2c::HID" | ? |
12 | 3 | 0xa4 | "i2c::HID" | DebugPad |
13 | 3 | 0x9a | "i2c::IR" | IR |
14 | 3 | 0xa0 | "i2c::EEP" | eeprom? |
15 | 2 | 0xee | "i2c::NFC" | New3DS NFC |
16 | 1 | 0x40 | "i2c::QTM" | QTM |
17 | 3 | 0x54 | "i2c::IR" | Used by IR-module starting with 8.0.0-18, for New3DS HID via "ir:rst". This deviceid doesn't seem to be supported by i2c module on 8.0.0-18(actual support was later added in New3DS i2c module). |
Device 3
REGISTER | WIDTH | DESCRIPTION |
---|---|---|
0x03 | 8 | ? |
0x04 | 8 | ? |
0x09 | 1 | Sound volume: 0x0..0x3F. |
0xB | 1 | Battery level: 0x0..0x40. |
0x18 | 8 | ? |
0x20 | 8 | Writing u8 value 4 here triggers a hardware system reboot. Writing u8 value 1 (repeatedly) 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 10
See the datasheet linked to on the Hardware page for reference.
Device 12
REGISTER | WIDTH | DESCRIPTION |
---|---|---|
0x0 | 21 | DebugPad state. |
This is the DebugPad device, see here.
Device 13
Raw I2C register address | Internal register address | Width | Description |
---|---|---|---|
0x0 | 0x0 | 0x40 | RHR / THR (data receive/send FIFO) |
0x8 | 0x1 | 0x1 | IER |
0x10 | 0x2 | 0x1 | FCR/IIR |
0x18 | 0x3 | 0x1 | LCR |
0x20 | 0x4 | 0x1 | MCR |
0x28 | 0x5 | 0x1 | LSR |
0x30 | 0x6 | 0x1 | MSR/TCR |
0x38 | 0x7 | 0x1 | SPR/TLR |
0x40 | 0x8 | 0x1 | TXLVL |
0x48 | 0x9 | 0x1 | RXLVL |
0x50 | 0xA | 0x1 | IODir |
0x58 | 0xB | 0x1 | IOState |
0x60 | 0xC | 0x1 | IoIntEna |
0x68 | 0xD | 0x1 | reserved |
0x70 | 0xE | 0x1 | IOControl |
0x78 | 0xF | 0x1 | EFCR |
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."