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.

[参考译文] TMS320F280025:有关 driverlib 示例"i2cLib_FIFO_POLLINGL.c"的一些问题。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1179248/tms320f280025-some-question-about-driverlib-example-i2clib_fifo_polling-c

器件型号:TMS320F280025

该程序中"I2C_MasterReceiver"函数的第314行。 根据手册、如果启用 REPEACT_MODE、则 I2CCNT 无效、并且"在处于 FIFO 模式时、直到发送 FIFO 为空"、因此"I2C_getRxFIFOStatus"函数的返回值为16、"remainingBytes"的值小于16、 不可能相等、因此该函数将循环并延迟、直到计数溢出。 这是程序中的错误还是我理解错误?

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

    Han、

    i2cLib_FIFO_POLLING.c 的第301行用于检查 RX FIFO 是否已满(即 RX FIFO 已接收到16个字节(或)未接收)。

    i2cLib_FIFO_POLLING.c 的第314行用于检查接收到的字节数是否小于16。

    此致、

    曼诺伊

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

    是的、我知道当数据量小于16时、这是接收函数、但当我调试时、可能是由于一个断点、即当我执行这句话时 FIFO 已满、"I2C_getRxFIFOStatus"的返回值不会逐渐增加。 在它等于"remainingBytes"之前、它直接等于16、因此该函数将进入 while 循环、那么它是否可以更改为">="而不是"="? 是否会有任何不良影响?

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

    示例项目是否不适合您? 如果是、则不起作用的是什么。

    您可以随意修改示例项目。 您应该能够替换为>=。