Talk:Wii/protocols/wiimote bus
From Wiire
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:
- define NUNCHUK_MEM_START 0x04a40000
- 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)
