Part Number:TMS320F280049Other 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;
luys:
发送的问题已经解决了,通过设置SCIFORMAT.LENGTH,现在是接收的问题,我该查哪个寄存器判断数据接收了几个byte呢
,
Green Deng:
LinaRegs.SCIFORMAT.bit.LENGTH应该是用来Set transmission length的。
不知道你有没有参考过TI提供的官方例程?
C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f28004x\examples\lin
,
luys:
TI的例程里没有看到接收不够8个byte的情况