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.

TMS320F28035 LIN配置SCI问题

Hi,

我现在用28035的LIN口配置SCI模式,测试中发现数据格式设置时有点问题。

1、配置为N-8-1和N-8-2格式时(即LinaRegs.SCIGCR1.bit.PARITYENA = 0;)数据发送和接收都正常;

2、配置为O-8-1或E-8-1格式时(即LinaRegs.SCIGCR1.bit.PARITYENA = 1; LinaRegs.SCIGCR1.bit.PARITY= 0;或LinaRegs.SCIGCR1.bit.PARITY= 1;),用串口助手监控时发现下发数据返回值对应不上?

LIN配置 SCI测试.docx

  • 请您试一下

    void Init(void)
    {
    
    EALLOW; // This is needed to write to EALLOW protected registers
    
    LinaRegs.SCIGCR0.bit.RESET = 0; //Into reset
    LinaRegs.SCIGCR0.bit.RESET = 1; //Out of reset
    
    LinaRegs.SCIGCR1.bit.SWnRST = 0; //Into software reset
    
    //SCI Configurations
    LinaRegs.SCIGCR1.bit.COMMMODE = 0; //Idle-Line Mode
    LinaRegs.SCIGCR1.bit.TIMINGMODE = 1; //Asynchronous Timing
    LinaRegs.SCIGCR1.bit.PARITYENA = 1; //Parity Check
    LinaRegs.SCIGCR1.bit.PARITY = 1; //Even Parity
    LinaRegs.SCIGCR1.bit.STOP = 0; //One Stop Bit
    LinaRegs.SCIGCR1.bit.CLK_MASTER = 1; //Enable SCI Clock
    LinaRegs.SCIGCR1.bit.LINMODE = 0; //SCI Mode
    LinaRegs.SCIGCR1.bit.SLEEP = 0; //Ensure Out of Sleep
    LinaRegs.SCIGCR1.bit.MBUFMODE = 1; //Buffered Mode
    LinaRegs.SCIGCR1.bit.LOOPBACK = 1; //Internal Loopback
    LinaRegs.SCIGCR1.bit.CONT = 1; //Continue on Suspend
    LinaRegs.SCIGCR1.bit.RXENA = 1; //Enable RX
    LinaRegs.SCIGCR1.bit.TXENA = 1; //Enable TX
    
    //Ensure IODFT is disabled
    LinaRegs.IODFTCTRL.bit.IODFTENA = 0x0;
    
    //Set transmission length
    LinaRegs.SCIFORMAT.bit.CHAR = 7; //Eight bits
    LinaRegs.SCIFORMAT.bit.LENGTH = 7;
    
    //Set baudrate
    LinaRegs.BRSR.bit.SCI_LIN_PSL =194; //9600 bps for SYSCLKOUT = 60 MHz
    LinaRegs.BRSR.bit.M =5;
    
    LinaRegs.SCIGCR1.bit.SWnRST = 1; //bring out of software reset
    
    EDIS;
    
    
    while(LinaRegs.SCIFLR.bit.IDLE == 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;
    
    }

  • 你好,我的初始化程序如下配置,只是用的单收发,没有用BUFFER,只对 LinaRegs.SCIGCR1.bit.PARITYENA 和 LinaRegs.SCIGCR1.bit.PARITY 做更改,两个都配置为0时(N-8-1)通讯正常,配置了奇偶校验则回复数据有问题,在CCS中查看发送数据是正确的,只是实际串口助手收到的数据不正确。

    EALLOW;
    LinaRegs.SCIGCR0.bit.RESET = 0; // Into reset
    LinaRegs.SCIGCR0.bit.RESET = 1; // Out of reset
    LinaRegs.SCIGCR1.bit.SWnRST = 0; // Into software reset

    LinaRegs.SCIGCR1.bit.COMMMODE = 0; // Idle-Line Mode
    LinaRegs.SCIGCR1.bit.TIMINGMODE = 1; // Asynchronous Timing
    LinaRegs.SCIGCR1.bit.PARITYENA = 1; // No Parity Check
    LinaRegs.SCIGCR1.bit.PARITY = 1; // Odd Parity
    LinaRegs.SCIGCR1.bit.STOP = 0; // One Stop Bit
    LinaRegs.SCIGCR1.bit.CLK_MASTER = 1; // Enable SCI Clock
    LinaRegs.SCIGCR1.bit.LINMODE = 0; // SCI Mode
    LinaRegs.SCIGCR1.bit.SLEEP = 0; // Ensure Out of Sleep
    LinaRegs.SCIGCR1.bit.MBUFMODE = 0; // No Buffers Mode
    LinaRegs.SCIGCR1.bit.LOOPBACK = 0; // External Loopback
    LinaRegs.SCIGCR1.bit.CONT = 1; // Continue on Suspend
    LinaRegs.SCIGCR1.bit.RXENA = 1; // Enable RX
    LinaRegs.SCIGCR1.bit.TXENA = 0; // Enable TX

    LinaRegs.IODFTCTRL.bit.IODFTENA = 0x0;

    LinaRegs.SCIFORMAT.bit.CHAR = 7; //Eight bits
    LinaRegs.SCIFORMAT.bit.LENGTH = 7; //One byte

    LinaRegs.BRSR.bit.SCI_LIN_PSL = 194;
    LinaRegs.BRSR.bit.M = 5;

    LinaRegs.SCIGCR1.bit.SWnRST = 1;
    EDIS;
x 出现错误。请重试或与管理员联系。