i2c woes - RESOLVED

Having some i2c frustration. Trying to interface with SparkFun’s HIH-6130 humidity sensor. I’ve successfully connected to it directly with an Arduino, so I know the HIH-6130 board is working. I’ve tried two different Wixel’s with the attempts below, so it’s not a bad Wixel. I’m running the serial_i2c app unmodified, Wixel connected via USB, 9600 baud, interface_mode = 2 (USB).

With the Wixel connected via USB, I open CoolTerm. The first time I send the characters SNP, an oscilloscope shows that the Wixel correctly sends a start command, 0x4E, stop command. The 0x4E commands the HIH-6130, which has address 0x27, to take a measurement.

The next command, whatever it is, fails. If, for example, I try to send SNP again, the Wixel tries to send three bytes on the i2c bus: 0x53, 0x4E, 0x50, corresponding to ‘S’ ‘N’ ‘P’ (with no starts and stops!). The red LED comes on, indicating an error condition, but when I send E to the Wixel, corresponding to a request for errors, instead of returning the error condition, it tries to send 0x45 (‘E’) on the i2c bus. No matter what I do, it never recovers from the error state, and it never actually tells me the error.

Any ideas?

[quote]The first time I send the characters SNP, an oscilloscope shows that the Wixel correctly sends a start command, 0x4E, stop command. The 0x4E commands the HIH-6130, which has address 0x27, to take a measurement.[/quote]When/how do you send the device address? You should describe the entire sequence of events.

Thanks fo the reply. I discovered the problem, which is that the i2c library always expects the number of bytes to be written or read, so I need to send ‘S’, 0x4E, 0, ‘P’ to the Wixel so that it skips the data transfer. When I sent ‘S’, 0x4E, ‘P’, it was waiting for 50 data packets (the numerical equivalent of ‘P’).