I2C Registers: Difference between revisions
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."