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.

[参考译文] MSP430FR2475:串行端口没有输出信号

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1093708/msp430fr2475-the-serial-port-has-no-output-signal

部件号:MSP430FR2475

大家好,

以下是客户提出的问题,可能需要您的帮助:

根据Driverlib演示配置的串行端口无法正常输出。 使用示波器进行测量时,它没有任何信息。

针脚已通过测试,没有问题。

外部主晶体振荡器32.768K。

这是配置的文件。

#include "driverlib.h"
//******************************************************************************
//!
//!   Empty Project that includes driverlib
//!
//******************************************************************************
   
   
void main(void)
{
   // stop watchdog
    WDT_A_hold(WDT_A_BASE);

    GPIO_setAsPeripheralModuleFunctionInputPin(
        GPIO_PORT_P2,
        GPIO_PIN1 + GPIO_PIN0,
        GPIO_PRIMARY_MODULE_FUNCTION
        );

    //Set external clock frequency to 32.768 KHz
    CS_setExternalClockSource(32768);
    //Set ACLK=XT1
    CS_initClockSignal(CS_ACLK,CS_XT1CLK_SELECT,CS_CLOCK_DIVIDER_1);
    //Start XT1 with no time out
    CS_turnOnXT1(CS_XT1_DRIVE_1);
    //Set SMCLK = DCO with frequency divider of 1
    CS_initClockSignal(CS_SMCLK,CS_XT1CLK_SELECT,CS_CLOCK_DIVIDER_1);
    //Set MCLK = DCO with frequency divider of 1
    CS_initClockSignal(CS_MCLK,CS_XT1CLK_SELECT,CS_CLOCK_DIVIDER_1);

    // Configure UART pins
    //Set P1.0 and P1.1 as Secondary Module Function Input.
    /*

     * Select Port 1
     * Set Pin 0, 1 to input with function, (UCA0TXD/UCA0SIMO, UCA0RXD/UCA0SOMI).
     */
    GPIO_setAsPeripheralModuleFunctionInputPin(
        GPIO_PORT_P5,
        GPIO_PIN1 + GPIO_PIN2,
        GPIO_PRIMARY_MODULE_FUNCTION
        );

    /*
     * Disable the GPIO power-on default high-impedance mode to activate
     * previously configured port settings
     */
    PMM_unlockLPM5();

    //Configure UART
    //SMCLK = 1MHz, Baudrate = 115200
    //UCBRx = 8, UCBRFx = 0, UCBRSx = 0xD6, UCOS16 = 0
    EUSCI_A_UART_initParam param = {0};
    param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_ACLK;
    param.clockPrescalar = 3;
    param.firstModReg = 0;
    param.secondModReg = 146;
    param.parity = EUSCI_A_UART_NO_PARITY;
    param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST;
    param.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT;
    param.uartMode = EUSCI_A_UART_MODE;
    param.overSampling = EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION;

    if(STATUS_FAIL == EUSCI_A_UART_init(EUSCI_A0_BASE, &param))
    {
        return;
    }

    EUSCI_A_UART_enable(EUSCI_A0_BASE);

    
    while(1)
    {
        // Load data onto buffer
        EUSCI_A_UART_transmitData(EUSCI_A0_BASE, 'A');
        __delay_cycles(32768);
    }
}

谢谢。

此致,

耶鲁

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

    您好,Yale:

    您能否向我解释预期的计时设置? 您似乎在使用XT1 (32.768kHz)驾驶ACLK,SMCLK和MCLK。 您的注释表明您正在尝试使用SMCLK作为源运行eUSCI (11.52万)。 但是,代码使用ACLK (第54行)作为eUSCI源代码。 ACLK速度低于11.52万,因此这不是有效的设置。

    要以11.52万运行,您需要以比波特率更快的速度运行eUSCI时钟源。 您可以在此处使用波特率计算器: https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/index.html

    此致,

    Evan

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

    您好,Evan:

    感谢你的帮助。

    客户修改代码时没有修改备注(line50-line52)。 因此,实际波特率配置为:

    ACLK = 32.768kHz,波特率= 9600
    UCBRx = 3,UCBRFx = 0,UCBRSx = 146,UCOS16 = 0 (line53-line62)

    他使用的是世界农业项目(WFP 5.1),世界农业项目(WFP 5.2)(UCA0),如第38行至第42行所示。  

    当他直接换至另一个串行端口2.5 ,WFP,2.6 ,UCA1_BASE时,工作正常。

    我没有发现它们之间有什么区别。

    您能帮我看一下吗?

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

    要将P5引脚用于UCA0,您需要设置SYSCFG3:USCIA0RMP [参考数据表(SLASEO7C)表9-11和用户指南(SLAU445I)表1-32]。

    上次我查看时,我没有看到用于执行此操作的driverlib函数,因此请尝试添加:

    > SYSCFG3 |= USCIA0RMP;  //根据DS 表9-11,使用P5引脚作为UCA0

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

    谢谢Bruce,很棒的捕获。

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

    这很好!

    感谢大家的帮助。

    此致,

    耶鲁