Talk:Wii/protocols/wiimote bus

From Wiire

Jump to: navigation, search

Are the clock and bus voltages also +3V?

yeah, afaik - I'll update that when I get the full protocol specs up. -Sgstair 20:16, 20 December 2006 (MST)

Proprietary plugs and sockets... Any news on hacks for these? I have a great idea for a new peripheral.

I haven't had the time yet to document the protocols further; but I don't know of any interoperable plugs/sockets yet either. More info is coming soon, I'm just tied up with other things at the moment. --Sgstair 13:39, 29 December 2006 (MST)

  • Hey guys, I'm new in here, looks like great work is being done here. I'm planning to use the Nunchuk internals for a robotics project, for which it would be very handy if the bus protocol were available. I'd be happy to contribute if I can, but since I dont have a Wii and/or WiiMote it looks like I wont be of much use. I'll be following progress about the bus reverse engineering closely, and hope you'll get something up soon!
  • If possible, I'll be working my way into it sometime in the coming weeks. Since there's only one data wire, are we dealing with an I2C compatible protocol here? Or is that still unknown? I'd be more than happy to dump any info I'll get from my very own Nunchuk in here once I got the communication up.

The protocol isn't I2C compatible, no - I will be posting some waveform images, and more detailed data when I get the sniffer up, which I still haven't done... Will be sometime soon though --Sgstair 14:10, 31 January 2007 (MST)

So, what's the latest progress? I'm thinking about building an AVR-based sniffer/speaker of the bus protocol, but I'd hate to reinvent/rediscover any work you've already done... --Zudini 19:43, 7 February 2007 (MST)

On WiiBrew you can find a link to kako.com , the site that stores some research by the same crazy japanese guy who modded his TV Wii Remote into a Famicom controller. He hooked up I²C devices to his Wii remote and Wii extension controllers to his I²C interface, both successfully. --Fat D 10:02, 8 February 2007 (MST)

@Zudini: The hardware side is done now, just need to finish writing PC side software to analyze the data - I'll likely have waveform images to post and a more complete description of the protocol this weekend. --Sgstair 18:59, 8 February 2007 (MST)

@Fat D: I can't tell if the fact that he was using an I2C capable uC is actually useful or important; any small uC can bit-mash any sort of serial protocol into existence, so while I2C is a possiblity, it's not clear that it's relevant, and certainly not clear that it's what's being used. Then again, I'll know soon enough, and I'll post my findings. --Sgstair 20:38, 8 February 2007 (MST)

He explains on his site that he uses a generic I²C IO-expander (PCA9539), which is not programmable. He also has wired the included IR sensor to both the expansion port and an I²C decoder, both successfully. On WiiBrew, he explicitly stated that the protocol is I²C. --Fat D 06:38, 9 February 2007 (MST)

Fat D: Ok, I'll confirm it one way or the other this weekend. --Sgstair 14:08, 9 February 2007 (MST)

Contents

Sort of I2C, but not really...

Okay, here's what I've found so far. Using this I2C sniffer on one computer's parallel port, and running a slightly modified version of nunchuktest.py on another computer's bluetooth dongle, I can get some data dumps. However, it's not "clean" -- there are a whole bunch of NAKs and INTERRUPTEDs. Also, the "address" field of the I2C transimission is all over the map -- I would expect one or maybe two addresses doing all the writing on the bus, but I've seen 13 or more addresses go by on a very simple dump script. So either (a) the simple sniffer I use isn't perfect ((i) the long cable is introducing noise, (ii) the setup is designed for 100khz bus speeds and may not handle 250khz well), or (b) the protocol isn't exactly I2C. But it might be something similar. --Zudini 16:26, 13 February 2007 (MST)

I'll note I still haven't put together the software for my sniffer yet, it's on my list, just has been delayed - I'll certainly post waveforms when it's done, though - that should help us all along! --Sgstair 00:46, 16 February 2007 (MST)

Okay, I just put it back on my oscilloscope, and I'm definitely seeing 400khz, not 250khz. I don't know if I just misread it before when I verified the claim of 250khz. But the "fast i2c" supported by the PCA9539 referenced on kako.com is also 400khz, so "the plot thickens" as it were.


It is i2c running in 400kHz mode (fast i2c). Here's a dump from my i2c protocol analyzer of the communication between Wiimote and a Classic Controller at startup, including the initialization of the crypto. The Classic Controller is at address 0x52, so ignore all the "buzz" with 0x58.

