TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280049: LIN的SCI模式收发问题

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的情况

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280049: LIN的SCI模式收发问题
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1