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.

[参考译文] TMS570LS0714:TMS570LS0714 -使用 sciNotification 处理 SCI2 RX (LIN)中断

Guru**** 2511415 points
Other Parts Discussed in Thread: TMS570LS0714, HALCOGEN, SN65HVD73

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/993424/tms570ls0714-tms570ls0714---sci2-rx-lin-interrupt-handling-using-scinotification

器件型号:TMS570LS0714
主题中讨论的其他器件: HALCOGENSN65HVD73

尊敬的 TI 团队

我使用的是采用 PZ 封装的 TMS570LS0714。 目前、我正在尝试使用引脚94 (LIN RX)来设置 SCI 实现。
引脚94与外部传感器的 RX 信号连接。

我的问题是 sciNotification (sciBASE-t * sci、uint32标志)函数不是由 RX 中断(这是我的意图)触发的
可以查看我的 CCS 代码和 Hal Gen 设置吗?


您是否知道为何不触发 sciNotification?


HAL GEN -> SCI2 -> SCI/LIN 全局:中的设置在 RX int 连接高电平的情况下进行了测试(如上所示)、在 RX int 未连接高电平的情况下进行了测试)、两者都没有成功。
另外、HAL GEN -> COM Ch. 0-31中的设置已测试连接到 IRQ 的 LIN1 High + LIN1 Low、并且仅测试连接到 IRQ 的 LIN1 High、这两种组合都未成功。

/* USER CODE BEGIN (1) */

#include "sci.h"
#include "het.h"
#include "gio.h"

#include "system.h"

#include <stdio.h>

/* USER CODE END */

/* USER CODE BEGIN (2) */


uint8 sci_cmd;

/* USER CODE END */

int main(void)
{
/* USER CODE BEGIN (3) */

    /* Initialize HET driver */
    hetInit();

    /* Initialize GIO driver */
    gioInit();
    gioSetBit(hetPORT1, 0, 1);        

    /* Initialize SCI and enable ISR */
    sciInit();
    sciReceive(scilinREG, 1, &sci_cmd);//sciReceive(sciREG, 1, &sci_cmd);

    /* Enable Interrupt Processing */
    //_enable_interrupt_();
    _enable_IRQ ();


   while(1)
   {
   }

/* USER CODE END */

    return 0;
}


/* USER CODE BEGIN (4) */
void sciNotification(sciBASE_t *sci, uint32 flags)
{
    printf("Test\r");
}
 /* USER CODE END */


gioSetBit (hetPORT1、0、1)被设定为激活传感器

