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.

[参考译文] CCS/MSP430F5514:I2C 驱动程序库超时值

Guru**** 2616675 points

Other Parts Discussed in Thread: MSP430F5514

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/671546/ccs-msp430f5514-i2c-driver-lib-timeout-value

器件型号:MSP430F5514

工具/软件:Code Composer Studio

我正在使用 MSP430F5xx_6xx_DriverLib 版本2_91_03_00。

一些 USCI_B_I2C 例程具有超时值。 使用400kHz 总线速度7位寻址时、该值的良好设置是什么?

此外、例程似乎不会检查 NON_ACNACK 条件。 这是不是通过超时处理的?

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

    器件型号:MSP430F5514

    工具/软件:Code Composer Studio

    使用 MSP430F5xx_6xx_DriverLib 版本2_91_03_00

    USCI_B_I2C_masterReceiveMultiByteNext 函数不会等待 UCRXIFG、因为 USCI_B_I2C_ReceiveSingle 会等待 UCRXIFG、因此会返回无效数据。

    USCI_B_I2C_masterReceiveMultiByteFinish 和 USCI_B_I2C_masterReceiveMultiByteFinishWithTimeout 存在相同问题

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

    我已经合并了您的两个线程、因为它们在主题上是相似的。

    对于超时、这是一个时间值、应用程序可以在不执行任何其他操作的情况下检查操作。 超时是一种从轮询标志的无限循环中退出的方法。在本例中为 RXIFG。 在某些情况下,例如使用超时停止,超时设置为在发出停止条件后等待的最长时间。

    是的、正确的是、这些函数不处理 nack。

    大多数例程都会检查您是否正在使用中断,如果是,它不会检查关联的标志,因为它假定您在正确的中断情况下使用 API,例如 USCI_B_I2C_masterSendMultiByteStopWithTimeout ()。 具有超时功能的函数将使用超时值与轮询 IFG 一起进行最长等待时间,例如 USCI_B_I2C_masterReceiveMultiByteFinish()。 基本上、如果中断标志的 I2C 时序关闭、超时允许您跳出可能的无限循环。

    您指出的函数似乎属于上述类别之一,但 USCI_B_I2C_masterReceiveMultiByteNext()除外。 此函数仅读取 RX_buff。 假设由于主器件处于 RX 模式、因此您正在使用中断、并且应在 ISR 中的相应中断情况下使用该函数。 看起来大多数 RX API 的构建方式类似。

    如需更多 I2C 调试、请参阅以下应用手册: http://www.ti.com/slaa734
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我想的是不会影响传输的最小超时值。
    是的、我的应用程序不使用中断、因此我现在看到不轮询的例程将不起作用。
    如果在文档中指出这一点将会有所帮助。
    一般而言、该特定 API (I2C)的文档并不是很好。
    总的来说、驱动程序库非常好、并且有很好的文档记录、但是 I2C API 没有。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gerry、

    我同意您对 I2C 和其他通信的 DriverLib 函数的状态的看法。 就个人而言、我不使用 DriverLib 进行通信、因为我更喜欢控制寄存器级别。 我发现 DriverLib 对于外设的初始设置非常有用、例如 SVS/PMM 和其他复杂外设。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我可能稍后会编写自己的文件、但驱动程序库非常方便、可以快速处理问题