I2C Registers: Difference between revisions

No edit summary
MarcusD (talk | contribs)
Line 227: Line 227:


== Device 3 ==
== Device 3 ==
  ro = read-only (writing is no-op)
  rw = read-write
  wo = write-only (reading will yield 00, FF, or unpredictable data)
  s* = shared register (explaination below this table)
  *v = volatile (survives reboots)
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  REGISTER
!  REGISTER
Line 319: Line 324:
| 0x15
| 0x15
| s
| s
| rw
| rw v
| ? (volatile;survives reboot and power off)
| ?
|-
|-
| 0x16
| 0x16
| s
| s
| rw
| rw v
| ? (volatile;survives reboot and power off)
| ?
|-
|-
| 0x17
| 0x17
| s
| s
| rw
| rw v
| ? (volatile;survives reboot and power off)
| ?
|-
|-
| 0x18
| 0x18
Line 365: Line 370:
| 0x1C
| 0x1C
| s
| s
| rw
| rw v
| ? (volatile;survives reboot and power off)
| ?
|-
|-
| 0x1D
| 0x1D
| s
| s
| rw
| rw v
| ? (volatile;survives reboot and power off)
| ?
|-
|-
| 0x1E
| 0x1E
| s
| s
| rw
| rw v
| ? (volatile;survives reboot and power off)
| ?
|-
|-
| 0x1F
| 0x1F
| s
| s
| rw
| rw v
| ? (volatile;survives reboot and power off)
| ?
|-
|-
| 0x20
| 0x20
Line 407: Line 412:
   bit2: bottom screen backlight off
   bit2: bottom screen backlight off
   bit3: bottom screen backlight on
   bit3: bottom screen backlight on
   bit4: top screen backlight off (does nothing on 2DS as the backlight is bottom only)
   bit4: top screen backlight off
   bit5: top screen backlight on (see above)
   bit5: top screen backlight on
 
bits 4 and 5 have no effect on a 2DS because the backlight source is the bottom screen
|-
|-
| 0x23
| 0x23
Line 448: Line 455:
| s
| s
| rw
| rw
| WiFi LED state, non-0 value turns on the WiFi LED, capped at 0x0F
| WiFi LED state, non-0 value turns on the WiFi LED, 4 bits wide
|-
|-
| 0x2B
| 0x2B
Line 458: Line 465:
| s
| s
| rw
| rw
| 3D LED state, capped at 0x0F
| 3D LED state, 4 bits wide
|-
|-
| 0x2D
| 0x2D
Line 483: Line 490:
   byte 1: minutes
   byte 1: minutes
   byte 2: hours
   byte 2: hours
   byte 3: current day of the week (unused)
   byte 3: current week (unused)
   byte 4: days
   byte 4: days
   byte 5: months
   byte 5: months
   byte 6: years
   byte 6: years
   byte 7: leap year counter (unused)
   byte 7: leap year counter / "watch error correction" register (unused)
|-
|-
| 0x38
| 0x38
- 0x3C
- 0x3A
| s
| s
| rw
| rw
| RTC alarm registers
| RTC alarm registers
Register 0x3B could be used to upload [[MCU_Services#MCU_firmware_versions|MCU firmware]] if some conditions are met.
  byte 0: minutes
  byte 1: hours
  byte 2: week
|-
| 0x3B
- 0x3D
| s
| rw
| Register 0x3B could be used to upload [[MCU_Services#MCU_firmware_versions|MCU firmware]] if some conditions are met.
|-
|-
| 0x3D
| 0x3D
Line 505: Line 520:
| s
| s
| wo
| wo
| Peripheral power related? bit0 seems to depower everything, pressing the power key afterwards instantly turns the whole 3DS off
| Register-mapped MCU RESET?
|-
|-
| 0x40
| 0x40
Line 533: Line 548:
|-
|-
| 0x45
| 0x45
- 0x4A
| s
| s
| rw
| ro
| ?
| Gyroscope 3D rotation from the 12bit ADC, left shifted 4 to fit in a 16bit signed short
{| class="wikitable" border="1"
!  AXIS
!  V=0x00
!  V=0x40
!  V=0xC0
|-
|-
| 0x46
| Y (=roll)
| s
| held vertically
| ro
| vertical right side
| Gyro Y(?) axis rotation (0x00 = flat, 0x40 = 3DS standing on right side, 0xBE = 3DS standing on left side)
| vertical left side
|-
|-
| 0x48
| Z? (=yaw)
| s
| ???
| ro
| ???
| Gyro Z(?) axis rotation (0x00 = flat, 0x40 = 3DS standing horizontally, 0xBE = 3DS base is horizontally upside-down)
| ???
|-
|-
| 0x4A
| X? (=pitch)
| s
| held vertically
| ro
| ???
| Gyro X(?) axis rotation (0x00 = 3DS base facing upwards, 0x40 = face-down flat, 0xBE = standing(?) flat)
| ???
|}
|-
|-
| 0x4B
| 0x4B
Line 596: Line 618:
| s
| s
| rw
| rw
| DSP volume slider 0% volume offset (setting this to 0xFF will esentially mute the DSP as it's the volume slider's maximum raw value)
| Register-mapped ADC register
DSP volume slider 0% volume offset (setting this to 0xFF will esentially mute the DSP as it's the volume slider's maximum raw value)
|-
|-
| 0x59
| 0x59
| s
| s
| rw
| rw
| DSP volume slider 100% volume offset (setting both this and the above to 0 will disable the volume slider with 100% volume, setting this to a lower value than the above will make the volume slider have only 2 states; on and off)
| Register-mapped ADC register
DSP volume slider 100% volume offset (setting both this and the above to 0 will disable the volume slider with 100% volume, setting this to a lower value than the above will make the volume slider have only 2 states; on and off)
|-
|-
| 0x5A
| 0x5A