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.

[参考译文] CCS/MSP430G2553:非常基本的 UART 传输失败

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/593800/ccs-msp430g2553-very-basic-uart-transmission-failed

器件型号:MSP430G2553
主题中讨论的其他器件:MSP430WARE

工具/软件:Code Composer Studio

大家好、


我对 UART 传输感到非常困惑。 我想我会使它变得非常简单、并正确设置和复位所有必要的设置。 与波特率相对应的波特率也是9600、但我完全没有得到任何东西。 有人能帮我解决这个问题吗? 非常感谢。

#include 

int main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

DCOCTL = CALDCO_16MHz;
BCSCTL1 |= CALBC1_16MHz;

P1DIR |= BIT2;//设置 P1.2 Tx 输出
P1SEL |= BIT1 + BIT2;//选择 P1.1 Rx、P1.2 Tx 到 UART 功能
P1SEL2 |= BIT1 +BIT2;

**置于 UCALL1 | UCA0L | UCAST= UCAST/ UCTL1 | UCAST**状态
//CLK = SMCLK

UCA0BR0 = 130;// N = 16MHz/9600 = 130 + 6*256
UCA0BR1 = 6;
UCA0MCTL |= UCBRF_0 + UCBRS_6;// slau144j.pdf page 425

UCA0CTL1 &=~UCSWRST;//初始化状态机




(**同时为 UCA0G2和 UCBR6);// page 425 UCA0CTL1 &= UCSWRST 缓冲器(**同时为 UCA0TXIFG)
UCA0TXBUF ='A';//设置 TXBUF 会清除 TXIFG 标志
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以及一些调试细节:
    在调试中,似乎代码正在循环中运行“while (!(IFG2 & UCA0TXIFG);”,似乎总是没有设置发送标志。 这使我更加困惑、因为在 slau144j 中、"UCA0TXBUF 为空时置1 UCA0TXIFG "、这意味着在开始时应置1标志、为了确保置1标志、我选择在" UCA0CTL1 &=~UCSWRST "之后添加"IFG2 |= UCA0TXIFG;"。 仍然无法正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当 UART 持续发送时、并不总是能够检测字节的起始位置。 尝试在一些字节之间添加暂停。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Clemens、感谢您的回答、但问题是、我是否应该在 IDE 终端中连续获取 charater "A"? 顺便说一下、示例代码也不起作用、"msp430g2xx3_ucia0_UART_01_960.c"、这是从 MSP430ware 下载的官方示例。

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

    对于任何看到这种情况的人来说、所有设置都非常清晰、正确。 我所遇到的是硬件集上的愚蠢故障、如果您想与 PC 通信、只需将 launchpad 上的跳线更改为 HW UART。 问题得到解决、也感谢您的任何建议。