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.

TMS320F28335: DSP串口通信,主机Tx初始状态+6V,启动后变为-6V,会导致串口通信奔溃,不能正常通信需要重新初始化串口

Part Number: TMS320F28335


主机的串口Tx端初始状态是+6V,启动串口后,Tx端+6V变为-6V,这个变化会导致DSP28335串口崩溃,通信不了,通过实验发现,需要对  ScicRegs.SCICTL1.all = 0x0003;  和ScicRegs.SCICTL1.all = 0x0023;这个寄存器重新赋值初始化才能通信,正常接收数据,主机有发送数据下来,28335接收不到数据,以下是串口初始化函数

void Sci_Init(void)
{
EALLOW;
GpioCtrlRegs.GPBPUD.bit.GPIO62 = 0; // Enable pull-up for GPIO62 (SCIRXDC)
GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0; // Enable pull-up for GPIO63 (SCITXDC)

GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // Asynch input GPIO62 (SCIRXDC)

GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 1; // Configure GPIO62 for SCIRXDC operation
GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 1; // Configure GPIO63 for SCITXDC operation
EDIS;

ScicRegs.SCICCR.all = 0x0007;
ScicRegs.SCICTL1.all = 0x0003; // enable TX, RX, internal SCICLK,
ScicRegs.SCICTL2.all = 0x0003;
ScicRegs.SCICTL2.bit.TXINTENA = 0;
ScicRegs.SCICTL2.bit.RXBKINTENA =1;

ScicRegs.SCIHBAUD = 0x0000; // 115200 baudrate @LSPCLK = 37.5MHz.
ScicRegs.SCILBAUD = 0x0028;

ScicRegs.SCICTL1.all = 0x0023;
ScicRegs.SCIFFTX.all = 0x8000; //禁止FIFO

EALLOW;
PieVectTable.SCIRXINTC = &ScicRx; //将SCIC中断子程序地址入口放入中断向量表
EDIS;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // 使能PIE向量表
PieCtrlRegs.PIEIER8.bit.INTx5 = 1; // 打开第8组第5个中断:SCICRX中断
IER |= M_INT8;

}

若主机串口的Tx端初始状态是-6V,主机启动串口后,不会导致28335的串口卡死,通过排查,发现原因,应该是主机串口初始状态+6V,启动串口,变成-6V,影响到28335的ScicRegs.SCICTL1这个串口控制寄存器了,当是在线调试监测,该寄存器的值并没有被改变,就是要重新赋值才能够正常通信,请教各位同仁,不知道这个是什么原因导致,希望能给出宝贵意见,感谢?