Other Parts Discussed in Thread: CC2650
Hello
I am attempting to communicate with an MPU 9250 IMU breakouk from Sparkfun using Sensor Controller Studio (SCS) version 1.3.1.42689 and a CC2650 Wireless Launchpad. I have de-soldered the 10k pullups on the IMU breakout board because the Launchpad already has 3k3 pullups on SCL and SDA lines, and running the bus at 400kHz with a 100us SCL stretch timeout frequency. The device supports clock frequency up to 400kHz and supply voltages up to 3.6V.
When I attempt to issue a TX command to the device, the state.i2cstatus variable goes to 1, meaning no acknowledgement received. Here is my code:
if(state.i2cStatus == 0x0000){
i2cStart();
i2cTx(I2C_OP_WRITE | DEVICE_ADDRESS);
i2cTx(WHO_AM_I);
if(state.i2cStatus == 0x0000){
i2cRepeatedStart();
i2cTx(I2C_OP_READ | DEVICE_ADDRESS);
i2cRxAck(state.whoami);
i2cStop();
}
}else{
i2cStop();
}
I scoped the SCL (yellow) and SDA (blue) lines and this is the output for the first Tx condition (line 3).The address (0x68) is written for the first 7 bits, however the MPU 9250 does not pull the SDA line low for the bit 9 acknowledge.
Signals have 3.2V swing.
Heres what I've done to troubleshoot::
- ensured the MPU 9250 is receiving 3.3V and is grounded
- Verified the device address of 0x68 as per the position of SJ2 on the breakout board.
Can anyone give me insight as to why the ACK bit is not being driven by the receiver? Could it be the master not releasing the SDA line, and if so, how can I test for this?
