我在 TMS320F28379上运行2个 SCI 总线、B 和 C。 当运行电路板时、这两个器件具有相同的设置、如下所示:
//为 SCI-C 配置 SCICCR
scicRegs.SCICCR.bit.stopbits = 0; // 1停止位
scicRegs.SCICCR.bit.parity = 0; //奇偶校验
scicRegs.SCICCR.bit.PARITYENA=0; //奇偶校验被禁用
SCicRegs.SCICCR.bit.LOOPBKENA=0; //回送被禁用
scicRegs.SCICCR.bit.ADDRIDLE_MODE = 0; //选择空闲线模式协议
scicRegs.SCICCR.bit.SCICHAR = 7; // 8个数据位
//为 SCI-C 配置 SCICTL1
scicRegs.SCICTL1.bit.RXERRINTENA=0; //接收错误中断被禁用
SCICRegs.SCICTL1.bit.SWRESET = 0; //在配置时使能软件复位(低电平有效)
ScicRegs.SCICTL1.bit.TXWAKE = 0; // SCI TX 唤醒功能被禁用
scicRegs.SCICTL1.bit.SLEEP = 1; //睡眠模式被启用
scicRegs.SCICTL1.bit.TXENA=1; //启用 TX
scicRegs.SCICTL1.bit.RXENA=1; //启用 RX
//为 SCI-C 配置 SCICTL2
scicRegs.SCICTL2.bit.RXBUKINTENA=1; //启用接收器-缓冲器/中断
scicRegs.SCICTL2.bit.TXINTENA=0; //禁用 TX 就绪中断
//为 SCI-C 配置 SCIHBAUD 和 SCILBAUD
uint16 brr = 64;//=(uint16) round (LSPCLK /(SCIC_RS485_baud_rate * 8.0)- 1);
ScicRegs.SCIHBAUD.all = brr >> 8; //波特率= 125k
ScicRegs.SCILBAUD.ALL = BRR & 0xFF; //波特率= 125k
//为 SCI-C 配置 SCIFFTX
ScicRegs.SCIFFTX.bit.SCIRST = 1; // SCI FIFO 可恢复发送和接收
SCicRegs.SCIFFTX.bit.SCIFFENA=1; //启用 SCI FIFO 增强功能
SCicRegs.SCIFFTX.bit.TXFIFORESET = 0; //将 TX FIFO 指针复位为零并在配置时保持复位状态
scicRegs.SCIFFTX.bit.TXFFIENA=0; //禁用发送 FIFO 中断
ScicRegs.SCIFFTX.bit.TXFFIL = 0; //将发送 FIFO 中断级别位设置为0
//为 SCI-C 配置 SCIFFRX
ScicRegs.SCIFFRX.bit.RXFIFORESET = 0; //将 RX FIFO 指针复位为零并在配置时保持复位状态
ScicRegs.SCIFFRX.bit.RXFFIENA=1; //接收 FIFO 中断使能
ScicRegs.SCIFFRX.bit.RXFFIL = 1; //将接收 FIFO 中断级别位设置为1
//为 SCI-C 配置 SCIFFCT
scicRegs.SCIFFCT.bit.CDC = 0; //禁用自动波特对齐
scicRegs.SCIFFCT.bit.FFTXDLY = 0; //将 FIFO 传输延迟设置为0
//从复位中撤回 SCI
scicRegs.SCICTL1.bit.SWRESET = 1; //禁用软件复位
ScicRegs.SCIFFTX.bit.TXFIFORESET = 1; //禁用 TX FIFO 复位
ScicRegs.SCIFFRX.bit.RXFIFORESET = 1; //禁用 RX FIFO 复位
SCIB 也是如此。
SCIB 工作正常、但我无法检测 SCIC 的任何活动。 这是因为在一段时间后、BRKDT 的状态错误标志变为高电平。
如果我在器件上执行 SWRESET、则会再次发生这种情况、并且会继续这样做。
即使没有施加输入并且 RX 线持续为低电平、也会发生该错误。
在本例中、该误差到底意味着什么?

