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.

[参考译文] MSP430FR2633:UART Tx问题

Guru**** 2595770 points
Other Parts Discussed in Thread: MSP430FR2633

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/638824/msp430fr2633-uart-tx-issue

部件号:MSP430FR2633

您好,

我是MSP430FR2633设备的新成员。 在我的应用程序中,我需要两个UART,因此我选择了它。

现在,我有一个XBee接口,它带有UART引脚的UCA1端口,并且在9600波特上工作。

 从XBee到UART上UC的数据接收完美。但我要从UC发送到Xbee的数据无法实现。 是否有人可以检查我的代码,我是否写的完美?

我还在示波器上,在示波器中看到了我可以看到的Tx和Rx数据。 欢迎提供所有帮助。

INT MAIN (void)

{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器

PM5CTL0 &=~LOCKLPM2; //禁用GPIO开机默认高阻抗模式
//激活1先前配置的端口设置

P2SEL0 |= BIT6 | BIT5; //将2-UART引脚设置为第二个功能

//配置UART
UCA1CTLW0 |= UCSWRST;
UCA1CTLW0 |= UCSSEL__SMCLK; //将ACLK设置为BRCLK

//波特率计算。 已参阅UG 17.3 10
//(1) N=3.2768万/4800=OS16//
(2)4800(2) 6.827 16=0,UCBRx=INT(N)=6
//(4)分次部分= 0.827。 已参阅UG表17-4,UCBRSx=0xEE。
UCA1BR0 = 6; // INT (3.2768万/4800)4800)
UCA1BR1 = 0x00;
UCA1MCTLW = 0x2000 | UCOS16 | UCBRF_8;

UCA1CTLW0 &=~UCSWRST; //初始化eUSCI
UCA1IE |= UCRXIE; //启用USI_A0 RX中断

//__bis_sr_register (GIE); //输入LPM3,中断启用


时间(1)
{


	__bis_sr_register (LPM0_bits | GIE); //输入LPM3,中断启用

}


#pragma vector=USI_A1_vector
__interrupt void USI_A1_ISR(void)
{
SWITCH(__偶 数_in_range(UCA1IV,USI_UTT_UCTXCPTIFG))){

案例USI_NONE:中断;
案例USI_UART_UCRXIFG:
{
UART_received_frame();
}
//UCA0IE &=~UCTXIE;
中断;
案例USI_UART_UCTXIFG:
{
Trasnmit_Frame();

}
UCA1IE |= UCRXIE;
中断;
案例USI_UART_UCSTIFG:中断;
案例USI_UART_UCTXCPTIFG:中断;
默认值:break;
}
}


void Trasnmit_Frame()
{
UCA1TXBUF = Send_Data[pointer++];
if (pointer > 18)
{
UCA1IE &=~UCTXIE;
指针=0;
读数= 0;
校验和=0;

}
} 

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

    首先,为了澄清,您说的是您可以在振荡器上看到正确传输的数据? 如果是这种情况,则问题出在Xbee,因为MSP430将正确地传输数据。 但是,看着您的代码,我看不到您在哪里启用TX中断。 如果是这种情况,您将永远不会在ISR中找到该案例,并且永远不会调用Transmit_Frame,因此不会发送任何数据。

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

    是的,我可以在示波器上看到正确的数据。
    在代码中启用传输中断后,程序计数器将转到ISR并成功地将其卸载。 但最后我没有得到关于Xbee的数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    我很高兴启用TX中断可以正确访问您的ISR。 由于MSP正在发送TX线路上的正确数据,因此问题在于Xbee由于任何原因未收到数据。 您需要在该设备上调试程序。

    此致,
    Nathan