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.

TMS320F280049: LIN的SCI模式收发问题

Part Number: TMS320F280049
Other Parts Discussed in Thread: C2000WARE

最近在调LIN的收发,我把LIN配置为sci模式,115200波特率,使能multibuffer mode;

然后接收和发送函数放在一个100us的中断函数中。

关于接收,我在仿真的时候发现接收不全,

LinaRegs.LINRD0.bit.RD0~RD4还有LinaRegs.LINRD1.bit.RD4~RD7 填充顺序好像和想象中不一样。

我发一个byte,这个LINRD0的RD1和LINRD1的RD7同时变为这个值!

读取的函数大概如下:

if(LinaRegs.SCIFLR.bit.RXRDY==1)

  buff[i++]=LinaRegs.LINRD0.bit.RD0;

这里我不太确定LinaRegs.SCIFORMAT.bit.LENGTH 是不是此时接收的字节长,

因为我引入这个值,再去读LinaRegs.LINRD0.bit.RD1,也不对。

还有在发送的时候,1s执行一次以下

if (LinaRegs.SCIFLR.bit.TXRDY == 1)
{
LinaRegs.LINTD0.bit.TD0 = 0x01;
LinaRegs.LINTD0.bit.TD1 = 0x02;
LinaRegs.LINTD0.bit.TD2 = 0x03;
LinaRegs.LINTD0.bit.TD3 = 0x04;
LinaRegs.LINTD1.bit.TD4 = 0x05;
LinaRegs.LINTD1.bit.TD5 = 0x06;
LinaRegs.LINTD1.bit.TD6 = 0x07;
LinaRegs.LINTD1.bit.TD7 = 0x08;

}

这样写是不是有问题,实际只发送了0x01和0x02;