Hello:
I am communicating with an I2C expander using the DSP/BIOS i2c driver. My code is derived from pspdrivers_1_10_03\packages\ti\sdo\pspdrivers\system\dm6437\bios\evmDM6437\i2c
GIO_AppCallback BlinkledCbk;
if (m_isAsyncMode) {
BlinkledCbk.fxn = (GIO_TappCallback)BlinkLedCalback;
BlinkledCbk.arg = NULL;
}
Uint8 start=0u;
buf.i2cTrans.buffer = &start;
buf.i2cTrans.bufLen = 1u;
buf.i2cTrans.flags = PSP_I2C_DEFAULT_WRITE | PSP_I2C_RESTART;
buf.i2cTrans.param = NULL;
buf.i2cTrans.slaveAddr = m_slaveAddress;
buf.timeout = SYS_FOREVER;
size = (size_t)buf.i2cTrans.bufLen;
if (!m_isAsyncMode)
retCode = GIO_submit(m_i2cHandle,IOM_WRITE,&buf,&size,NULL);
else
retCode = GIO_submit(m_i2cHandle,IOM_WRITE,&buf,&size,&BlinkledCbk);
The code / driver works for me when I execute it in blocking mode but does not work when I run it in non-blocking (async) mode.
The call to GIO_submit() returns 1 (PENDING?), whereas the blocking mode returns 0.
The callback function that I pass in is never called.
Any ideas what may be happening? Do I need to set up interrupts or something?
Thanks
--B