Here's a dump of the first 2.5 seconds after plug in.

STOP FF

NACK

FF

NACK

FF

NACK

FF

NACK

FF

NACK

FF

NACK

FF

NACK

FF

NACK

FF

NACK

FF

NACK

FF

NACK

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

F0

ACK

55

ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

FB

ACK
0
ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

FA

ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK
0
ACK
0
ACK

A4

ACK

20

ACK
1
ACK
1
NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

F0

ACK

AA

ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

40

ACK

34

ACK

5E

ACK

7D

ACK

3C

ACK

9D

ACK
E
ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

46

ACK

EB

ACK

5D

ACK

CA

ACK

51

ACK

85

ACK

83

ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

4C

ACK

6B

ACK

17

ACK

11

ACK

65

ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

20

ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

58

ACK

F5

ACK

32

ACK

CC

ACK

BF

ACK

2B

ACK
2
ACK

4B

NACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

C5

ACK

BC

ACK

A5

ACK

A8

ACK

B9

ACK

CB

ACK

BE

ACK

9F

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK

30

ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

58

ACK

F5

ACK

32

ACK

CC

ACK

BF

ACK

2B

ACK
2
ACK

4B

NACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

C5

ACK

BC

ACK

A5

ACK

A8

ACK

B9

ACK

CB

ACK

BE

ACK

9F

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

30

ACK
1
ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK
0
ACK
2
ACK
0
ACK
0
ACK

71

ACK
1
ACK
0
ACK

AA

ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK
7
ACK
0
ACK

64

ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

1A

ACK

63

ACK
3
ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

33

ACK
1
ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

30

ACK
8
ACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

NACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

NACK

STOP

START A4 Control Byte: Slave Address 52 Write

ACK
0
ACK

STOP

START A5 Control Byte: Slave Address 52 Read

ACK

A4

ACK

B2

ACK

39

ACK
A
ACK

D0

ACK

A6

NACK

STOP

START B0 Control Byte: Slave Address 58 Write

ACK

37

ACK

STOP

START B1 Control Byte: Slave Address 58 Read

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

ACK

FF

Looks like 400kHz "Fast" I2C to me..

Finally got some waveforms last night. Seems to be I2C compatible, with a slave (presumably the nunchuk) address of 0x52.

Here's the dump. The clock line drives upper/lowercase, and the data line drives "i"/"o". The occasional blocks of "ooo" amidst "IIIIII" are probably a bug in my setup. I've run this through 'uniq' so some long blocks of identical lines were compressed to one. I'll post some oanalysis this evening. --Zudini 10:12, 20 February 2007 (MST)

Oh, and if I'm right that the slave address is 0x52, I don't understand how the circuit at kako.com could be correct. If I'm reading the datasheet correctly, the PCA9539 always has a slave address of the form 0b11101XY. --Zudini 14:32, 20 February 2007 (MST)

Some more details of my method, and a bit-by-bit analysis, are online at [1]. --Zudini 15:46, 21 February 2007 (MST)

IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIoooooooooIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIOOOOOOOOOOOOOOOOOOOOOiiiiiiiiiiiiiiiIIIIIiiiiiiiiooooooooooo
ooooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIooooooooooooooooOOOOOooooooooooooooooooo
ooooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIIooooooooooooooOOOOOOooooooooooooooooooo
oooOOOOOiiiiiiiiooooooooOOOOOoooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooOO
OOOoooooooooooooooooooooooOOOOOOooooooooooooooooooooooOOOOOooooooooooooooooOO
OOOoooooooooooooooooooooooOOOOOoooooooooooooooooooooooOOOOOooooooooooooooooOO
OOOoooooooooooooooooooooooOOOOOooooooooooooooooOOOOOooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooOOOOOOOOOOOOOOOOOOOOOIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIOOOOOOOOOOOOOOOOOOOOiiiiiiiiiiiiiiiIIIIIIiiiiiiiooooooooooooo
ooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIIoooooooooooooooOOOOOooooooooooooooooooooo
ooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIooooooooooooooooOOOOOooooooooiiiiiiiiiiiii
iiIIIIIiiiiiiiioooooooooooooooOOOOOooooooooiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIIII
IIiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIII
IiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIII
iiiiiiiiiiiiiiiiIIIIIIIIIIoooooooooooooooOOOOOOoooooooiiiiiiiiiiiiiiiIIIIIiii
iiiiiiiiiiiiiIIIIIIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiii
iiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiii
iiiiiiiiiiiiiiiiiiIIIIIIooooooooooooooOOOOOOoooooooiiiiiiiiiiiiiiiIIIIIiiiiii
iiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiii
iiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIIIIIIiiiiiiiiiiiiiiiIIIIIIiiiiiiii
iiiiiiiiiiiiiiIIIIIiiiiiiiiooooooooooooooooOOOOOiiiiiiiiiiiiiiiIIIIIiiiiiiiii
iiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiii
iiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiIIIIIIiiiiiiiii
iiiiiiiiiiiiiIIIIIiiiiiiiiooooooooooooooooOOOOOoooooooiiiiiiiiIIIIIIIIIIIiiii
iiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiii
iiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiii
iiiiiiiiiiIIIIIiiiiiiiioooooooooooooooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIiiiiii
iiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiii
iiiiiiiiiiIIIIIIIIIIiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiii
iiiiiiiiiiiiiiIIIIIIooooooooooooooOOOOOOoooooooiiiiiiiiiiiiiiiIIIIIiiiiiiiiii
iiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiii
iiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiii
iiiiiiiiiiiiiIIIIIIooooooooooooooOOOOOOOOOOOiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiii
iiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiii
iiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiioooooooooooooooOOOOOOOOOOOOOOOOOO
OOOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOOOOOOOOOOOOOOOOOOOOooooooooiiiii
iiiiiiiiiiIIIIIiiiiiiiioooooooooooooooOOOOOOiiiiiiiiiiiiiiiIIIIIiiiiiiioooooo
ooooooooooOOOOOoooooooooooooooooooooooOOOOOiiiiiiiiiiiiiiiiIIIIIiiiiiiiiooooo
ooooooooooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIiiiiiiiiooooooooOOOOOooooooooooooo
ooiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioooooooooooooooooooooooOOOOOoooooooo
iiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiii
iiiiiiiiiiiiiiiIIIIIiiiiiiiiooooooooOOOOOOOOOOooooooooooooooooOOOOOoooooooooo
oooooiiiiiiiiIIIIIoooooooooooooooOOOOOOOOOOOiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioooooooooooooooooooooooOOOOOoooooooiiiiii
iiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiii
iiIIIIIIIIIIiiiiiiiiooooooooOOOOOoooooooooooooooooooooooOOOOOooooooooiiiiiiiI
IIIIIIIIIIoooooooooooooooOOOOOooooooooiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioooooooooooooooooooooooOOOOOooooooooooo
ooooooooooooOOOOOoooooooooooooooiiiiiiiiIIIIIiiiiiiiiooooooooOOOOOooooooooooo
ooooiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiIIIIIIiiiiiiiiiii
iiiioooooooOOOOOoooooooooooooooooooooooOOOOOOoooooooiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioooooooooo
oooooooooooooOOOOOooooooooooooooooIIIIIIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiii
iiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiii
iiiooooooooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIIooooooooooooooOOOOOOoooooooiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiooooooooooooooooooooooooOOOOOoooooooiiiiiiiiiiiiiiii
IIIIIiiiiiiiioooooooOOOOOOooooooooooooooooooooooOOOOOooooooooooooooooiiiiiiiI
IIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiooooooooOOOOOoooooooooooooooiiiiiiiiI
IIIIooooooooooooooooOOOOOooooooooiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioooooo
oooooooooooooooooOOOOOooooooooiiiiiiiiIIIIIiiiiiiiiiiiiiiiooooooooOOOOOoooooo
oooooooooooooooooOOOOOooooooooooooooooOOOOOoooooooooooooooooooooooOOOOOoooooo
ooooooooooiiiiiiiIIIIIIiiiiiiiiiiiiiiIIIIIIiiiiiiioooooooooooooooOOOOOooooooo
oiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiii
iiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiIIIIIIIIIIIiiiiiii
iiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiioooooooooooooooOOOOOOoooooooo
oooooooOOOOOoooooooiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIIIIIIIIIIIi
iiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIi
iiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIii
iiiiiooooooooOOOOOoooooooooooooooiiiiiiiiIIIIIiiiiiiiiooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooOOOOOOOOOOOOOOOOOOOOOOOOOOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIooooooooIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIoooooooooIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIoooooooooIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIooooooooIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIoooooooooIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIooooooooIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIOOOOOOOOOOOOOOOOOOOOOoooooooiiiiiiiiiiiiiiiiIIIIIoooooooooooo
oooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIIiiiiiiioooooooooooooooOOOOOooooooooooooo
oooOOOOOooooooooiiiiiiiiiiiiiiiIIIIIiiiiiiiioooooooooooooooOOOOOOoooooooooooo
ooOOOOOOoooooooiiiiiiiioooooooOOOOOoooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ooooOOOOOOooooooooooooooooooooooOOOOOooooooooooooooooOOOOOooooooooooooooooooo
ooooOOOOOooooooooooooooooOOOOOoooooooooooooooooooooooOOOOOooooooooooooooooooo
ooooOOOOOooooooooooooooooOOOOOooooooooiiiiiiiooooooooOOOOOooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooOOOOOOOOOOOOOOOOOOOOOIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIOOOOOOOOOOOOOOOOOOOOOoooooooiiiiiiiiIIIIIiiiiiiiioooooooooooooooOOOO
OooooooooiiiiiiiiiiiiiiiIIIIIooooooooooooooooOOOOOoooooooooooooooooooooooOOOO
OooooooooiiiiiiiiiiiiiiiIIIIIIooooooooooooooOOOOOOoooooooiiiiiiiiiiiiiiiIIIII
iiiiiiiiiiiiiiiiooooooooOOOOOoooooooiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiII
IIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiii
iiiiiIIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiii
iiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiioooooooooooooooOOOOOooooooooiiiiiiiiii
iiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiii
iiiiiIIIIIIiiiiiiiiiiiiiiIIIIIIIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiii
iiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIooooooooooooooooOOOOOooooooooiiiiiiiiiiiii
iiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiii
iiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiii
iiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIooooooooooooooooOOOOOooooooooiiiiiiiiiiiii
iiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiii
iIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiii
iIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIooooooooooooooooOOOOOooooooooiiiiiiiiiiiiii
iIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiIIIIIIIIIIiiiiiiiiiiiiiiiiI
IIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiI
IIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiioooooooooooooooOOOOOooooooooiiiiiiiiI
IIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiI
IIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiI
IIIIIIIIIiiiiiiiiiiiiiiiIIIIIIiiiiiiioooooooooooooooOOOOOooooooooiiiiiiiiiiii
iiiIIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiii
iiiIIIIIiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiii
iiiIIIIIiiiiiiiiiiiiiiiiIIIIIIIIIIooooooooooooooooOOOOOooooooooiiiiiiiiiiiiii
iIIIIIiiiiiiiiiiiiiiiIIIIIIIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiiiiiiiiiiiiiiiiiII
IIIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiiiiiiiiIII
IIiiiiiiiiiiiiiiiiiiiiiiiIIIIIIiiiiiiiiiiiiiiiIIIIIiiiiiiiooooooooooooooooOOO
OOOOOOOOOOOOOOOOOOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIooooooooIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIooooooooIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIooooooooIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIoooooooIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIooooooooIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIoooooooooIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIooooooooIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIoooooooooIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

