Other Parts Discussed in Thread: TCA9555
主题中讨论的其他器件:TCA9555
您好!
我的 I2C 传输代码中有一个问题。
在我的参考运行代码中、用于 I2C 传输的函数如下:
I2C_Handle i2c;
I2C_Params i2cParams;
I2C_Transaction i2cTransaction;
/* Create I2C for usage */
I2C_Params_init(&i2cParams);
i2cParams.bitRate = I2C_400kHz;
i2c = I2C_open(stI2cConfig->vui8I2cBus, &i2cParams);
/*if (i2c == NULL) {
IOC_DRIVER_ERR("Error Initializing I2C\n");
}
else {
IOC_DEBUG_DRIVER("I2C Initialized!\n");
}*/
i2cTransaction.slaveAddress = stI2cConfig->vui8slaveAddress;
i2cTransaction.writeBuf = stI2cConfig->pui8txbuffer;
i2cTransaction.writeCount = stI2cConfig->vui8writeCount;
i2cTransaction.readBuf = stI2cConfig->pui8RxBuffer;
i2cTransaction.readCount = stI2cConfig->vui8readCount;
/* Print the Data send through the I2C */
if(I2C_transfer(i2c, &i2cTransaction)) {
}
else {
IOC_DRIVER_ERR("I2C Bus fault\n");
}
/* De-initialized I2C */
I2C_close(i2c);
/*IOC_DEBUG_DRIVER("I2C closed!\n");
IOC_DEBUG_DRIVER_FLUSH();*/
stI2cConfig->pui8RxBuffer = i2cTransaction.readBuf;
I2C_Handle、I2C_Params、I2C_Transaction 均在 I2C.h 文件(在 tirtos..\products\tidrivers..\packages\ti\drivers\i2c.h 中)中定义
但是、当我尝试从微控制器运行它到 TCA9555时、我得到的是 I2C 信号(SCK 和 SDA)、但没有输出。
相反、如果我使用以下函数进行 I2C 传输:
void i2cTivaLibTransfer(I2cStructType *pI2cData)
{
uint32_t ui32Index, ui32Count;
I2CMasterEnable(pI2cData->ui32I2cBus);
/*if true - 400Khz, False - 100Khz */
I2CMasterInitExpClk(pI2cData->ui32I2cBus, 120000000, true);
I2CMasterSlaveAddrSet(pI2cData->ui32I2cBus, pI2cData->i2cSlaveAddress,
false);
I2CMasterBurstLengthSet(pI2cData->ui32I2cBus, pI2cData->ui32TxCount);
I2CMasterControl(pI2cData->ui32I2cBus,
I2C_MASTER_CMD_FIFO_BURST_SEND_START);
for(ui32Index = 0; ui32Index < pI2cData->ui32TxCount; ui32Index++)
{
I2CFIFODataPut(pI2cData->ui32I2cBus,
*(pI2cData->pui8DataTx+ui32Index));
}
while(I2CMasterBusy(pI2cData->ui32I2cBus))
{
}
ui32Count = I2CMasterErr(pI2cData->ui32I2cBus);
if(ui32Count != I2C_MASTER_ERR_NONE)
{
}
}
我在 TCA9555上的输出正在正常实现。
但第一个代码在参考板中工作正常。
请注意、我将在调试模式下运行上述2个代码片段、第一个代码片段可能与 RTOS 有关、还是仅在自由运行/编程模式下工作?
此致、
Kiran





