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.

[参考译文] MSP430FR2355:MSP‑EXP430FR2355 (MSP 应用 UART)、配置为偶校验

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1014697/msp430fr2355-msp-exp430fr2355-msp-application-uart-configured-with-even-parity

器件型号:MSP430FR2355

使用 MSP430FR2355上的代码通过 MSP 应用 UART 设置为9600 8N1向 PC 终端程序发送消息的工作方式

将 MSP 和终端程序设置更改为9600 8E1 (偶数奇偶校验)。 发送的某些字符不会出现,例如“3”、“5”

使用 USB 转串行电缆(FTDI)在"MSP 应用 UART"上使用的相同代码不能与偶校验一起工作时、也能可靠地工作。

------------------

然后、我使用 PC 上的两个终端窗口将"MSP Application UART"测试为"USB 转串行电缆(FTDI)"。

设置9600 8N1工作正常

当  从 FTDI 发送到“MSP Application UART” 时,设置9600 8E1会丢失一些字符,例如“3”、“5”与原始 问题相同。

--------------------

在开发板 上、在 "MSP Application UART"上使用偶校验功能的 MSP‑EXP430FR2355似乎无法可靠工作(可能存在错误)。

 

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

    Daniel、您好!

    您使用哪种代码? 我可以在我的一侧进行测试。

    谢谢!

    此致

    Johnson

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

    您好!

    我随附的代码演示 了 MSP‑EXP430FR2355上的问题

    #include  "driverlib.h"

    #define CS_MCLK_REGLED_FREQUENCY IN_kHz    ( 8000U)
    #define CS_MCLK_FLLREF_Ratio                ( CS_MCLK_NEW_FREQUENCY IN_kHz/32.768 )

    uint8_t data[]  = "01234567\n"
    uint8_t RXData =  0
    uint8_t done =  0

    void  main (void)
        //停止 看门狗 计时器
        WDT_A_HOLD (WDT_A_base);

        CS_initClockSignal (CS_FLLREF、 CS_REFOCLK_SELECT、 CS_Clock_divider);

        //设置 ACLK = REFOCLK (内部 32kHz RC)
        CS_initClockSignal (CS_ACLK、 CS_REFOCLK_select、 CS_Clock_divider);

        CS_initFLSettle (CS_MCLK_frequised_in_kHz、 CS_MCLK_FLLREF_Ratio);
        //set SMCLK = DCO
        CS_initClockSignal (CS_SMCLK、 CS_DCOCLKDIV_SELECT、 CS_CLOCK_DIVIDER_1);
        //set MCLK = DCO
        CS_initClockSignal (CS_MCLK、 CS_DCOCLKDIV_SELECT、 CS_CLOCK_DIVIDER_1);

        /* 设置      UART 的 IO 引脚 */
        GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P4、 GPIO_PIN2、 GPIO_PRIMARY_MODULE_Function);
        GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P4、 GPIO_PIN3、 GPIO_PRIMARY_MODULE_Function);

        PMM_unlockLPM5 ();

        EUSCI_A_UART_initParam 参数 = { 0 };

        /*      UART 的操作参数 */
        params.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK;
       // params.parity = eUSCI_A_UART_NO_parity; // 不 奇偶校验 所有 字符 打印 '01234567\n
        params.parity = EUSCI_A_UART_evo_parity;  //       终端上只打印偶校验'1247'
        Params.msborLsbFirst = EUSCI_A_UART_LSB_FIRST;
        Params.numberofStopBits = EUSCI_A_UART_Oe_STOP_BIT;
        Params.uartMode = EUSCI_A_UART_MODE;

        /* 由 生成  
         * EUSCI
         * 8MHz 时钟
         * 9600 波特
         *
        Params.clockPrescalar =  52
        params.firstModRe=   1
        params.secondModReg =  73
        params.oversam采样 = EUSCI_A_UART_oversaming_BAUDRATE_generation;

        EUSCI_A_UART_INIT (EUSCI_A1_BASE、 params);

        EUSCI_A_UART_ENABLE (EUSCI_A1_BASE);

        EUSCI_A_UART_enableInterrupt (EUSCI_A1_base、 EUSCI_A_UART_receive_interrupt);
        EUSCI_A_UART_enableInterrupt (EUSCI_A1_base、 EUSCI_A_UART_Transmit 中断);

        // 启用 全局 中断
        _enable_interrupt ();
        uint16_t i =  0

        while (1)
        {
            // 将 数据加载 到 缓冲区中
            EUSCI_A_UART_transmitData (EUSCI_A1_BASE、 DATA[i]);
            while (done !=  1);
            完成 =  0

            i++;
            if (i >=  sizeof (data)  - 1)
            {
                I =  0
            }
        }
    //
    //
    //这 是  USCI_A1 中断 矢量 处理 例程。
    //
    //
    #if  defined (__TI_Compiler_version__) ||  Defined (__IAR_systems_ICC__)
    #pragma  vector=USCI_A1_vector
    _interrupt
    #Elif  defined (_GNU_)
    __attribute__((中断(USCI_A1_vector))
    #endif
      EUSCI_A1_ISR ()
        switch (__evo_in_range (UCA1IV、USCI_UART_UCTXCPTIFG))
        {
            USCI_NONE 案例 : 中断
            USCI_UART_UCRXIFG 案例 :
                RXData =  EUSCI_A_UART_receiveData (EUSCI_A1_BASE);
                中断;
           USCI_UART_UCTXIFG 案例 :
               DONE =  1
               中断;
           案例 USCI_UART_UCSTTIFG: 中断
           案例 USCI_UART_UCTXCPTIFG: 中断
        }


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

    Daniel、您好!

    我将执行一些测试并返回。

    谢谢!

    此致

    Johnson

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

    Daniel、您好!

    我在我的一侧做了一些测试、并使用逻辑分析来捕获该波形。

    结果显示正常。

    谢谢!

    此致

    Johnson

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

    Daniel、您好!

    我发现根本原因、即使是默认情况下、eZ-FET 桥也不支持、因此您将丢失一些数据、您需要在 PC GUI 中将波特率设置为9625、并发送任何数据以将桥设置为偶数模式、然后您可以接收正常数据。

    谢谢!

    此致

    Johnson

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

    您好!  

    感谢您的帮助、这似乎解决了问题。

    本限制并未提及  MSPEXP430FR2355用户指南(UART 部分)。 值得一提的是、不支持奇数奇偶校验、终端应用通常不支持偶校验。