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.

[参考译文] TMS320F28069:可从 I2C 读取的字节计数

Guru**** 2539500 points
Other Parts Discussed in Thread: TMS320F28069

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1210177/tms320f28069-count-bytes-available-to-be-read-from-i2c

器件型号:TMS320F28069

过去、我使用 Arduino 微控制器通过 I2C 控制4DSystems 制作的触摸屏。

现在我想使用 TI 微控制器、特别是  TMS320F28069 ,通过 I2C 控制4DSystems 触摸屏。

在4DSystems 的 Github 帐户上、他们有用于控制触摸屏的通用 C 代码。 为了使用这个通用 C 代码、您自己必须实现以下函数:

uint16_t genieGetByteCount (空);
uint_least8_t genieGetByte (空);
uint_least8_t geniePeekByte (空);
空隙 geniePutByte (uint_least8_t);

似乎我们不能" PEEK '一个字节、因此我必须通过写入" 获取 "和" PEEK '功能如下:


bool has_peeked_byte = false;
uint_least8_t peeked_byte ='\0';

uint_least8_t genieGetByte (void)

  if ( has_peeked_byte )
   {
      has_peeked_byte = false;
      返回 peeked_byte;
   }

  //在此处输入代码以从 I2C 读取
}

uint_least8_t geniePeekByte (void)

   如果( has_peeked_byte )返回 peeked_byte;

   //如果控制权到达此处,则'has_peeked_byte"为 false,
   //调用 genieGetByte 时这很重要
   peeked_byte = genieGetByte ();

   has_peeked_byte = true;

   返回 peeked_byte;
}

但现在我想知道我将如何实施" GetByteCount '函数。 来查看的数据表  TMS320F28069 的时钟、 我看到它具有很少的 I2C 寄存器、其中一个是  I2CCNT 。 我看到过一些代码示例、其中该寄存器是在发送数据之前设置的(即、它用于指示要发送多少字节)。 但它还可以用于确定有多少字节可供读取?

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

    大家好、Thomas:

    您可以在 I2C 外设上使用 FIFO 模式来发送/接收多个字节并对其进行跟踪。 具体来说、  I2CFFTX 寄存器的 TXFFST 位和 I2CFFRx 寄存器的 RXFFST 位可用于监视 I2C FIFO 中发送/接收的字节数状态。 I2CCNT 寄存器不会在发送的字节数上反映任何状态。 引用器件手册、"对于传输的每个字节、内部数据计数器会递减1 (I2CCNT 保持不变)。"

    此致、

    Omer Amir