Multi-master?

So far I've been unsuccessful in putting my own slave at 0x52 on the bus. I'm starting to suspect it's actually mult-master, with the wiimote mastering at 0x50 and the nunchuk mastering at 0x52. Each packet is 8 bytes. There's an early handshake where the nunchuk sends 0,64,0,0,0,0,0,0, then later the wiimote writes 0 to request a packet of data which gets put right into the bluetooth report. --Zudini, 01:06, 25 February 2007 (MST)

  • Good job there.. If it runs at 400 kHz that would explain why the protocol isn't clearly identifiable if it's sampled at 250 kHz. I cant make sense of the above waveform though, as I'd expect each time instance to have both a dataline and a clockline value. It would be a big problem for me if it's multimaster, as my cheap homemade PC-interface wont allow for that kind of speeds. So I'd better wait a bit longer to see this issue settled so I wont spend lots of effort into certain failure.
    • I've posted a more detailed analysis of the waveform here: [2]. For compactness I just multiplexed the clock line and the data line into a single character string. As of this morning I've actually been able to (somewhat) communicate as a slave. I still don't know what the strange packet is that's addressed to 0x50. But I put my Arduino on as a slave at 0x52, and it can communicate, although only a single byte gets through each data packet (there should be 6, or maybe 8 or 16, bytes sent through). --Zudini 14:10, 25 February 2007 (MST)

Any more tests done yet? I hope it's not too annoying, but I thought I'd try and keep it a bit warm.. :)

  • Yep, it turns out it was a silly software mistake of mine that was holding me back. I can connect my Arduino to the peripheral port, power it from the wiimote, and send arbitrary data over the bluetooth to be received on the PC. I posted about it on the arduino forum here: [3] --Zudini 13:54, 7 March 2007 (MST)

