TMS320F28377S: 配置SCI、使用FIFO进行发送数据,但是TXD引脚上并没有数据和高低电平变化,一直为高电平是为什么?

Part Number: TMS320F28377S

下面是我用仿真器查看到的,SCITXBUF中的数据0x92正是我想发送的数据。但是使用逻辑分析仪对TXD引脚进行抓取,一直为高电平无变化。能否请大家帮忙看看是什么问题。

附SCIc的配置图:

  • 可以参考我的配置,下面是可以的

    SciaRegs.SCIFFTX.all=0xE040;
    SciaRegs.SCIFFRX.all=0x204F;
    SciaRegs.SCIFFCT.all=0x0;

    SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback

    SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
    // Disable RX ERR, SLEEP, TXWAKE
    SciaRegs.SCICTL2.all =0x0003;
    SciaRegs.SCICTL2.bit.TXINTENA =1;
    SciaRegs.SCICTL2.bit.RXBKINTENA =1;

    //  9600 baud
    SciaRegs.SCIHBAUD.all =0x0001; 
    SciaRegs.SCILBAUD.all =0x0087;

    SciaRegs.SCICTL1.all =0x0023; 

  • 谢谢,我刚刚发现了问题所在:TXSHF上的数据还未完全发送完成,我就把发送使能关闭了,导致发送的数据异常。

    但是如何判断TXSHF上的数据发送完成了呢?比如我发送的数据为0x8A,FIFO->TXSHF非常快,但是TXSHF会按照配置的波特率依次串行输出01010001,如何判断TXSHF已经将01010001全部发送完成了呢?

  • 有相应的标志位,看看数据手册和官方例程

  • 我在手册中找到了TXEMPTY,可以代表FIFO和TXSHF为空,但是对于我来说,这个太慢了,需要我下一个周期才能查询到TXEMPTY = 1。但是实际上在下一个周期之前就已经把数据都发送完了。我好像没有在手册上看到TXSHF为空时的中断标志位?您有找到吗?