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/TMS320F28069:F28069 SCI 通信问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/587927/ccs-tms320f28069-f28069-sci-communication-problem

器件型号:TMS320F28069

工具/软件:Code Composer Studio

您好!

我正在对 F28069器件进行编程、以便通过串行通信接口将数据块(256字)传输到 PC。

看起来我必须在每两个字之间设置一个延迟、如下所示:

for (索引=0;索引<256;索引++)
{
SciaRegs.SCITXBUF = block_0[index];
DELAY_US (800);
} 

否则、始终会有一些数据丢失、 较短的延迟会导致更多数据丢失。 没有延迟、只传输5个字。

我想知道这是否正确。 因为启用了 FIFO、所以我认为这里不需要延迟。 此外、波特率设置在 PC 和器件之间匹配。 FIFO 配置如下、

void scia_init (void)
{
//fifo 初始化
SciaRegs.SCIFFTX.All=0xE040;//SCI 复位、SCI FIFO 使能、TXFIFO 内部 CLR
SciaRegs.SCIFFRX.All=0x2062;//RXFIFO int CLR、RXFIFO int 启用
SciaRegs.SCIFFCT.All=0x0;

//sci 初始化
SciaRegs.SCICCR.all =0x0007;// 1停止位,无回路
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
SciaRegs.SCICTL1.all =0x0003;//启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
SciaRegs.SCICTL2.all =0x0003;
SciaRegs.SCICTL2.bit.RXBKINTENA=1;
//波特率~=14400
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = 0x00C2;

SciaRegs.SCICTL1.all =0x0023; //从复位中撤回 SCI
}

有人能指出、如果我遇到任何问题吗?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    F2806x 只有一个4字节深的 FIFO。 您很可能会使 FIFO 溢出。

    在写入 TXBUF 之前、不要使用延迟、而是等待 TXFFST 小于4、然后将数据写入 TXBUF。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、谢谢。 因此、为了确认、如果我想尽快发送数据、我应该设置 TXFFIL4-0 = 3、即只要 FIFO 中有一个空间、就向 TXBUF 传输一个字节。 正确吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,这是正确的… 中断的示例。 TXFFIL 是 FIFO 中断级别。 如果 FIFO 中有三个或更少的元素、SCI 将生成一个 TX 中断、在该中断中、您可以通过将数据写入 TXBUF 来发送数据。

    SAL