Is the communication between wiimote and nunchuck just one way?

  • It should be possible to do two-way communication, but I've not tried. For example, the wiimote sends the nunchuck one 8-byte packet when it connects, but it's always the same packet. It might be possible, by sending an appropriately crafty command over the bluetooth connection, to trigger the wiimote to send data to the peripheral.

I am trying to connect my arduion to the wiimote. I used the code you posted on the arduino forum. It works, but the data returned to my PC is a little off. I am using http://libwiimote.sourceforge.net/ on the linux side. The data comes back, but is always off. Say I transmit 99 (0x63) it comes over as 139, 18 comes back as 28. Any ideas on what might be happening?

  • Oh yeah, I forgot to mention that most wiimote software automatically does a "decrypt" stage because the data that normally comes from the nunchuk is twiddled a bit. You can use "sudo hcidump -X" to make sure your bytes are coming through the bluetooth connection correctly. You can either edit the wiimote driver to skip the decrypt step, or you can encrypt your data on the arduino. I forget the actual operation but you should be able to find it on this wiki or wiili.org. It's something like "xor with 0x17, then add 0x17". --Zudini 11:36, 18 April 2007 (MDT)
  • Forgot about that. I think I will add the encrypt step on my arduino so I can use the PC software that is already made. I hope to have a page up on my site in a few days with a pictures/code on an arduino mimicing the nunchuk. Maybe having it controlling the left arm in Wii boxing. I'll be sure to give you credit for figuring out the I2c stuff. Thanks for posting all your info!
--Bear phillips 08:39, 19 April 2007 (MDT)
    • Hey, awesome. Do post here with your progress, as I'm eager to see if you can get it to work. I think you'll probably hit a few snags, but it should be possible to work around them. (For example, I'm guessing that the "encryption" on the i2c bus is actually more complicated in general, and it's only one simplified case that the PC drivers have solved. Also, the Wiimote may do something different to the nunchuk to cause it to enter "streaming" mode for continuous-control games like Wii Boxing.) --Zudini 10:19, 19 April 2007 (MDT)

I'm trying to read a nunchuck using an arduino as the master. Do you think this code should be able to pull data from the nunchuck?


thanks --Bear phillips 22:54, 1 May 2007 (MDT)

  • As I mentioned above, the wiimote sends an early "handshake" packet to the nunchuck. It also seems to write a single byte (0x00) before each read. I don't know what these bytes are for or whether they're necessary, but you might try mimicing them. --Zudini 09:57, 2 May 2007 (MDT)

No luck yet. I send in 0x00 then request 6 bytes. The nunchuck sends back 6 255s. If I send something other than 0x00 I get 0s back, so the 0x00 must mean something. Any ideas? --Bear phillips 19:09, 7 May 2007 (MDT)

#include <Wire.h>
int ledPin = 13;

uint8_t outbuf[] = { 0, 64, 0, 0, 0, 0, 0, 0 };
int storebuffer[19];
int cnt = 0;

void
receiveEvent (int howMany)
{
  Serial.println ("\n on recieve envet \n");
}

void
requestEvent ()
{
  Serial.println ("\n on request event \n");
}

void
setup ()
{
  pinMode (ledPin, OUTPUT);	// sets the digital pin as output
  beginSerial (19200);
  Serial.print ("setup\n");
  Wire.begin ();		// join i2c bus as master
  Wire.onReceive (receiveEvent);	// register event
  Wire.onRequest (requestEvent);	// register event
}

void
loop ()
{
  initnunchuck ();
  Wire.requestFrom (0x52, 6);	// request data from nunchuck
  while (Wire.available ())
    {
      int c = Wire.receive ();	// receive byte as a character   
      storebuffer[cnt] = c;
      cnt++;
      if (cnt > 8)
	{
	  print ();
	}
    }

  digitalWrite (ledPin, LOW);	// sets the LED on
  delay (100);
}

void
print ()
{
  int s = 0;
  digitalWrite (ledPin, HIGH);	// sets the LED on
  Serial.print ("start data dump");
  while (s < (cnt - 1))
    {
      Serial.print (storebuffer[s], DEC);
      s++;
    }
  Serial.println ("end data dump");
  cnt = 0;
}

void
initnunchuck ()
{
  Wire.beginTransmission (0x52);	// transmit to device 0x52 
  Wire.send ( 0x00 );	// sends one byte  
  //Wire.send (outbuf, 6);	// sends one byte  
  Wire.endTransmission ();	// stop transmitting 
}
    • Just a shot in the dark here: I think the wiimote sends that initial outbuf[] only once, on powerup, then sends the 0x00 before each read. Have you tried that way? --Zudini 19:49, 7 May 2007 (MDT)
    • No luck with the arduino sending 8 bytes 0,64,0,0,0,0,0 to the nunchuck. I plugged my arduino into the wiimote as a slave (per your example) and had it record all input it got from the wiimote, then spit it back out. Here is what I got:
wiimote send 64,10
wiimote send 0
arduino send 3 data payloads of 6 bytes each
wiimote send 0
arduino send 3 data payloads of 6 bytes each

The output may be a little off, because I think the arduino stops listening to TWI while it transmits serial data. But it looks like the wiimote sends an intial handshake of 64,10. Then sends a 0 before each data request. I haven't had any luck trying to mimic that yet. When I have the arduino send an intial handshake of 64,10, the nunchuck responds as:

arduino 64,10
nunchuck 0,10,0,0,0,0
ardunino 0
nunchuck 255,255,255,255,255,255
--Bear phillips 11:31, 8 May 2007 (MDT)
    • Hmm. now that I look back at my earlier writing, it seems that I was under the impression that the "0,64,0,0,0,0,0,0" packet was actually addressed to 0x50, not 0x52. That could be a glitch in the data collection, but if true it's just barely possible that the nunchuk actually has two endpoints on the bus (e.g. one for control, one for interrupt). You might try sending the packet to the 0x50 address, and/or having your ardunio listening on 0x50 to see if anything comes down from the wiimote. I'll try to dig up my i2c sniffing code and post it for you. --Zudini 12:16, 8 May 2007 (MDT)

I was able to transmit data from my PC to the wiimote to my arduino (plugged into the expansion port). On the wiimote, the data registers for the nunchuck are at:

  1. define NUNCHUK_MEM_START 0x04a40000
  2. define NUNCHUK_MEM_END 0x04a400ff

It looks like if you write data to that address, it gets send down to the arduino. So I think it is possible to use the wiimote for two way communication from PC to wiimotes expansion port.

--Bear phillips 14:01, 31 May 2007 (MDT)

I was finally able to read nunchuck data directly into my Arduino. You can see my code at: http://www.windmeadow.com/node/42 thanks for everyones help! Bear phillips 23:36, 4 June 2007 (MDT)


I think the right speed is 100Khz. As soon as I switched to this frequency, Bear phillips,s code was just running perfectly. See here: http://www.windmeadow.com/node/42#comment-1980. Note that it might work in 400Khz, as I could read a few bytes, but it then crashed. It mayb be the Arduino configuration. --Faquin 29 August 2007


Two Way Communication

Has anyone been able to read the IR data from the I2C bus directly? --Clange 01:34, 10 January 2008 (MST)

  • I'm not sure if anyone has, but I'll add it to my list of things to try in a few weeks once I get back to it. --Sgstair 12:11, 14 January 2008 (MST)
  • Agreed, this would be a very useful feature, and would probably circumvent the 4 blob tracking problem. Have you had a chance to have a look at it? -- Takai 9:32 21 May 2008 (EST)
  • Ahhh, I don't have an excuse, I've been meaning to do this for a while. It's my understanding that the blob tracking is done within the camera chip itself though... I will post when I get my logic analyzer software done and work out the protocol though, there may be a way to ask for the image data. --Sgstair 00:04, 21 May 2008 (MDT)

Wii Remote Extension Connector Patent

Hi all, I came across this patent for the Wii Remote extension connector and plug a while ago but I have not seen it mentioned anywhere else:-
http://www.google.com/patents?id=xdfIAAAAEBAJ&printsec=abstract&zoom=4#v=onepage&q=&f=false
Page 22 of the pdf (Sheet 20 in the patent) shows the full pinout of the extension connector and Pin 4 which is listed as 'Unknown' in the Wiki is shown to be 'V-BATT' (Although im not entirely sure what that means) There is lots more interesting info in the text/descriptions aswell. In case the above link ever goes dead, its patent number: 7594827 "Secure and/or lockable connecting arrangement for video game system" Hope this info helps someone Link83 07:23, 15 November 2009 (MST)

Personal tools