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:TMS320F28023的 SCI 外设问题

Guru**** 2387080 points
Other Parts Discussed in Thread: TMS320F28023
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1114347/tms320f28023-sci-peripheral-problem-of-tms320f28023

器件型号:TMS320F28023

我使用芯片 TMS320F28023的 SCI 外设来配置600波特率、无奇偶校验位和一个停止位。 DSP 将错误地检测缺少的停止位、并将 SCIRXST 寄存器的 FE 位置为1。 但是、实际上、其他电子控制装置发送的数据是使用示波器进行测试以获得一个停止位、并且停止位的时间也是正确的。 为什么?

此外、如果 fe 设置为1且 DSP 未及时清除、后续通信通常会检测到缺少的停止位。为什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Terrell、

    您是否可以分享您设置 SCI 外设的方式? 您使用的是 FIFO、中断等

    您是否测量了实际波特率。 您提到过将其设置为600、但如果您使用示波器进行检查、它是否正确?

    此致、

    Marlyn

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Marlyn,

    两个器件的波特率 都是正确的,全部为600。当没有通信发生时、通信线路保持高电平、

    我已经将 GPIO28和 GPIO29设置为 SCI 函数、并且获得的中断检测标志未设置。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Terrell、

    感谢您回答问题。 您是否有任何类型的电平转换器? 另一个电子器件的输出轨是什么?

    此致、

    Marlyn

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Marlyn,

    我没有任何类型的电平转换器,、 另一个电子器件使用 R5F100JG 芯片。的 SCI 模式

    此外、我想问一个问题,如果 SCIRXST 的 FE 位被设定为1、 那么 DSP 不会清除这个位,SCI 模块能够继续接收数据?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    但我    。SCIRXST 的 FE 位是否设置为1,SCI 模块无法立即继续接收数据,需要等待大约10秒甚至更长时间

    为什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果 SCIRXST 的 FE 位被置位为1、 则 DSP 不会将该位清零,SCI 模块可以继续发送数据?

    SCIRXST 的,位被设定为1 μ s 时、我使用一个示波器来测试 DSP μ,的接收和发送波形 SCI 模块不能 立即继续发送数据,因为只有接收到的波形、 但未发送任何波形。需要 等待大约10s 甚至更长时间才能正常进行。

    为什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Terrell、

    当 FE 位被置位时、您应该使 SCI 外设的一个软件复位来清除该位。

    您提到您没有使用 FIFO 或中断。 您何时编写数据? 当检测到 FE 位时、是否有可能将代码放入循环中一段时间?

    此致、

    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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Marlyn,

       您是否在等待数据并每次检查数据是否正确? 您能解释一下您的软件是如何编写的?

    是,通信机制已经在之前得到了应答,28023芯片是一个从器件, 它必须接收正确的数据并通过验证

    才能 发送数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是,我读取 SCIRXBUF 寄存 器中的数据、因为我判断 SCIRXST 寄存器中的 RXRDY 位为1 μ。

    我使用 CCS 编译器在线仿真来检查当 FE 位设置为1时  、SCIRXST 寄存器中的 RXRDY 位在一段时间内不会再次设置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Terrell、

    由于这是流程的一部分、这意味着器件按原样运行。 如果您遇到帧错误、那么这是需要解决的问题。  

    此致、
    Marlyn

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Marlyn,

    我已经找到并解决了帧错误的原因,我想知道为什么在发生帧错误时 SCI 模块无法正常接收数据?

    您之前回答过、当 FE 位被置位时、SCI 模块可以正常接收数据。现在当 FE 位 被置位时,   SCIRXST 寄存器中的 RXRDY 位不会再次被置位。请告诉我为什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Terrell、

         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