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.

[参考译文] MSP430F5438A:IAR 中的 Digole 串行 UART 字符 LCD 显示模块不工作

Guru**** 2587345 points
Other Parts Discussed in Thread: MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1118780/msp430f5438a-digole-serial-uart-character-lcd-display-module-in-iar-not-working

器件型号:MSP430F5438A

我有一个 MSP430F5438A、我正在尝试将半字节发送到20x4 LCD 屏幕、底部是一个 Digole 串行控制模块。 我不需要从 LCD 屏幕接收任何内容、因此 RX 引脚没有连接。 我使用 UART 模式、因为对于该项目、没有可用的 i2c 或 SPI 引脚。 任何帮助都是伟大的,一直在寻找和尝试,不能得到任何东西!!! 代码如下:

#include

int main (空)

WDTCTL = WDTPW+WDTHOLD;//停止看门狗计时器
P7SEL |= 0x03;//端口选择 XT1

操作

UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
__DELAY_CYCLES (100000);// OSC 稳定的延迟
} while (SFRIFG1&OFIFG);//测试振荡器故障标志
P9OUT |= BIT6;          // LED 的电源使能
P9DIR |= BIT6;          // LED 的电源使能
P4OUT = BIT4+BIT4;//针对 LED 输出的 P1.0/1设置
P4DIR |= BIT4+BIT5;//
P3SEL |= BIT4+BIT4;// P3.4、5 UART 选项选择

UCA0CTL1 |= UCSWRST;//**将状态机置于复位状态**
UCA0CTL1 |= UCSSEL_1;// CLK = ACLK
UCA0BR0 = 0x03;// 32k/9600 - 3.41
UCA0BR1 = 0x00;//
UCA0MCTL = 0x06;//调制
UCA0CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
UCA0IE |= UCTXIE + UCRXIE;//启用 USCI_A0 TX/RX 中断

_bis_SR_register (LPM3_bits + GIE);//启用中断后进入 LPM3
__no_operation();//用于调试器


#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=USCI_A0_Vector
_interrupt void USCI_A0_ISR (void)
#Elif Defined (_GNU_)
void __attribute__((中断(USCI_A0_Vector)) USCI_A0_ISR (void)
其他
错误编译器不受支持!
#endif

switch (__evo_in_range (UCA0IV、4))

情况0:中断;//向量0 -无中断
情况2:中断;//向量2 - RXIFG
情况4://向量4 - TXIFG
_DELAY_CYCLES (5000);//在 TX 字节之间添加小间隙
UCA0TXBUF = 0x08;//发送字符
P4OUT ^= BIT4;
中断;
默认值:break;

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

    尊敬的乔治:

    您没有准确指定上述代码的破坏方式。 问题是什么?

    我无法在您的代码中发现任何明显的错误。 您是否曾尝试运行一个简单的示例以查看其是否起作用? 您是否确认 CLKA 按预期运行? 您能否在 ISR 中放置一个 while (1)陷阱以查看是否正在触发?

    此致、

    Evan

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

    您好 Evan、  

    很抱歉、问题是我尝试通过在 TXD BUF 上发送半字节来控制 LED -因此0x01应该清除 LCD 屏幕、0x00应该关闭显示屏。 我的 LCD 屏幕从未改变。|

    ISR 会为 TX 中断触发我有一个板载 LED、因此它会在进入例程中时出现。 我还像你说的那样进行了一个 while 循环、它也发生了火灾。 我不是最好的编码人员、那么如何确认 ACLK 正在工作?  

    感谢您的回复!!!

    谢谢乔治  

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

    尊敬的乔治:

    如果 ISR 正在触发、则 ACLK 正在运行-这很好。 您是否可以访问逻辑分析仪? 最好确定数据是否是由 MSP430生成的。 这将帮助您确定问题所在的位置。

    此致、

    Evan

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

    我有示波器、如果这样做会有问题吗?

    谢谢乔治

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

    可以了。 您能看到 TX 引脚上是否有流量吗?

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

    当连接到示波器时、引脚上有流量

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

    这很好、这意味着 MSP430正在工作。 这似乎是显示屏或与显示屏通信的方式出现的问题。 我将查看显示数据表、以确认您所讨论的格式正确。

    此致、

    Evan