我使用芯片 TMS320F28023的 SCI 外设来配置600波特率、无奇偶校验位和一个停止位。 DSP 将错误地检测缺少的停止位、并将 SCIRXST 寄存器的 FE 位置为1。 但是、实际上、其他电子控制装置发送的数据是使用示波器进行测试以获得一个停止位、并且停止位的时间也是正确的。 为什么?
此外、如果 fe 设置为1且 DSP 未及时清除、后续通信通常会检测到缺少的停止位。为什么?
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.
我使用芯片 TMS320F28023的 SCI 外设来配置600波特率、无奇偶校验位和一个停止位。 DSP 将错误地检测缺少的停止位、并将 SCIRXST 寄存器的 FE 位置为1。 但是、实际上、其他电子控制装置发送的数据是使用示波器进行测试以获得一个停止位、并且停止位的时间也是正确的。 为什么?
此外、如果 fe 设置为1且 DSP 未及时清除、后续通信通常会检测到缺少的停止位。为什么?
您好 Marlyn,
我实际测量了波特率,正确,FIFO、不使用中断。SCI 模块配置如下:
空 ConfigScia (uint32波特率)
{
uint16 brr;
BRR =(长) 12500000/波特率/ 8 - 1;
//config scia 数据格式
SciaRegs.SCICCR.bit.ADDRIDLE_MODE = 0;// 0 =空闲线模式,1 =地址位模式
SciaRegs.SCICCR.bit.SCICHAR = 7;// 8个字符位
SciaRegs.SCICCR.bit.PARITYENA=0;//无奇偶校验
SciaRegs.SCICCR.bit.parity = 1;// 0 =奇数奇偶校验,1 =偶数奇偶校验
SciaRegs.SCICCR.bit.stopbits = 0;//一个停止位
SciaRegs.SCICTL1.all = 0x0003;//启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
SciaRegs.SCICTL2.all = 0x0000;//禁用 Tx 和 Rx 中断
//波特率
SciaRegs.SCIHBAUD = brr /0xff;// 9600 baud @LSPCLK = 12.5MHz (50MHz SYSCLK)。
SciaRegs.SCILBAUD = brr % 0xff;//12500*1000/9600 (波特率)/8 -1 = 161 = 0xA1
SciaRegs.SCICTL1.all = 0x0023;//从复位中撤回 SCI
//scia fifo
// SciaRegs.SCIFFTX.all = 0xE040;
// SciaRegs.SCIFFTX.all = 0x0040;
// SciaRegs.SCIFFRX.ALL = 0x2041;
SciaRegs.SCIFFCT.all = 0x0;
}
您好、Terrell、
[~ userid="404506" URL",支持/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1114347/tms320f28023-sci-peripheral-problem-of tms320f28023/4272095#4272095"]我实际测量的波特率正确[/quote两个器件的测量波特率是多少? 当波特率未对齐或者通信线路在没有通信发生时未保持高电平时、组帧错误通常发生。 请确保这两个点都不是问题的根源。
您是否对 SCI 引脚进行了任何资质审核设置? 此外、是否也设置了中断检测标志?
此致、
Marlyn
您好、Terrell、
[ ?userid="404506" URL"~μ C/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forum/1114347/tms320f28023-sci-peripheral-problem-of tms320f28023/4151135#4151135"]如果 SCIRXST 的 FE 位设置为无法继续接收一个 SCI 数据,则该模块无法清除,1个引用/引用数据。]是的、即使检测到错误、SCI 模块仍将继续接收数据。
此致、
Marlyn
您好 Marlyn,
我知道 如何清除 FE 位,我只想知道 FE 位是否未被清除、SCI 模块能否正常接收和发送数据?
该项目的通信机制是主从关系,Renesas 芯片是主机、28023芯片是从机。当28023接收到正确的数据并通过验证,。它以50ms 的延迟将数据发送到 Renesas 芯片
在下图中、波形通道3是 Renesas 芯片的传输、而通道1是28023芯片的应答。 当第四个帧时、28023检测到丢失的停止位、而28023芯片不会回复数据。 连续几个周期后、Renesas CHIP 发送、28023将不会回复、并在一段时间后回复。
您好、Terrell、
[引用 userid="404506" URL"~μ C/support/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1114347/tms320f28023-sci-peripheral-problem-of tms320f28023/4155769#4155769"]我只想知道 FE 位是否未被正常接收和发送数据/报价单?在这种情况下、SCI 应该仍然能够正常接收和发送数据。
[引用 userid="404506" URL"~μ C/support/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1114347/tms320f28023-sci-peripheral-problem-of tms320f28023/4155769#4155769"]连续几个周期后,Renesas chip 将不会在。一段时间后回复[引用/引用时间后]我怀疑这可能与您将代码配置为发送和接收数据的方式有关。 您是否在等待数据并每次检查数据是否正确? 您能解释一下您的软件是如何编写的?
此致、
Marlyn
Terrell、
[引用 userid="404506" URL"~/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forum/1114347/tms320f28023-sci-peripheral-problem-of tms320f28023/4157360#4157360"]它必须接收正确的数据并通过验证
才能 发送数据。
[/报价]您认为这是导致 F28023器件能够再次发送数据之前额外延迟的原因吗?
此致、
Marlyn
Terrell、
[引用 userid="404506" URL"~支持/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1114347/tms320f28023-sci-peripheral-problem-of tms320f28023/4160494#4160494"]我已找到并解决了帧错误的原因[/quote问题是什么?
[引用 userid="404506" URL"~/support/microcontrollers/C2000-microcontrollers-group/CC2000/f/C2000-microcontrollers-forum/1114347/tms320f28023-sci-peripheral-problem-of tms320f28023/4160494#4160494"]当 FE 位 被置位, 寄存器中的 RXSCRDY 位将不会再次置位[引用]我将与我们的设计团队协商、并尽快提供有关此方面的更新。
此致、
Marlyn