主题中讨论的其他器件:MSP430F6779、 MSP430F6749、 MSP430F67491、 MSP430F67791、 MSP430F47197、 MSP430F4794、 MSP430AFE252、 MSP430AFE253、 MSP430AFE251
工具/软件:Code Composer Studio
尊敬的 TI 团队:
我们已经使用了 EVM430F6736能量计。 在 UART 通信中、将数据发送到其他器件工作正常。 但在接收器部分、仍然无法正常工作。 接收器中断标志未启用。
其中、下面提到了我们的串行初始化(波特率= 115200或9600、8位数据、模式= 1)。
/*我们在迄今为止所做的工作中只需要两种串行字符模式。
目前仅支持这些功能*/
如果(MODE = 0)
{
/* 7位字符、偶校验*/
#if defined (__MSP430_has _UART0__)
ctl0 = Pena | PEV | SWRST;
其他
ctl0 = UC7BIT | UCPEN;
#endif
}
其他
{
/* 8位字符、无奇偶校验*/
#if defined (__MSP430_has _UART0__)
ctl0 = char | SWRST;
其他
ctl0 = 0;
#endif
}
/*使用 ACLK 以实现慢速比特率。 对于更高的比特率、请使用 SMCLK *
if (bit_rate <= 4800L)
{
bitrate 分频器=(32768L*16L)/bit_rate;
#if defined (__MSP430_has _UART0__)
ctl1 = SSEL0; /* ACLK */
其他
ctl1 = UCSSEL_1 | UCSWRST; // ACLK *
#endif
}
其他
{
#if defined (__MSP430F6736__) || defined (__MSP430F6749__) || defined (__MSP430F67791__) || defined (__MSP430F6779__) || defined (__MSP430F67491__)
/* 24MHz 时钟*/
bitrate 分频器=(32768L*768L*16L)/bit_rate;
#elif defined (__MSP430F4794__) || defineed (__MSP430F47197__)
/* 16MHz 时钟*/
bitrate 分频器=(32768L*512L*16L)/bit_rate;
#elif defined (__MSP430AFE251__) || define(__MSP430AFE252__) || define(__MSP430AFE253__)
/*恰好为8MHz 的时钟*/
bitrate 分频器=(8000000L*16L)/bit_rate;
其他
/* 8MHz 时钟*
bitrate 分频器=(32768L*256L*16L)/bit_rate;
#endif
#if defined (__MSP430_has _UART0__)
ctl1 = SSEL1; /* SMCLK */
其他
ctl1 = UCSSEL_2 | UCSWRST; // SMCLK *
#endif
}
bitrate 分频器++;
#if defined (__MSP430_HART_EUSCI_A0__) || defined (__MSP430_HART_UART0__)
mctl =(bitRATE_DEVIDER & 0x0E)>> 1;
mctl = mod_patters[mctl];
其他
mctl = bitRATE_DEVIDER & 0x0E;
#endif
bitrate 分频器>=4;
#if!defined (_MSP430_has _EUSCI_A0__)
BR1 = bitrate_divider >> 8;
br0 = bitrate_divider;
#endif
交换机(端口)
{
如果已定义#if (UART_0_support)
情况0:
#if defined (__MSP430_has _USCI_AB0__) || defined (__MSP430_has _USCI_A0__) || defined (__MSP430_has _EUSCI_A0__)
/*将端口配置为保持高电平的 RESET 位*/
UCA0CTL1 |= UCSWRST;
UCA0CTL0 = ctl0;
UCA0CTL1 = ctl1;
#if 已定义(_MSP430_has _EUSCI_A0__)
UCA0BRW = bitrate_divider;
UCA0MCTLW =((uint16_t) mctl << 8);
其他
UCA0BR1=BR1;
UCA0BR0 = br0;
UCA0MCTL = mctl;
UCA0STAT = 0;
#endif
UCA0TXBUF = 0;
UCA0CTL1 &=~UCSWRST;
如果已定义#if (UART_0_DMA_support)
//DMACTL0 |=(DMA1TSEL_3 | DMA2TSEL_4);
#endif
#if defined (__MSP430_has _USCI_AB0__)
UC0IE |= UCA0RXIE;
其他
UCA0IE |= UCRXIE;
#endif
#Elif defined (_MSP430_has _UART0__)
UCTL0 = ctl0;
UTCTL0 = ctl1;
UBR10 = BR1;
UBR00 = br0;
UMCTL0 = mctl;
UCTL0 &=~SWRST;
/*启用 USART0 TXD/RXD */
U0ME |=(UTXE0 | URXE0);
U0IE |= URXIE0;
/*如果最初不启动 Tx 端口、TXEPT 位将不会置位。 *
TXBUF0 = 0;
#endif
返回0;
请提出任何建议。
此致、
Anitha.L