TMS320F280039C: LIN串口通讯模块接收数据与SCI串口通讯接收数据不一致

Part Number: TMS320F280039C


芯片为:TMS320F280039C;使用的外设为:LINA,GPIO为:GPIO58/GPIO59,LINA配置为SCI,波特率配置为115200;LIN配置为库函数配置,代码如下:

LIN_initMdule(LINA_BASE);

LIN_enterSoftwareReset(LINA_BASE);

LIN_enableSCIMode(LINA_BASE);

LIN_SetSCIStopBitS(LINA_BASE,LIN_COMM_SCI_IDLELINE);

LIN_disableSCIParity(LINA_BASE);

LIN_disableMultibufferMode(LINA_BASE);

LIN_SetDebugSuSpendMOde(LINA_BASE, LIN_DEBUG_COMPLETE);

LIN_setsCICharLength(LINA_BASE,8);

LIN_setSCIFrameLength(LINA_BASE,1);

LIN_setBaudRatePrescaler(LINA_BASE,64U,2U);

LIN_disableIntLoopback(LINA_BASE);

LIN_disableSCIInterrupt(LINA_BASE, LIN_SCI_INT_RX);

LIN_disableSCIInterrupt(LINA_BASE, LIN_SCI_INT_TX);

LIN_exitSoftwareReset(LINA_BASE);

LIN接收数据代码配置如下:

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

{

Data = LinaRegs.SCIRD.bit.RD;

}

问题如下:外部发送到DSP的LINA_RX数据为:0x01 0x10 0x07 0xD4 0x00 0x11 0x41 0x49,示波器接DSP接收的引脚,解析数据波形如下;

内部仿真查看通过LINA配置的SCI接收数据是错误的,仅前两个字节数据是正常的,具体错误数据如下:

1、0x01 0x10 0x10 0x00 0x44 0x50 0xD2 (数据错乱组1)

2、0x01 0x10 0x10 0x07 0x44 0x50 0xD2 (数据错乱组2)

3、0x01 0x10 0x10 0x00 0x11 0x50 0xD2 0xD2(数据错乱组3)

4、0x01 0x10 0x10 0x1D 0x44 0x50 0xD2 0xD2(数据错乱组4)

 

后续操作:

  1. 将示波器非隔离探头接入DSP接收信号,DSP的数据接收就正确了,没有数据错乱现象;
  2. 将LINA的RX配置成INPUTXBAR,再将INPUTXBR配置成OUTPUTXBAR再由GPIO输出,看到输入波形和输出波形数据是一致的,均为:0x01 0x10 0x07 0xD4 0x00 0x11 0x41 0x49;
  3. 将LINA改成SCIA,波特率为115200,DSP的数据接收也是正确的,均为:0x01 0x10 0x07 0xD4 0x00 0x11 0x41 0x49;

     

    现有疑问:

    1. LINA配置成SCI后通讯接收到数据为何会与DSP接收引脚的数据不一致?
    2. 为什么利用XBAR将输入信号再次输出后数据是一致的,是不是DSP内部LINA的接收模块时候有问题?

33953ac1-1836-4e86-881d-096969bd6096.png收数据90%左右是错误的,仅10%左右数据是正常的,具体错误数据如下: