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.

[参考译文] MSP430FR5994:UCA1-问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1086388/msp430fr5994-uca1-problem

部件号:MSP430FR5994
“线程”中讨论的其它部件:MSP-EXP430FR5994

您好,

我的 MSP430 FR5994有问题
我想使用 UCA 1来处理 UART,但我的代码不起作用
同一程序适用于 UCA2和 UCA3,但不适用于 UCA1

UCA1:
void UART_INIT (void){
//配置 GPIO
P2SEL1 &=~(BIT5 | BIT6);
P2SEL0 |=(BIT5 | BIT6);

//为 UART 模式配置 USCI_A3
UCA1CTLW0 = UCSWRST;//重置 eUSCI
UCA1CTLW0 |= UCSSEL__SMCLK;// CLK = SMCLK
UCA1BRW = 8;// 1000000/115200 = 8.68
UCA1MCTLW = 0xD600;// 1000000/115200 - INT (1000000/115200)= 0.68
// UCBRSx 值= 0xD6 (请参阅 UG)
UCA1CTLW0 &=~ UCSWRST;//从重置中释放

UCA1IE |= UCRXIE;//启用 USCI_A1 RX 中断
}

void UART_sendChar (字符){
同时(! (UCA1IFG 和 UCTXIFG);
UCA1TXBUF =字符;
}

UCA2:(它起作用)(当然,这里还有其他传输参数,但对于 UCA1中提到的参数,它也起作用)

void UART_INIT (void){

//为 USCI_A2 UART 配置 GPIO
P5SEL1 &=~(BIT4 | BIT5);
P5SEL0 |=(BIT4 | BIT5);// USCI_A2 UART 操作

//为 SDI12配置 USCI_A2
UCA2CTLW0 |= UCSWRST;//重置 eUSCI
UCA2CTLW0 = 0xD081;// CLK = SMCLK,数据= 7位,奇偶校验=偶数
UCA2BRW =(1000000ul / 1200)+ 1;//波特率= 1200
UCA2MCTLW = 0xD600;  
UCA2CTLW0 &=~UCSWRST;//从重置中释放
}

使 SDI12_sendChar (字符)无效{
While (!(UCA2IFG 和 UCTXIFG));
UCA2TXBUF =字符;
}

当然,UCA2和 UCA3使用其他引脚配置。

我在评估版电路板上试用了此代码:MSP-EXP430FR5994,但也在 PCB 上试用,我使用(64PIN) MSP430FR5994IPM 制作了此代码。 我的 UCA1 UART 在这两种情况下都有问题

谢谢,

Przemysław Zielony

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

    您已颠倒了 PSEL 位所需的设置。 选择计时器功能。

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

    >P2SEL1 &=~(BIT5 | BIT6);
    >P2SEL0 |=(BIT5 | BIT6);

    根据数据表(SLASE54C)表6-25,PSEL1位应为1,PSEL0位为0。 (这与 P5.4等设置相反)。 尝试:

    >P2SEL1 | =  (BIT5 | BIT6);
    >P2SEL0和=~(BIT5 | BIT6);

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

    我不知道怎么会错过它。
    感谢您的回答