工具与软件:
您好!
客户希望缩短器件启动时间。 他们在系统中使用了 I2C、发现 I2C_PROBE 中有30ms 的延迟。 客户如何减少?
以下代码似乎可以检查 I2C 状态是否正确、对吗? NACK 位将进行设置并清除、对吧? 还有其他方法可以更快地实现它吗?
/*尝试写入一个字节*/
I2CControllerDataPut (object->baseAddr、(uint8_t) 0u);
I2CSetDataCount (object->baseAddr、(uint32_t) 1U);
/*此处需要停止位*/
I2CControllerControl (object->baseAddr、I2C_CFG_MASK_stop、(
I2C_CFG_CMD_TX | I2C_CFG_CMD_START | I2C_CFG_CMD_STOP);
/* NACK 位设置的延迟足够*/
ClockP_usleep (I2C_DELAY_BIG);
如果(0U = I2CControllerIntStatusEx (object->baseAddr、I2C_INT_NO_ACK))
{
retVal = I2C_STS_SUCCESS;/*成功情况*/
}
设计
{
/*清除源*/
I2CControllerIntClearEx (object->baseAddr、I2C_all_ints);
/*完成 xfer */
I2CControllerStop (object->baseAddr);
(void) I2C_waitForBb (object->baseAddr、I2C_delay_MED);
retVal = I2C_STS_ERR;/*错误情况*/
}
谢谢!
Chris