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.

[参考译文] MSP430I2040:修改 EMDC 代码后 COM 端口(串行端口)不工作

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1022183/msp430i2040-com-port-serial-port-not-working-after-modifying-emdc-code

器件型号:MSP430I2040
主题中讨论的其他器件:MSP430F5529MSP-ISOEVM430-I2040SMSP-FET

您好!

我已将 MSP430I2040S EVM 连接到隔离板、并将其连接到 HID 桥(MSP430F5529)。

我尝试并能够使用 EMDC GUI 来查看电压、电流值。

然后、我修改了代码并添加了一小段代码以写入串行端口:

空 EMLibGUIApp_Engine (空)


/*开始电能测量--主循环*/
while (1)

Com_writeBuffer ("GET_IT"、7);

// EM Lib 前景过程
em_foregroundProc (&gemResultStatus);

HMI_stateMachine (gemResultStatus);

我还修改了代码以更改 COM 端口协议。 (仅供参考)

COMM_writeBuffer 无法正常工作、我无法在笔记本电脑上的 Putty (终端)上获取任何打印。 我已将 笔记本电脑上的 Putty 连接到9600、N、8、1的波特率。 我还尝试了波特率115200、N、8、1。  但是我的笔记本电脑上没有打印任何照片(PuTTy)。

我检查并完成了 COM 设置:

void HMI_Init (void)

//初始化命令处理程序以与 GUI 进行通信
CommandHandler_setApplicationVersion (
COMMAND_DEVICE_TYPE_i2041、
COMMAND_OTER_firmware_ID_0001);

//初始化通信
COMM_setup();
// CommandHandler_registerCmd Listeners();
DC_User_Params = CommandHandler_getUserParamsPtr ();
gHMI = HMI_State_Idle;
#ifdef ENABLE_LCD
Results_Reset (LPH);
#endif

我在笔记本电脑末端使用 COM 端口9 我还尝试了作为调试端口的 COM8、但两者都不显示任何打印内容。

请告诉我、我犯了什么错误。

谢谢、此致、

Rajkumar

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

    您好!

    在对 UART 波特率进行任何更改之前、我将确保通信在默认的250kbaud 速率下工作。 此外、不要将 USB HID 桥与终端配合使用。 如果您希望以这种方式发送和接收、则可以断开隔离板和 HID 板的连接、只需连接板载隔离式 RS232端口即可。 您将需要一个 USB 转 RS232适配器、这是 CDC USB 设备、它应在 Windows 设备管理器下显示为 COM 端口。

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

    尊敬的 James:

    我仍然面临这一问题。

    我尝试使用 RS232接口、但笔记本电脑上的串行终端上没有任何内容。

    我尝试使用示例 UART 回显程序、并尝试使用 MSP430I2040至 MSP-ISO 至 MSP430F5529 (HID 桥接器)。 在这里,我没有在程序中使用 system_pre_init()。

    我在笔记本电脑上使用了 realterm。 使用9600波特率时、我看到每当我从 PC 传输某些内容时、我会在终端上返回一些回声、但它似乎是一些其他字符。 但是、只要我尝试发送字符、相同的字符就会不断得到回显。 打印的字符集始终相同。

    我在这2个项目中所做的工作是否有问题?

    我最终需要提高 EMDC、因为它具有能量值。 请告诉我在这两个项目中都可能出现问题的地方。

    请帮助。

    此致、

    Rajkumar

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

    尊敬的 James:

    您能不能给出一些指示。 我有一个截止日期。 谢谢。

    此致、

    Rajkumar

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

    您好!

    您同时有两个主题稍有不同的主题。 现在让我们重点讨论 另一个。

    MSP430I2040:在结果下显示空白值的 EMDC

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

    尊敬的 James:

    我们现在能否查看该主题。 谢谢。

    更新:我尝试了 UART echo 程序、该程序回显 Tx 线路上的字符。 本使用以(9600、N、8、1)波特率运行。

    但是当我尝试这个程序时、我会在笔记本电脑的 COM 端口上看到一些其他字符。 当我发送'A'时、我返回一些其他字符。

    (我使用的是带 USB 转串行电缆的 DB9连接器、以连接到 PC。)

    您能告诉我可能会发生什么错误吗?

    这是 UART 回波程序:

    (小部分

    #include "msp430.h"
    
    void main(void) {
    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
    
    P1SEL0 |= BIT2 | BIT3; // P1.2/3 eUSCI_A Function
    P1SEL1 &= ~(BIT2 | BIT3);
    
    UCA0CTL1 |= UCSWRST; // Hold eUSCI in reset
    UCA0CTL1 |= UCSSEL_2; // SMCLK
    UCA0BR0 = 0xAA; // 9600 baud
    UCA0BR1 = 0x06;
    UCA0MCTLW = 0xD600; // 16.384MHz/9600 = 1706.6667 (See UG)
    UCA0CTL1 &= ~UCSWRST; // Release from reset
    UCA0IE |= UCRXIE; // Enable RX interrupt
    
    __bis_SR_register(LPM0_bits | GIE); // Enter LPM0
    __no_operation(); // For debugger
    
    
    UCA0TXBUF='H';
    UCA0TXBUF='e';
    UCA0TXBUF='l';
    UCA0TXBUF='l';
    UCA0TXBUF='o';
    UCA0TXBUF=' ';
    UCA0TXBUF='u';
    UCA0TXBUF='p';
    UCA0TXBUF='\n';
    
    
    
    
    }
    
    // Echo back RXed character, confirm TX buffer is ready first
    #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    #pragma vector=USCI_A0_VECTOR
    __interrupt void USCI_A0_ISR(void)
    #elif defined(__GNUC__)
    void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
    #else
    #error Compiler not supported!
    #endif
    {
    switch(__even_in_range(UCA0IV,USCI_UART_UCTXCPTIFG)) {
    case USCI_NONE: break;
    case USCI_UART_UCRXIFG:
    while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?
    UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
    break;
    case USCI_UART_UCTXIFG: break;
    case USCI_UART_UCSTTIFG: break;
    case USCI_UART_UCTXCPTIFG: break;
    default: break;
    }
    }

    (三

    谢谢、此致、

    Rajkumar

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

    发布代码时、请使用"插入">"代码">" C "选项以提高可读性。 我已相应更新您的最新回复。

    我在  EVM430-i2040S 上使用了 msp430i20xx_euscia0_UART_01.c 代码示例、运行正常。 在 CCS 中对 EVM 进行编程后、我停止了调试会话并对电路板进行下电上电。 然后、我将 RS232转 USB 适配器连接到 PC 和 EVM 的 RS232端口。 为该适配器的 COM 端口打开一个终端并设置波特率后、我键入的任何内容都显示为回显。

    使用 MSP-FET 作为电源时、确保 J8设置为1-2。 确保选择正确的 COM 端口。