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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1500975/cc2340r5-q1-about-i2c-driver-for-controller-and-target

器件型号:CC2340R5-Q1
主题中讨论的其他器件:CC2340R5

工具/软件:

大家好、TI 团队。

请提供有关 I2C 控制器和目标器件操作的有关以下方面的信息:

Q1)总线通信是否需要 SCL 和 SDA 的电平运行、包括 ACK/NACK 检查以及在由硬件或软件控制的 I2C 通信中生成启动/停止条件?

问题2)它是否支持时钟延展功能?

Q3)当 BLE 任务存在时序冲突时会发生什么情况?

此致。

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

    您好:

    以下是 I2C 驱动程序的文档: I2C.h 文件参考 和 I2CLPF3.h 文件参考 更多特定于器件的限制。  I2CTarget.h 文件参考 包含有关目标 I2C 的信息。

    此外、有关详细信息、请参阅 TRM 第21章 内部集成电路(I2C)。  其中包含大量有关 I2C 外设的信息、尤其是在您选择不使用我们的 I2C 驱动程序时。

    Q1)是总线通信所需的 SCL 和 SDA 的电平操作、包括 ACK/NACK 检查以及在 I2C 通信中生成启动/停止条件(由硬件或软件控制)?

    驱动程序应针对处理此问题。 但是、请密切注意控制器和目标驱动器之间的差异。 我已经在上面链接了这两个。

    Unknown 说:
    q2)它是否支持时钟延展功能?

    是的。

    Unknown 说:
    q3)当 BLE 任务发生时序冲突时会发生什么情况?

    由开发人员来处理这种情况。 应该注意的是、BLE 任务应具有最高优先级。

    此致、

    Nima Behmanesh

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

    嗨、NMA。

    感谢您的及时答复。

    您能更具体地解释一下吗? 让我重新表述我的问题。

    Q1)我们假设使用驱动程序、因此请仅在使用驱动程序的情况下提供信息。

    使用驱动程序时、启动/停止等操作会在 API 中执行、因此了解用户可以在不中断任何操作的情况下使用该驱动程序是否正确?

    此外、由于操作是在 API 中执行的、因此了解 CC2340R5是否通过软件执行这些过程是正确的吗?

    Q2)谢谢。

    我认为您要处理的内容与 CC2340R5会收到的情况有关。 当 CC2340R5正在发送时、如果传输数据未就绪或正在执行其他高优先级进程、是否可以使用时钟延展功能?

    在这种情况下、用户是否需要执行任何操作?

    q3)请告诉我驱动程序内的操作。

    由于在 Q2中确认可以使用时钟延展功能、因此驱动器是否可以自主使用该功能在更高优先级的过程冲突时暂停 I2C 通信、然后在优先级过程完成后恢复 I2C 通信?

    我很抱歉您的冗长信息、但我感谢您的合作。

    此致。

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

    您好:

    我很抱歉、但我对您的提问有点困惑。

    使用驱动程序时、在 API 中执行启动/停止等操作、因此了解用户可以在不中断任何操作的情况下使用此类操作是正确的吗?

    是的、启动/停止等操作会在 API 中执行、但不能在不中断操作的情况下使用它来确定具体含义。 在我之前提供的文档(https://dev.ti.com/tirex/content/simplelink_lowpower_f3_sdk_8_40_00_61/docs/drivers/doxygen/html/_i2_c_8h.html)中、可以使用两种 I2C 模式:阻塞和回调。 对于分块、I2C_transfe 函数在完成之前不会返回。 在回调中、事务将排队。 我建议阅读本节以了解更多信息。

    此外、请参阅 SDK 中的 I2C 源代码。 所有驱动程序的源代码均在 SDK 中提供。 您可以参考 /source/ti/drivers/i2c

    我认为您要处理的内容与 CC2340R5会收到的情况有关。 当 CC2340R5正在发送时、如果传输数据未就绪或正在执行其他高优先级进程、是否可以使用时钟延展功能?

    在这种情况下、用户是否需要执行任何操作?

    [/报价]

    您指的是目标还是控制器? 控制器应该为您处理所有这些问题。 然而、开发人员需要实施目标。 TRM 中有一部分表明目标可以延长时钟:

    我已联系了一位同事、以获取有关此问题的更多信息。

    q3)请告诉我驱动程序内的操作。

    由于在 Q2中确认可以使用时钟延展功能、因此驱动器是否可以自主使用该功能在更高优先级的过程冲突时暂停 I2C 通信、然后在优先级过程完成后恢复 I2C 通信?

    [/报价]

    请参阅驱动程序源代码和驱动程序信息。

    此致、

    Nima Behmanesh

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

    嗨、NMA。

    感谢您的答复。

    Q1)

    关于 Q1、很抱歉混淆。

    简单地说,对于控制器,只需从 API 引用中执行 I2C_TRANSFER ()。

    对于目标,我想再次确认,仅通过执行 I2CTarget_start ()并在回调函数 targetCallbackFxn ()内操作数据,如示例所述, I2C 通信可以无问题地执行。

    我想确认、I2C 总线上必要的电压操作(例如 START、STOP 和 ACK)不需要用户操作寄存器等 此外、我想知道这些操作是由器件通过硬件还是软件执行。

    问题2)

    关于 Q2是相同的;我想确认是否可以在读取/写入操作期间使用时钟延展功能、无论它是控制器还是目标都是如此。

    此外、我想知道除了执行 API 之外是否需要任何特殊操作(例如用户设置寄存器)。

    问题3)

    我将关闭 Q3。

    我很抱歉一再提出这一问题、但我感谢你们的合作。

    此致。

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

    您好:

    [引述 userid="593613" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1500975/cc2340r5-q1-about-i2c-driver-for-controller-and-target/5774351 #5774351"]

    对于目标,我想再次确认,仅通过执行 I2CTarget_start ()并在回调函数 targetCallbackFxn ()内操作数据,如示例所述, I2C 通信可以无问题地执行。

    我想确认、I2C 总线上必要的电压操作(例如 START、STOP 和 ACK)不需要用户操作寄存器等 此外、我想知道这些操作是由器件通过硬件还是软件执行。

    [/报价]

    您应该将回调函数视为中断。 回调中不应进行主要处理。 我建议将数据存储在某个位置、并在回调中对事件排队、以便应用能够进行处理。

    就电压运行而言、您需要一个电平转换器。 例如、CC2340R5的电压为3.3V、因此如果目标器件的电压较低、则 需要使用电平转换器。 至于启动、停止、确认等、驾驶员会处理此问题。 您只需要设置通过外部电平转换器的电压电平。

    [引述 userid="593613" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1500975/cc2340r5-q1-about-i2c-driver-for-controller-and-target/5774351 #5774351"]

    问题2)

    关于 Q2是相同的;我想确认是否可以在读取/写入操作期间使用时钟延展功能、无论它是控制器还是目标都是如此。

    此外、我想知道除了执行 API 之外是否需要任何特殊操作(例如用户设置寄存器)。

    [/报价]

    与团队交谈后、目标配置确实支持时钟延展、  但控制器没有。  目标代码将为您处理时钟延展。

    很抱歉反复询问、但我感谢您的合作。

    完全不用担心! 感谢您的澄清和耐心!

    此致、

    Nima Behmanesh

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

    您好、Nima。

    我完全理解、谢谢。

    我再确认两点:

    Q4)对于控制器、没有时钟延展功能。

    换句话说、如果 CC2340R5的对应器件(目标)尝试通过将 SCL 拉至低电平来利用 SCL 进行时钟延展、CC2340R5是否会强制继续通信?

    Q5)如果在与作为控制器的 CC2340R5进行 I2C 通信期间出现更高优先级的任务、它是否只是暂停时钟输出并在恢复任务后重新启动时钟输出?

    此致。

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

    您好:

    [引述 userid="593613" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1500975/cc2340r5-q1-about-i2c-driver-for-controller-and-target/5776945 #5776945"]

    Q4)对于控制器、没有时钟延展功能。

    换句话说、如果 CC2340R5的对应器件(目标)尝试通过将 SCL 拉至低电平来利用 SCL 进行时钟延展、CC2340R5是否会强制继续通信?

    [/报价]

    我相信是这样。 我已要求一位同事获得有关这方面的更多信息。

    Q5)如果在与作为控制器的 CC2340R5的 I2C 通信期间出现更高优先级的任务、它是否只是暂停时钟输出并在恢复任务后重新启动时钟输出?

    读取驱动程序代码时、似乎在传输期间中断被禁用。 但是、应该分析驱动程序代码、因为实现是公开的。

    此致、

    Nima Behmanesh

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

    您好:

    为了跟踪时钟延展、如果目标和控制器都是 CC2340R5、则控制器将识别出正在进行时钟延展并相应地进行处理。 它会正确暂停通信。  

    此致、

    Nima Behmanesh