You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSP芯片配套Digole 2004A LCD上电循环卡滞UART Baud:9600求助

问题描述

使用MSP系列芯片搭配Digole 2004A显示屏(UART RX/TXD模式),通过IAR Embedded Workbench编写C代码实现LCD消息输出。多数场景下显示正常,但上电循环后,屏幕会卡滞在“UART Baud: 9600”界面,怀疑LCD初始化环节存在遗漏,附上当前初始化代码:

P3SEL = 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
UCA0BR0 = 0x03;                           // 32kHz/9600=3.41 (see User's Guide)
UCA0BR1 = 0x00;                           //
UCA0MCTL = UCBRS_3+UCBRF_0;               // Modulation UCBRSx=3, UCBRFx=0
UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
UCA0IE |= UCRXIE;

Digole_setLCDColRow(20,4);
Digole_disableCursor();
__delay_cycles(1000);
Digole_clearScreen();
__delay_cycles(1000);
Digole_setPrintPos(0,0,0);
Digole_printStr("PFA Error Messages");
__delay_cycles(1000);
解决建议

卡滞在波特率提示界面的核心原因是Digole UART屏上电后会等待主机发送波特率确认指令,否则会一直停留在提示界面,结合你的代码给出以下修改点:

  • 添加波特率确认步骤:Digole 2004A上电输出波特率提示后,必须发送指令0xBA让屏退出提示模式,进入正常显示状态。如果你的Digole库有封装好的函数(比如Digole_confirmBaudRate()),直接调用即可;没有的话手动发送该指令。
  • 延长上电延迟时间:当前__delay_cycles(1000)仅约31ms(基于32kHz ACLK),远短于Digole屏的上电自检时间(建议至少500ms),需增加初始化前的延迟,比如__delay_cycles(160000)。
  • 调整指令间延迟:原代码中指令间隔的1000周期延迟太短,可能导致LCD未处理完前一条指令就收到新指令,引发异常,建议延长至10000~20000周期。
  • 暂关接收中断:初始化阶段开启UCRXIE但未处理中断服务函数的话,可能触发中断导致程序流程异常,建议初始化完成后再开启接收中断。
修改后的初始化代码示例
P3SEL = 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
UCA0BR0 = 0x03;                           // 32kHz/9600=3.41 (see User's Guide)
UCA0BR1 = 0x00;                           //
UCA0MCTL = UCBRS_3+UCBRF_0;               // Modulation UCBRSx=3, UCBRFx=0
UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
// 初始化阶段暂关接收中断,避免干扰
// UCA0IE |= UCRXIE;

// 等待LCD完成上电自检,32kHz下约500ms
__delay_cycles(160000);

// 发送波特率确认指令,退出提示界面
Digole_confirmBaudRate(); // 若库无此函数,可替换为直接发送0xBA的代码

Digole_setLCDColRow(20,4);
__delay_cycles(10000);
Digole_disableCursor();
__delay_cycles(10000);
Digole_clearScreen();
__delay_cycles(20000); // 清屏操作需要更长处理时间
Digole_setPrintPos(0,0,0);
Digole_printStr("PFA Error Messages");
__delay_cycles(10000);

// 初始化完成后开启接收中断
UCA0IE |= UCRXIE;

内容的提问来源于stack exchange,提问作者Georgem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:10:39