- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm trying to use an SCB I2C on the 4200 BLE pioneer board and after doing I2C_Start() it doesn't appear as though the I2C bus becomes "non-busy". As a result, the first write never succeeds or completes. The check for bus state below always comes back as busy (I2C_I2C_MSTR_BUS_BUSY). I've hardwired a sensor onto the pioneer board at P3[0]:sda and P3[1]:scl pins and have those pulled up with external pullups. I never see those signals driven low on a scope. It's almost as though an internal status register is keeping the I2C component busy. Thoughts?
uint32 I2C_I2CMasterWriteBuf(uint32 slaveAddress, uint8 * wrData, uint32 cnt, uint32 mode)
{
uint32 errStatus;
errStatus = I2C_I2C_MSTR_NOT_READY;
if(NULL != wrData) /* Check buffer pointer */
{
/* Check FSM state and bus before generating Start/ReStart condition */
if(I2C_CHECK_I2C_FSM_IDLE)
{
I2C_DisableInt(); /* Lock from interruption */
/* Check bus state */
errStatus = I2C_CHECK_I2C_STATUS(I2C_I2C_STATUS_BUS_BUSY) ?
I2C_I2C_MSTR_BUS_BUSY : I2C_I2C_MSTR_NO_ERROR;
Solved! Go to Solution.
- Labels:
-
BLE
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It would be more informative when you post your code instead of the Creator generated code which has proven to be correct. Best is to use Creator->File->Create workspace bundle and then attach the resulting file. Helpful would be a link to your sensor's datasheet.
Bob