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;