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.

TMS320F280045: Configure LIN as SCI

Part Number: TMS320F280045
Other Parts Discussed in Thread: C2000WARE

Dear team:

My customer uses the Lin port as SCI function according to the following configuration. When the sysclk clock is tested at 100MHz, the pin has no data, and the oscilloscope can not see the waveform.

Is there a problem with the configuration?

CpuSysRegs.PCLKCR19.bit.LIN_A = 1;

// LIN
Drv_GPIO_SetupPinMux(33, GPIO_MUX_CPU1, 6);//LIN-A RX
Drv_GPIO_SetupPinOptions(33, GPIO_INPUT, (GPIO_PULLUP + GPIO_ASYNC));

Drv_GPIO_SetupPinMux(58, GPIO_MUX_CPU1, 9);//LIN-A TX
Drv_GPIO_SetupPinOptions(58, GPIO_OUTPUT, GPIO_PULLUP);

//Allow write to protected registers
EALLOW;
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 enabled. A parity bit is generated during transmission and is expected during reception
LinaRegs.SCIGCR1.bit.PARITY = 0; //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 = 1; //The multi-buffer mode is enabled.
LinaRegs.SCIGCR1.bit.LOOPBACK = 0; //External Loopback 0
LinaRegs.SCIGCR1.bit.CONT = 1; //Continue on Suspend

//Set baudrate
LinaRegs.BRSR.bit.M = 8;
LinaRegs.BRSR.bit.SCI_LIN_PSL = 324; //Baud = 9600bps(9600bps)
LinaRegs.BRSR.bit.SCI_LIN_PSH = 0;

LinaRegs.SCIGCR1.bit.RXENA = 1; //Enable RX
LinaRegs.SCIGCR1.bit.TXENA = 1; //Enable TX

LinaRegs.SCIPIO0.bit.RXFUNC = 1; // configure the LINRX and LINTX pins for SCI
LinaRegs.SCIPIO0.bit.TXFUNC = 1;

//Ensure IODFT is disabled
LinaRegs.IODFTCTRL.bit.IODFTENA = 0x0;
//Set transmission length
LinaRegs.SCIFORMAT.bit.CHAR = 7; //Eight bits
LinaRegs.SCIFORMAT.bit.LENGTH = 0; //4 byte 3


LinaRegs.SCIGCR1.bit.SWnRST = 1; //bring out of software reset
//Disable write to protected registers
EDIS;

Best regards