主题中讨论的其他器件: CC2340R5
工具/软件:
你(们)好 产品营销工程师。
将 CC2340R5-Q1作为 I2C 目标运行时、会出现问题。 您能否找出任何可能的原因?
我们使用 SDK 版本:8.40。
我基于外设软件将 I2C 目标函数添加到 Basic BLE 工程的角色中。
另一个 IC 用作主器件、可读取5个字节的数据。
CC2340R5-Q1能够向目标地址+ R 输出 ACK
但是、另一个 IC 不会输出数据第一个字节的 ACK。 另一个 IC 可能存在问题、但观察 SDA 的波形(请参阅下图中的红色帧)、似乎另一个 IC 尝试在低电平下使用 SDA、但它仍然处于高电平。

您能告诉我、如果问题源于 CC2340R5-Q1、可能是什么原因导致的? 我还将在下面附上代码。
void i2ctarget_trans(char* dunny)
{
I2CTarget_Params i2ctarget_params;
I2CTarget_init();
I2CTarget_Params_init(&i2ctarget_params);
i2ctarget_params.eventCallbackFxn = Callbackfxn_i2ctareget;
i2ctarget_params.targetAddress = 0x42;
i2ctarget_handle = I2CTarget_open(CONFIG_I2CTARGET_0, &i2ctarget_params);
read_counter = 0;
write_counter = 0;
I2CTarget_start(i2ctarget_handle);
}
int_fast16_t Callbackfxn_i2ctareget(I2CTarget_Handle handle, I2CTarget_Event event, uint8_t *val)
{
if(event == I2CTarget_Event_WRITE_RECEIVED) {
read_buffer[read_counter] = *val;
++read_counter;
return I2CTarget_STATUS_SUCCESS;
}
if(event == I2CTarget_Event_READ_REQUESTED || event == I2CTarget_Event_READ_PROCESSED) {
*val = write_buffer[write_counter];
++write_counter;
return I2CTarget_STATUS_SUCCESS;
}
if (event == I2CTarget_Event_STOP) {
BLEAppUtil_invokeFunctionNoData(i2ctaregt_fin);
}
return I2CTarget_STATUS_SUCCESS;
}
void i2ctaregt_fin(char* dunny)
{
I2CTarget_close(i2ctarget_handle);
}
此致。