5 Replies Latest reply on Dec 10, 2015 3:04 PM by user_1377889

    I2C on PSOC 4 BLE pioneer board

    ray.parker_1412866


      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;