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.

[参考译文] CC3230SF:使用 I2C 和 PWM 两个模块时出错

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/991156/cc3230sf-error-while-use-i2c-and-pwm-both-modules

器件型号:CC3230SF

您好!

在我的应用中、我正在使用 I2C 和 PWM 两个模块、但我观察 到、如果我同时使用 I2C、I2C 会失败(我将 I2C 用作 I2C_MODE_CALLACK 模式)、我没有在回调函数中接收到中断。 但是、如果我注释掉 PWM 模块、它的工作正常。

您能帮我解决这里出现的问题吗? 或者、如果我们同时使用这两种方法、我们在 cc32xx 中不同时使用这两种方法是否存在任何限制?正确的方法是什么?

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

    您好!

    在将 I2C 和 PWM 外设一起使用时不应有任何限制、除非您尝试同时在同一引脚上使用它们。

    您是否正在使用自己的定制板或正在使用 CC32xx Launchpad 进行开发?

    此致、

    Michael

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

    您好、Michael、

    引脚不同、 我使用自己的定制板。

    我将向您介绍这里发生的情况。

    1) 1)我使用的是 PWM 模块

    PWM_PARAMS_INIT ();

    PWM_OPEN ();

    PWM_START();

    PWM_setDuty();

    PWM_STOP();

    PWM_CLOSE ();

    2) 2)之后、我使用 I2C API、I2C 写入每次都失败、正如我之前提到的、我将 i2c 配置为  I2C_MODE_CALLACK 模式。

    但是、如果我按照以下步骤操作、那么它可以正常工作

    1)  

    PWM_PARAMS_INIT ();

    PWM_OPEN ();

    PWM_START();

    PWM_setDuty();

    PWM_STOP();

    PWM_CLOSE ();

    PWM_PARAMS_INIT ()

    PWM_OPEN ();

    2)之后、如果我使用 I2C、它对我来说很好、为什么发生这种情况会对我有所帮助

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

    您好!

    嗯、在 launchpad 上尝试相同的代码可能是值得的、以查看问题是否以某种方式与您的定制板及其 I2C 设置相关联。 您是否可以访问 CC32xx Launchpad 来试用该产品? 如果没有、那么我也许可以测试您的代码序列来查看 TI Launchpad EVM 上会发生什么情况。

    话虽如此、代码似乎在这两种情况下都可以正常工作-在第二个代码块中、唯一的额外步骤是在关闭 PWM 后重新打开它。

    您为什么需要关闭 PWM? 如果你只是在情况1中将其保持打开并且在运行 I2C 代码之前不调用 PWM_STOP()和 PWM_CLOSE ()、会发生什么情况?


    此致、

    Michael

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

    您好!

    完成工作后、我只需停止并关闭 PWM。。。。这么做是否是错误的步骤。。我们是否应该将其保持打开?

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

    您好!

    如果您不需要将 PWM 引脚用于其他用途、并且可以将其分配给 PWM 外设、那么您应该能够将其保持断开状态。 当然、如果您的程序主动不需要输出信号、则停止 PWM 会节省功耗、但否则您应该能够保持 PWM 外设处于打开状态并准备好使用、而不会出现任何问题。

    如果您保持 PWM 打开但停止、I2C 是否正常工作?


    此致、
    Michael

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

    您好!

    如果我只是盯着 PWM 而没有关闭它、那么我测试了 I2C 是否正常工作。

    但在本例中、我希望在 PWM 执行后关闭它、并在执行前重新打开它。 但是、正如我说过的、如果我这么做、那么 I2C 将无法工作。
    让我知道解决这个问题的方法是什么。

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

    您好!

    从代码架构的角度来看、为什么需要在执行后关闭 PWM、然后在稍后重新打开 PWM?

    假设 PWM 是分配给它的引脚的唯一功能、那么在启动时初始化 PWM、然后在代码执行过程中随时准备启动/停止、这是可以接受的、除非我对您的用例有误解。

    此致、

    Michael

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

    您好!

    如果不关闭 PWM、在 LPDS 模式下会导致额外的漏极?

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

    您好!

    调用 PWM_STOP 时、这不仅会停止 PWM 信号的生成、还会自动将引脚重新配置为 GPIO 输出。 因此、假设您在 PWM_OPEN 处正确设置了 idleLevel、它不应导致额外的漏极。 您是否在关闭 PWM 与停止 PWM 的情况下在功率测量工具上看到任何变化?

    此致、
    Michael

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

    您好、Michael、

    我观察到一件事情、当我在睡眠模式下停止 PWM 时、它不能正常工作、但在调试模式下(当不使用睡眠时)、它可以正常工作。 造成这种情况的原因是什么?

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

    您好!

    是否启用了 LPDS? 在这种情况下、当器件进入睡眠模式时、PWM 不会计时、因此不会输出。

    此致、

    Michael

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

    是的、我使用的是 LPDS

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

    您好!

    是的、在 LPDS 中、不会启用 PWM。

    当您使用调试模式时、LPDS 被禁用、以保持 JTAG 功能正常运行。 这就是您在调试模式下看到不同结果的原因。

    为了使 PWM 保持运行,您需要使用 Power_DisablePolicy()驱动程序调用来简单地禁用 LPDS。

    此致、

    Michael