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.

[参考译文] CC3220SF:将 I2C 比特率设置为50kHz

Guru**** 2538955 points
Other Parts Discussed in Thread: SYSCONFIG, CC3220SF, CC3200

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1044921/cc3220sf-setting-i2c-bitrate-to-50khz

器件型号:CC3220SF
Thread 中讨论的其他部件:SysConfigCC3200

我有一个 I2C 器件、当位速率设置为100kHz 时容易出错。  我正在使用用于示例程序的 I2C 接口、设置低于100kHz 的速度没有任何枚举。  我是否可以使用其他接口或流程来达到50kHz?  

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

    尊敬的 David:

    CC3220仅支持两个 I2C 位速率:100Kbps 和400Kbps、如 数据表和 TI 驱动程序 API 指南中所述。

    此致、

    Sarah

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

    尊敬的 David:

    CC32xx I2C 外设支持宽范围的波特率(如果我没有错、功能范围为~20kHz 至~2MHz)。 但不支持通过 TI 驱动程序或 driverlib 来设置此速度。 但您可以直接通过寄存器设置波特率-请参阅 TRM。

    1月

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

    CC3220 SDK 没有关于如何使用这些寄存器的任何示例。  您知道我在哪里可以找到入口点吗?  如果我可以使用这些寄存器、您知道我是否可以将它们与 TI 驱动程序和 SysConfig 一起使用?  在使用这些接口时、是否有用于更改寄存器的协议?

    感谢你能抽出时间、

    David

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

    尊敬的 David:

    没有示例说明如何使用 TI 驱动程序和 SysConfig 为 I2C 设置自定义波特率。 因为在这个包装器层内没有直接支持。 如果为 SysConfig 最初配置的 I2C 外设设置自定义波特率、可能会导致一些副作用、尤其是在使用省电模式时。 实施将由您决定。

    有用资源:

    1月

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

    我找到了您在我的 CCS 项目中提到的文件。  但是、当我添加了一个断点进行调试时、代码显示不在任何已加载的符号中、因此似乎该文件未加载到我的项目中。  我使用搜索工具来查找 I2CMasterInitExpClk()函数、CCS 无法在任何位置找到它、即使我可以在项目浏览器的目录中看到它。 因此、TI 驱动程序似乎不使用该文件来设置时钟的寄存器。

    我看到您提到的文件具有用于修改寄存器的函数、但我不知道如何获取 i2c 寄存器的基址或地址信息、因为打开声明不会在任何地方引导。  是否有任何在该级别工作的示例?  我可以在 SDK 中找到的所有示例似乎都是针对高级而不是针对此低级内容。  我也不知道如何在调试器中查看寄存器、因此我将执行盲操作。   用于 ARM 器件的调试器看起来与 MSP430不同。  我们非常感谢您的任何建议。

    感谢你能抽出时间、

    David

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

    尊敬的 David:

    是的、预计位于\source\ti\devices\cc32xx\driverlib\的文件中的断点不能正常工作。 TI 驱动程序使用 I2CMasterInitExpClk()等内部 driverlib 函数。 有人使用 CC32xx ROM 中的 drivelib 函数。 有关更多详细信息、请参阅帮助文件\docs\cc32xx\cC32xx_rom_services.html

    在 TRM 中找到的每个外设的基地址。 例如、对于 I2C、它为0x40020000 (头文件 hw_memmap.h 上的 I2CA0_BASE)。 没有示例说明如何使用 CC32xx SDK 内 driverlib 驱动程序的直接寄存器访问。 这就是您从上述 Sarah 那里得到此类回答的原因(SDK 中没有示例、TI 方面也没有直接支持)。 如果您希望在调试期间查看 I2C 寄存器的内容、可以在寄存器的特定地址使用存储器视图。 如果您想查看包含 driverlib 的 I2C 示例、可以查看 CC3200 SDK (适用于上一代器件的 SDK - CC3200)中的 i2c 示例。 请注意、此 SDK 与 CC3220SF 不兼容。 I2C 外设在 CC3200和 CC3220SF 是相同的、您可以使用该代码作为灵感来源。

    我认为您有两个选择:

    • 使用 SysConfig 和 TI 驱动程序。 初始化之后,尝试重新配置 I2C 外设的波特率,如函数 I2CMasterInitExpClk()。 可能还需要在退出节电模式后重新配置。 重要的是深入探究 TI 驱动器 I2C 外设初始化、以确保不会产生不必要的副作用。
    • 请勿将 SysConfig 和 TI-Drviers 用于 I2C。 直接使用 driverlib (如 CC3200 SDK 中的示例)、而不是函数 I2CMasterInitExpClk ()直接写入寄存器。 这样可能会减少问题。 在 e2e 论坛上、您可以找到一些其他代码示例、该论坛讨论 CC3200的 I2C。

    1月

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

    如果其他人有这个问题、我可以更改波特率。 但是、更改可能会使省电模块中的某些内容跳闸并进入无限循环。  尝试以这种方式工作似乎非常复杂、因此如果您想手动更改寄存器、请不要将其与 TI 驱动程序混合使用。  我的整个项目范围依赖于这些驱动程序的简单性、因此我必须查看其他器件。