提前感谢您!

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

    您好!

    printf 是线缓冲的、因此输出在\n 或显式 fflush (stdout)之前不会出现。  

    请在 SCI ISR 中添加断点、以检查在 UART 终端中键入字符时是否生成 RX 中断。

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

    尊敬的王先生:

    我尝试了您的建议。 sciNotification()仍没有触发。

    当我调用以下函数时,它仅在 main()循环的开头触发一次:
    sciReceive (scilinREG、1、&sci_cmd);

    此外、当我输入:
    sciReceive (scilinREG、1、&sci_cmd);

    在 main()函数的 while ()循环中,sciNotification()也会被触发。

    我尝试通过以下方法来分析这一点:

    我在 sci.c 中插入了一个断点-> void linHighLevelInterrupt (void)

        case 11U:
            /* receive */
    			byte = (uint8)(scilinREG->RD & 0x000000FFU);
    
                if (g_sciTransfer_t[1U].rx_length > 0U)
                {
                    *g_sciTransfer_t[1U].rx_data = byte;
                    /*SAFETYMCUSW 567 S MR:17.1,17.4 <APPROVED> "Pointer increment needed" */
    				g_sciTransfer_t[1U].rx_data++;
                    g_sciTransfer_t[1U].rx_length--;
                    if (g_sciTransfer_t[1U].rx_length == 0U)
                    {
                        sciNotification(scilinREG, (uint32)SCI_RX_INT);
                    }
                }
            break;

    我可以看到"字节"连续接收新值、但是"如果(g_sciTransfer_t[1U].rx_length > 0U)"
    未输入(仅当我调用"sciReceive (scilinREG、1、&sci_cmd);"时)。 似乎长度在某处被覆盖了?! 这是可行的吗? 长度应为"1"、因为我在 main()函数的开头设置此长度。

    在之前的工作中、我不使用 LIN RX 端口、而是使用 SCI RX 端口(我使用 PGE 封装)。 在这里、一切都可以使用上述代码、但不适用于 LIN 端口 RESP。 PZ 封装。

    有什么想法吗?

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

    您好!

    要连续接收 RX 中断, 应在 while ()循环中调用 sciReceive()。

    调用 sciReceive (scilinREG、1、&sci_cmd)是在中断模式下获得1个字符、并且只生成1个中断。  

    RX 中断在您的配置中被启用、RX 数据应该在 RX 中断例程中被读取、并且长度在 IF()条件下减少。  

    您能否使用较大的长度值进行另一项测试? 例如 length=2或3。

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

    您好、Wang

    我现在的理解是、我必须在主 while ()循环中连续使用 sciReceive (scilinREG、6、&sci_cmd)、因为我希望每个1字节长接收6个连续帧(这6个帧是连续重复的(我只使用 RX 引脚))。 sciNotification()只有在 linHighLevelInterrupt (void)内接收到所有6个字节时才调用(这现在是合理的)。

    但是:

    1.在 sciNotofation()末尾调用 sciReceive()而不是将其放置在 main while ()循环中,这是否也正确?

    2.在 sciNotification()内接收所有6个帧仍有问题。 请您解释一下、我如何访问接收到的6个字节的数据缓冲区。 到目前为止、我使用了

    RX_DATA = sci->RD;

    sciNotification()内。 但是、我不理解如何接收6字节的完整数据。 根据我的理解、RD 被定义为 uint32、并且不能包含我的6字节数据流? 此外、我不理解数据(字节)是如何存储在 LinHighLevelInterrupt (void)中的。

    感谢你们的解释!!!

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

    接收1个字节或更多字节没有问题:

    void main (void)

    /*用户代码开始(3)*/

    //_enable_IRQ ();

    sciInit();/*初始化 sci/sci-lin */

    /*偶校验,1个停止位*/
    sciDisplayText (sciREG1、&text1[0]、TMSIZEE1);//发送文本代码1 *
    等待(200);

    sciReceive (sciREG1、1、&sci_cmd);

    _enable_IRQ ();

    while (1);
    /*用户代码结束*/

    /*用户代码开始(4)*/
    void sciNotification (sciBASE-t * sci、uint32标志)

    if (flags =SCI_RX_INT)

    sciDisplayText (sciREG1、"获取 RX INT! ",16);
    sciDisplayText (sciREG1、"接收到的字符为:"、23);

    sciDisplayText (sciREG1、&sci_cmd、1);

    sciDisplayText (sciREG1,"--请键入另一个字符...... ",38);


    sciReceive (sciREG1、1、&sci_cmd);

    void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度)

    while (length---)(while (l

    while ((sci->FLR & 0x4)== 4);//等待忙*/
    sciSendByte (sci、* text++);/*发送文本*/
    };

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

    您可以在以下任何位置调用 sciReceive():

    以下是读取接收到的6字节数据的示例:

    void main (void)

    /*用户代码开始(3)*/

    //_enable_IRQ ();

    sciInit();/*初始化 sci/sci-lin */

    /*偶校验,1个停止位*/
    sciDisplayText (sciREG1、&text1[0]、TMSIZEE1);//发送文本代码1 *
    等待(200);

    sciReceive (sciREG1、6、&sci_cmd[0]);

    _enable_IRQ ();

    while (1);
    /*用户代码结束*/

    /*用户代码开始(4)*/
    void sciNotification (sciBASE-t * sci、uint32标志)

    if (flags =SCI_RX_INT)

    sciDisplayText (sciREG1、"获取 RX INT! ",16);
    sciDisplayText (sciREG1、"收到的字符为:"、23);

    sciDisplayText (sciREG1、&sci_cmd[0]、1);
    sciDisplayText (sciREG1、&sci_cmd[1]、1);
    sciDisplayText (sciREG1、&sci_cmd[2]、1);
    sciDisplayText (sciREG1、&sci_cmd[3]、1);
    sciDisplayText (sciREG1、&sci_cmd[4]、1);
    sciDisplayText (sciREG1、&sci_cmd[5]、1);

    sciDisplayText (sciREG1、"、6);


    sciReceive (sciREG1、6、&sci_cmd[0]);

    void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度)

    while (length---)(while (l

    while ((sci->FLR & 0x4)== 4);//等待忙*/
    sciSendByte (sci、* text++);/*发送文本*/
    };

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

    您可以在 while ()循环中调用 sciReceive(),但需要检查标志以确保最后一个中断已被处理:

    uint8 sci_cmd[6];
    uint32 receive_done;
    /*用户代码结束*/

    void main (void)

    /*用户代码开始(3)*/

    //_enable_IRQ ();

    sciInit();/*初始化 sci/sci-lin */

    /*偶校验,1个停止位*/
    sciDisplayText (sciREG1、&text1[0]、TMSIZEE1);//发送文本代码1 *
    等待(200);

    Receive_DONE = 0;

    sciReceive (sciREG1、6、&sci_cmd[0]);

    _enable_IRQ ();

    while (1){
    如果(receive_done = 1)

    Receive_DONE = 0;
    sciReceive (sciREG1、6、&sci_cmd[0]);


    /*用户代码结束*/

    /*用户代码开始(4)*/
    void sciNotification (sciBASE-t * sci、uint32标志)

    if (flags =SCI_RX_INT)

    sciDisplayText (sciREG1、"获取 RX INT! ",16);
    sciDisplayText (sciREG1、"收到的字符为:"、23);

    sciDisplayText (sciREG1、&sci_cmd[0]、1);
    sciDisplayText (sciREG1、&sci_cmd[1]、1);
    sciDisplayText (sciREG1、&sci_cmd[2]、1);
    sciDisplayText (sciREG1、&sci_cmd[3]、1);
    sciDisplayText (sciREG1、&sci_cmd[4]、1);
    sciDisplayText (sciREG1、&sci_cmd[5]、1);

    sciDisplayText (sciREG1、"、6);


    //sciReceive (sciREG1、6、&sci_cmd[0]);

    Receive_DONE = 1;

    void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度)

    while (length---)(while (l

    while ((sci->FLR & 0x4)== 4);//等待忙*/
    sciSendByte (sci、* text++);/*发送文本*/
    };

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

    尊敬的王先生

    这已经对您表示感谢!
    请向我提出以下问题:
    我希望通过 SCI2 RX 引脚接收的数据帧如下:

    每个帧被定义为6字节

    我当前的 HalGen 设置是(我还尝试了2个停止位):

    我不确定是否需要在 HalGen 中定义一个起始位、如上面的第一个图形所示。
    如果是、我不知道可以在设置中添加起始位的位置。

    我目前正在努力通过 sciReceive (scilinREG、6、&sci_cmd)正确接收6字节数据帧。 我目前使用以下代码:

    void sciNotification(sciBASE_t *sci, uint32 flags)
    {
      
            static uint8 byte0;
            static uint8 byte1;
            static uint8 byte2;
            static uint8 byte3;
            static uint8 byte4;
            static uint8 byte5;
    
    
            if (flags == SCI_RX_INT)
            {
                byte0 = sci_cmd[0];
                byte1 = sci_cmd[1];
                byte2 = sci_cmd[2];
                byte3 = sci_cmd[3];
                byte4 = sci_cmd[4];
                byte5 = sci_cmd[5];
            }
            sciReceive(scilinREG, 6, &sci_cmd);//scilinREG
    }

    我接收6个字节、但它们不是我所期望的。

    如果您能给我一个有关如何接收上面显示的数据帧的详细信息、我会非常满意。
    由于 HalGen 中没有太多变化、它必须与我在 CCS 中的当前代码有关。

    非常感谢!

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

    您好!

    在帧的开头只有一个起始位。  它不可配置。 停止位的数量是可配置的(1位或2位)。

    SCI 通知中的代码对我来说看起来不错。 我用这种方法来阅读收到的字符、没有发现任何问题。

    您获得的数据是 ASCII 代码。 如果在 UART 终端中键入1a、则会得到0x31和0x61

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

    您好、Wang

    感谢您的回答。 不幸的是、我仍在尝试找出为什么我无法接收到帧的预期6个字节(我接收到6个字节、但它们不是我所期望的)。 您是否认为我以错误的方式使用 LIN 端口及其寄存器(scilinREG)有一些事情要做?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="482384" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/993424/tms570ls0714-tms570ls0714---sci2-rx-lin-interrupt-handling-using-scinotification/3687864 #3687864"]您认为我以错误的方式使用 LIN 端口及其寄存器(scilinREG)有什么需要做的事吗?

    否、此模块可用于 LIN 和 SCI。 要将该模块用作 SCI、 应禁用 SCIGCR1寄存器中的 LIN 模式。 如果您在 HALCOGen"启用驱动程序"页中选择 SCI、则该位在 sciInit()中清零。

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

    感谢您的回答! 您能否再次查看上述数据协议。 我使用的传感器在一个帧内发送6个字节。 每个字节以一个开始位和一个停止位发送。 在发送帧的最后一个字节(字节编号6)后、空闲高电平状态将被激活、直到帧再次初始化(10kHz 之后)。 我的波特率为921600、使用 PLL 生成的90MHz 内部时钟。

    我是否需要以特殊方式处理空闲状态、因为它仅在帧的最后一个字节(字节编号6)之后发送、而不是在每个字节之后发送?

    非常感谢。

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

    传感器是否需要一条命令将数据发送回您? 您是否从传感器获得了任何数据(正确数据或不正确数据)?

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

    传感器不需要命令即可发送数据。 传感器每10kHz 连续发送一个6字节的帧(+开始/停止位)。 在发送最后一个字节后、空闲状态、高电平状态、被初始化、直到一个10kHz 周期完成。 我在微控制器的 RX 引脚上测量传感器的正确模拟信号。 我确实在 CCS 中接收数据、但与放大信号相比、这不是我所期望的。

    为了更加精确:波特率为921600位/秒、8位数据字、1个停止位、无奇偶校验、帧以10kHz 的频率发送。 一个帧有6个字节:

    这意味着:
    -发送一个字节的时间为    (1/921600)*(8data+1 stop+1 start)= 10.85usec
    -发送所有六个字节的时间为(1/921600)*(8data+1 stop+1 start)*6=65.1usec
    -空闲状态(高电平等待至下一帧)为(1/10kHz)- 65.1usec = 35usec

    它是否与仅在字节编号6之后发送的空闲状态有关?
    921600位/秒的传感器波特率是否过高?
    我是否必须在其他运行模式下使用 SCI、例如在(多点模式)中?:

    https://e2e.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/538986/c28x-sci-idle-line-mode-speed


    谢谢!

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

    MCU SCI RX 引脚应连接到传感器的 TX 引脚。 MCU SCI TX 引脚连接到传感器的 RX 引脚。

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

    该传感器具有 UART 异步串行接口、其中数据仅通过差分输出信号发送、然后该信号连接到 UART 收发器(传感器没有 RX 引脚)。 此收发器的输出连接到 MCU 的 RX 引脚。  它是单向通信。

    您是否认为它可能与我在上一个回答中提到的要点(问题)有关?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="482384" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/993424/tms570ls0714-tms570ls0714---sci2-rx-lin-interrupt-handling-using-scinotification ]\n 我正在使用 PZ 封装中的 TMS570LS0714。 目前、我正在尝试使用引脚94 (LIN RX)来设置 SCI 实现。
    引脚94与我的外部传感器的 RX 信号连接。[/quot]

    您说外部传感器具有 RX 信号。  

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

    如何将传感器差分信号连接到 UART 收发器? 使用哪种 UART 收发器?

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

    我的差。 我想说传感器的传感器数据 B 和数据 A 连接到收发器的输入侧。 我使用的是 SN65HVD73DGSR 收发器:

    https://www.ti.com/lit/ds/symlink/sn65hvd73.pdf?HQS=dis-mous-null-mousermode-dsf-pf-null-wwe&ts=1620624486233&ref_url=https%253A%252F%252Fwww.mouser.de%252F

    传感器信号为差分信号:

    收发器的输出连接到 MCU 的 RX 引脚。 扬声器信号看起来非常好(噪声不应导致问题)

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

    您好!

    SN65HVD73有 NRE 信号来启用/禁用接收。 NRE 是否连接到电路板上的低电平或 GND?  

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

    您好!

    是的、它连接到 GND、我可以测量 MCU RX 引脚上的模拟信号

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

    尊敬的 Sam:

    由于 SCI2从 microUSB 端口接收数据、您能否使用 SCI1连接 传感器的 SN65HVD73?

    当三个器 件连接到 UART 信号线时、即使 microUSB 上的从器件未进行传输、它也会在线路上输出空闲状态。 microUSB 上的传感器和器件将相互对抗、因为它们尝试发送、而另一个尝试将线路保持在空闲状态。

    如果 MCU SCI2希望从传感器接收数据、则需要禁用 MicoUSB 的 UART TX。 launchpad 上的 TM4C129器件充当 SCI2的 UART 收发器、但其驱动程序不提供用于将 TX 禁用置于高阻抗状态的命令。  

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

    尊敬的王先生:

    我不使用评估板。 我在自己的设计中使用 TMS570LS0714 (PZ 封装)。
    在另一种情况下、您说此软件包不支持 SCI1:


    e2e.ti.com/.../tms570ls0714-tms570ls0714---sci2-rx-interrupt-handling

    我们使用 JTAG 引脚对 MCU 进行编程、但这不会产生影响?。。


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

    是的、TMS570LS0714PZ 只有1个 SCI 模块。 此 SCI 是否仅用于通过收发器连接传感器?

    使用 JTAG 不会影响 SCI。

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

    是的、此 SCI 仅用于此传感器。

    请看一下上面显示的波特率设置(HalCodGen)。 我使用921600作为 SCI 波特率、因为它是传感器波特率。

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

    1.7%的波特率差异应该是可以的。  

    您可以通过更改 VCLK 来调整波特率。 如果 PLL=177MHz、可以得到921875Hz 的波特率。

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

    HalCoGen 中注意到、您建议的177MHz PLL 太高、请参阅下面的内容。
    因此、我将设置更改为(0.07%):


    但没有改进。

    SCI 波特时钟是否必须比传感器的波特率高8倍? 当我查看"TMS470R1x 串行通信"中的第10页时
    接口(SCI)参考指南"、我可以看到每个位被8个 SCI 波特时钟周期采样:



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

    尊敬的王先生

    我有一个可能的提示来找到问题。 我使用外部示波器测量了 ECLK 输出引脚。
    我将16MHz 的振荡器频率和8分频器连接到 ECLK 引脚。 因此、我希望测量2MHz 的频率。 但是、我测量的频率为2.5MHz。 内部时钟/振荡器是否工作不正常?

    我还生成了一个 RTI 中断并切换了一个输出引脚。 设置为10Hz 和100Hz。 我在切换引脚6.25Hz 和62.5Hz 处测量。 似乎一个内部时钟存在确定性错误。

    我用作以下器件的外部时钟信号(20MHz):DSC1003DL5-020.0000
    连接方式:


    我是否需要更改晶体频率。 从16MHz 到20MHz (红框)?
    当我不连接外部1时钟(黑盒)时会发生什么情况?


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

    对于 TMS570器件、每个 SCI 数据位具有16个 vclk 周期的持续时间。 这意味着 VCLK 必须至少是 SCI 波特率的16倍。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="482384" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/993424/tms570ls0714-tms570ls0714---sci2-rx-lin-interrupt-handling-using-scinotification/3697132 #3697132"]我是否需要更改 Crystal Freq。 从16MHz 到20MHz (红框)?
    如果我没有连接外部1时钟(黑盒)、会发生什么情况?

    是的、您需要 相应地更改晶体频率。

    外部时钟1 (黑盒)表示时钟来自外部时钟输入#1 (PZ 封装的引脚10)。

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

    请在阅读框中将晶振频率更改为20.0:

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

    问题是晶体频率设置错误。 在我将晶振频率从16MHz 的标准配置更改为20MHz 的外部时钟后、我会收到预期的数据流。 感谢您的支持!