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.

28335向SCITXBUF写入数据的时候TXRDY为什么没有变低,empty位变高了

SCITXBUF is written to; thus, (1) the transmitter is no longer empty, and (2) TXRDY goes low.

初始化如下:

void InitScib(void)
{
ScibRegs.SCICCR.bit.STOPBITS=1; //1位停止位
ScibRegs.SCICCR.bit.PARITYENA=0; //禁止极性功能
ScibRegs.SCICCR.bit.LOOPBKENA=0; //禁止回送测试模式功能
ScibRegs.SCICCR.bit.ADDRIDLE_MODE=0; //空闲线模式
ScibRegs.SCICCR.bit.SCICHAR=7; //8位数据位

ScibRegs.SCICTL1.bit.TXENA=1; //Scib模块的发送使能
ScibRegs.SCICTL1.bit.RXENA=1; //Scib模块的接收使能

ScibRegs.SCIHBAUD=0;
ScibRegs.SCILBAUD=0xF3; //波特率为19200

ScibRegs.SCICTL1.bit.SWRESET=1; //重启SCI
}

  • 请参考TI官方SCI的初始化程序:

    void scib_fifo_init()
    {
       ScibRegs.SCICCR.all =0x0007;    // 1 stop bit,  No loopback
                                       // No parity,8 char bits,
                                       // async mode, idle-line protocol
       ScibRegs.SCICTL1.all =0x0003;   // enable TX, RX, internal SCICLK,
                                       // Disable RX ERR, SLEEP, TXWAKE
       ScibRegs.SCICTL2.bit.TXINTENA =1;
       ScibRegs.SCICTL2.bit.RXBKINTENA =1;
       ScibRegs.SCIHBAUD    =0x0000;
       ScibRegs.SCILBAUD    =SCI_PRD;
       ScibRegs.SCICCR.bit.LOOPBKENA =0; // Disnable loop back
       ScibRegs.SCIFFTX.all=0xC028;
       ScibRegs.SCIFFRX.all=0x0028;
       ScibRegs.SCIFFCT.all=0x00;

       ScibRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset
       ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;
       ScibRegs.SCIFFRX.bit.RXFIFORESET=1;

    }

  • Jun,

    1. 请问你具体是怎么测的?

    2. 全速运行,数据是否有发送出去?

    3. 是否有使用FIFO。

    Eric

  • ①只是在第一次将数据放入缓冲寄存器的时候,设置断点,之后但不运行,看相关寄存器的变化

    ②在将第一个数据放入数据缓冲寄存器的时候,发送就绪寄存为1,寄存器空标志位为1,单步运行之后,寄存器不再为空,但是发送器缓冲寄存器就绪标志位还是1,实际上之前放进去的数据已经开始发送了,最终通过查空解决的

    3,没有用FIFO,整个modbus 都用的查询方法,

    疑问:虽然问题解决了,但是此现象和手册所说有些不同,是不是因为移位寄存器本来就是空的,数据放入缓冲寄存器之后就直接放进移位寄存器了,此过程很短暂,看不到标志位的变化?

    谢谢,另外帮我看下28335 I2C的问题,另一个帖子