大家好、
我对 MSP430控制器有疑问。 我正在使用 msp430fr6922控制器。 我正在尝试使用串行 USB 转 TTL 电缆在 MSP430控制器和 Raspi 之间进行通信。 我为您的参考附上了代码。 UART 在32.768kHz 的 ACLK 上工作、波特率设置为9600。 在接收模式下、有时会丢失数据字节。 原因是什么?
#include "common.h"
int RPI_UART (空)
{
//将 USCI_A0配置为 UART 模式
UCA0CTLW0 = UCSWRST;//将 eUSCI 置于复位状态
UCA0CTLW0 |= UCSSEL_ACLK;// CLK = SMCLK
//波特率计算
// 800000000 /(16*9600)= 52.083
//分数部分= 0.083
//用户指南表21-4:UCBRSx = 0x04
// UCBRFx = int ((52.083-52)*16)= 1.
UCA0BR0 = 3;// 9600波特
UCA0MCTLW |= 0x5300;// 32768/9600 - INT (32768/9600)=0.41
// UCBRSx 值= 0x53 (请参阅 UG)
UCA0BR1=0;
UCA0CTLW0 &=~UCSWRST;//初始化 eUSCI
UCA0IE |= UCRXIE;//启用 USCI_A0 RX 中断
}
#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、USCI_UART_UCTXCPTIFG))
{
USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
while (!(UCA0IFG&UCTXIFG));
RXDATA[p++]=UCA0RXBUF;
如果(RXDATA[0]=0x01)
{
如果(p==3)
{
P=0;
giNewFrameFlag=1;
}
}
其他
{
P=0;
}
中断;
案例 USCI_UART_UCTXIFG:中断;
案例 USCI_UART_UCSTTIFG:中断;
案例 USCI_UART_UCTXCPTIFG:中断;
}
}