工具/软件:
我正在使用 I2C LLD API 函数访问 EVM 板上的 I2C 端口。
以下的读取函数时会发生什么。 可以从器件获取良好的 I2C 数据。
然后尝试在读取代码之前使用写入函数来实施写入/读取操作、以验证数据是否已写入器件。
但它始终在读取器件时提供所有0结果、即使 I2C 句柄在写入和读取之间进行了初始化。
代码如下所示。
/*获取设备地址*/
deviceAddress = 0x74;
状态= I2C_LLD_PROBE (gI2cLldHandle0、deviceAddress);
IF (STATUS == I2C_STS_SUCCESS)
{
DebugP_log ("[I2C] Device found in device address 0x%02x \r\n"、deviceAddress);
}
/*初始化 I2C_ExtendedParams 对象*/
extendedParamsTx.deviceAddress = deviceAddress;
extendedParamsTx.buffer = txBuf;
extendedParamsTx.size = 1U;
extendedParamsTx.extensionSA = false;
txBuf[0U]= 0x20;
/*Write to I2C*/
状态= I2C_LLD_WRITE (gI2cLldHandle0、&extendedParamsTx、I2C_WAIT_FOREVER);
IF (STATUS == I2C_STS_SUCCESS)
{
DebugP_LOG ("[I2C] WRITE DONE\n");
}
gI2cLldHandle[0]->Clock_uSleep (delayMsec * 1000u);
/*初始化 I2C 句柄*/
I2C_LLD_INIT (gI2cLldHandle0);
extendedParamsRx.deviceAddress = deviceAddress;
extendedParamsrx.buffer = rxBuf;
extendedParamsRx.size = 0u;
extendedParamsRx.extensionSA = false;
/*从 I2C 读取多个寄存器的循环*/
对于(uint8_t i = 0;i < 8;i++)
{
rxBuf[0U]=(uint8_t)(0U);
extendedParamsRx.size = 1U;
状态= I2C_LLD_READ (gI2cLldHandle0、&extendedParamsRx、I2C_WAIT_FOREVER);
/*打印结果*/
IF (STATUS == I2C_STS_SUCCESS)
{
DebugP_log ("[I2C]样本%u:%u\r\n"、i、rxBuf[0]);
}
gI2cLldHandle[0]->clock_uSleep (delayMsec * 100u);
}
它看起来写入函数不成功。
我认为这是非常基本的操作。
您能否通过分析代码来了解写入和读取是否需要采取任何措施?
请分享一些指导。
谢谢。
谢谢&谨致问候
郝(王浩)