This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2340R5-Q1:I2C 目标运行期间的问题

Guru**** 2324670 points
Other Parts Discussed in Thread: CC2340R5-Q1, CC2340R5
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1500984/cc2340r5-q1-issues-during-i2c-target-operation

器件型号:CC2340R5-Q1
主题中讨论的其他器件: 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);
}

此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:  

    根据提供的图像、我相信 SDA 线会像波形的其余部分一样下降到低于"高"值。  

    例如、只要 SCL 变为低电平、值就会下降、然后再恢复到"低电平"值。 每次发生这种情况时、SDA 都会显示相同的行为。  

    我将与我们的硬件专家交谈、看看是否发现了任何其他问题。 代码看起来很好!  

    当我与硬件专家交谈时、我将提供答复、我应该能够在明天(04/14)或星期三(04/15)提供答复。  

    谢谢、

    Isaac

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Isaac。

    他的回答。

    "我不会介意的。"

    我期待着你继续提供帮助。

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:  

    我已经与我们的硬件专家回顾了波形、并确认了 SDA 线路上的下降是导致 SDA 和 SCL 线路上出现某种噪声或振铃的原因。 这两条线是直接相邻的、还是紧密缠绕在一起?  

    主器件将提供 SCL、您是否看到此器件 SCL 存在任何其他问题?  

    此外、波形的波形在哪里测量、波形的电压电平是多少?  

    您是否能够检查外设的 TX 缓冲区以查看确认是否已排队?  

    由于 SCL 由主器件提供、这很可能是主器件 IC 出现问题、因为 SCL 不会进行切换以寻求确认。 此外、由于外设正在发送数据、因此主器件随后将发送确认。 这似乎是主器件出了问题。  

    如果您同意、或者您有任何其他问题、请告诉我。  

    谢谢、

    Isaac

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Isaac。

    谢谢!

    我已经与我们的硬件专家审查了波形、并确认了 SDA 线路上的凹陷是导致 SDA 和 SCL 线路上出现某种噪声或振铃的原因。 这两条线是直接相邻的、还是紧密缠绕在一起?  [/报价]

    实际上、在现在查看后、图中的红色框显示为振铃。 我已确定、这不太可能与时钟不输出的问题有关。

    主站将提供 SCL、您是否看到此设备 SCL 有任何其他问题?  [/报价]

    主 IC 的 I2C 是我们第一次使用的函数、因此评估数据有限、但没有观察到问题。

    顺便说一句、当主器件 IC 与 CC2340R5结合时、主器件 IC 的写入操作没有问题。

    此外、根据测量波形的位置以及波形的电压电平是多少?  [/报价]

    布线长度约为10厘米、我们正在中点附近进行监控。

    SCL 和 SDA 的高电压电平为3.3V、等于电源电压。

    您是否能够检查外设的 TX 缓冲区以查看确认是否排队?  [/报价]

    我很抱歉、但我不明白这种观点。

    您能否告诉我这项验证的具体方法和时间?

    此外、此确认将提供哪些信息?

    我的理解是否正确、这可以确认是否指示 CC2340R5切换到 ACK 接收模式?

    此致。

    [/quote]
    [/quote][/quote]
    [/quote][/quote][/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:  

    忽略最后的建议。 查看 TRM 后、我了解目标器件向控制器发送字节的确认结构。  

    控制器将对目标发送器发送的每个字节(最后一个字节除外)进行确认。 在最后一个字节上、目标发送器将释放 SDA 线、并允许控制器生成停止或重复启动条件。  

    控制器可以控制从目标发送器发送的字节数。 控制器是否知道正在发送的字节数? 控制器似乎认为发送的第一个字节是最后一个字节、因此不进行确认。  

    您可以在部分中阅读有关此内容的信息  21.1.3.4确认  请参阅 CC2340R5技术参考手册的"I2C"一章。  

    如果这对我有帮助、请告诉我。  

    谢谢、

    Isaac  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Isaac。

    谢谢。

    控制器控制从目标发送器发送的字节数。 控制器是否知道正在发送的字节数? 控制器似乎认为发送的第一个字节是最后一个字节、因此不进行确认。  [/报价]

    控制器 IC 可以准确识别数据的数量、因为数据的数量可以使用所提供库的参数指定。 此外、ACK 的 SCL 不是输出这一事实是异常的、因此 NACK 可能与问题无关。

    在任何情况下、在此 Q&A 中、CC2340似乎没有问题、因此我们将继续调查与控制器 IC 相关的原因。

    我将结束这个问题。

    非常感谢。