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.

[参考译文] EVM430-CAPMINI:修改 UART 通信

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1421770/evm430-capmini-modifying-uart-communication

器件型号:EVM430-CAPMINI
主题中讨论的其他器件: MSP430FR2512、MSP430FR2422 、CAPTIVATE-FR2633

工具与软件:

我将尝试通过 UART 与外部模块进行通信。 我有一个 EVM430-CAPMINI、而我正尝试从 EVM430-CAPMINI_Demo 示例开始、因为我想使用评估板的 CAPTIVATE 部分。 通过使用 Analog Discovery 3 (AD3)、我可以看到从 J3的引脚2 (对应 FR2512_TXD)中已经发送了很多数据(我猜是发送到 CapTIvate 设计中心进行实时更新)、我不需要这些数据。

简要回顾 这个示例、我找不到 UART 数据通信的发送地址。 为了尝试查明这一点、我已从一个较小的示例开始、a UART echo found at MSP430FR2512 > Peripheral Examples > Register Level > msp430fr2422_euscia0_uart_01.c 我意识到这不是正确的 MCU、所以在进行一些初步故障排除后、我按照 Bruce McKenney47378所述的修改进行了如下  操作:e2e.ti.com/.../ccs-msp430fr2512-msp430-uart-sample-code、它工作正常、使用 AD3、我可以看到回声正常工作。

回到 EVM430-CAPMINI_Demo、我可以看到一些通信正在由 CAPT_appHandler 处理、但我甚至可以修改的内容仍然令人困惑。 我应该使用 EV430-CAPMINI 消除此通信并将我自己的 UART 放置在 MSP430FR2512上吗?还是只能由 CapTIvate 设计中心使用?

如果我能够修改 UART 通信、我应该修改什么、或者应该从什么示例/教程开始?如果我想保留 CapTIvate 功能?

提前感谢

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

    尊敬的 Albert:

    我相信您只需按如下所示修改 CAPT_UserConfig.h:

    下一个取消注释 UART_Definitions.h 中的第69行并设置 = e (true)

    然后、在代码中的某个位置复制此代码、并通过从代码中此处所示的表中选择波特率来填充此代码。

    /*
     * The host_interface_uart module re-uses the driverlib code and structures used
     * for Captivate to GUI interface.
     */
    //*****************************************************************************
    //! def UART_SAMPLING_MODE defines the eUSCI_A LF or HF mode.
    //! def UART_PRESCALER defines the eUSCI_A pre-scaler.
    //! def UART_FIRST_STAGE_MOD defines the eUSCI_A first stage modulation.
    //! def UART_SECOND_STAGE_MOD defines the eUSCI_A second stage modulation.
    //*****************************************************************************
    // Assumes SMCLK = 2MHZ
    #define BAUD_19200
    
    #ifdef BAUD_9600
    // EUSCI runs @ 9600
    #define UART_SAMPLING_MODE    (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                              (13)
    #define UART_FIRST_STAGE_MOD                                        (0)
    #define UART_SECOND_STAGE_MOD                                       (69)
    
    #elif defined BAUD_19200
    // EUSCI runs @ 19.2K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (6)
    #define UART_FIRST_STAGE_MOD                                          (8)
    #define UART_SECOND_STAGE_MOD                                         (17)
    
    #elif defined BAUD_38400
    // EUSCI runs @ 38.4K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (3)
    #define UART_FIRST_STAGE_MOD                                          (4)
    #define UART_SECOND_STAGE_MOD                                         (4)
    
    #elif defined BAUD_57600
    // EUSCI runs @ 57.6K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (2)
    #define UART_FIRST_STAGE_MOD                                          (2)
    #define UART_SECOND_STAGE_MOD                                         (187)
    
    #elif defined BAUD_115200
    // EUSCI runs @ 115.2K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (17)
    #define UART_FIRST_STAGE_MOD                                          (0)
    #define UART_SECOND_STAGE_MOD                                         (74)
    
    #elif defined BAUD_230400
    // EUSCI runs @ 230.4K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (8)
    #define UART_FIRST_STAGE_MOD                                          (0)
    #define UART_SECOND_STAGE_MOD                                         (214)
    
    #elif defined BAUD_250000
    // EUSCI runs @ 250K
    #define UART_SAMPLING_MODE      (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION)
    #define UART_PRESCALER                                                (8)
    #define UART_FIRST_STAGE_MOD                                          (0)
    #define UART_SECOND_STAGE_MOD                                         (0)
    
    #else
    #warning "NO BAUD RATE SELECTED"
    #endif
    
    /*
     * CREATE A LOCAL INSTANCE OF UART PARAMETERS
     * REFER TO TRACKPAD_DEMO.H FOR DEFINITIONS
     */
    static const tUARTPort appUARTPort =
    {
        .pbReceiveCallback = NULL,
        .pbErrorCallback = 0,
        .peripheralParameters.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK,
        .peripheralParameters.clockPrescalar = UART_PRESCALER,
        .peripheralParameters.firstModReg = UART_FIRST_STAGE_MOD,
        .peripheralParameters.secondModReg = UART_SECOND_STAGE_MOD,
        .peripheralParameters.parity = EUSCI_A_UART_NO_PARITY,
        .peripheralParameters.msborLsbFirst = EUSCI_A_UART_LSB_FIRST,
        .peripheralParameters.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT,
        .peripheralParameters.uartMode = EUSCI_A_UART_MODE,
        .peripheralParameters.overSampling = UART_SAMPLING_MODE
    };
    #endif
    
    
    
    
    UART_openPort(&appUARTPort);

    最后、调用以启用 UART -> UART_openPort (&appUARTPort);

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

    太好了、我没想到 CapTIvate 这么简单。 我能够在 FR2633-backchannel_UART-Demo 上使用 UART 部分、因为我们还有 CAPTIVATE-FR2633、因此我需要尝试该部分。 如果有任何问题、则不需要第85行上的"#endif"、或者如果需要、则删除了起始符#ifdef。

    是否有任何教程说明 CapTIvate 的代码结构或如何执行此类修改? 作为初次用户、它可能有助于更快地找出我能做什么或不能做什么。

    编辑:我已经看了这本指南: https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/CapTIvate_Design_Center latest/exports/docs/users_guide/html/CaptT Ivate_Technology_Guide_ 307/markdown/ ch_workshop.html ,特别是在"第一部分- CapTIvate 触摸库概述"后面的一个。

    按照之前的指南,我已经被引导到 https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/CapTIvate_Design_Center latest/exports/docs/users_guide/html/Captt Ivate_Technology_Guide_ markdown/ ch_library.html

    我相信我的教程正确、但如果我错过了任何教程、他们将不胜感激。


    谢谢!

    Albert