MSP430F5438A的串口通讯问题

2019-03-24 09:47发布

使用了5438A的P3.4,5; P5.6,7; P9.4,5; P10.4,5来作为串口通讯,其中P3,P5,P9为232,P3和P5使用一个232芯片,P9使用另外一个,这一个232芯片有一个232接口是悬空的,在调试过程中,P3,P5的串口通讯正常,同样的设置,在P9这个串口就不行了,没有数据收回。
测量了P9232接口的电压,TXD为-5.6V,RXD与GND都为0V,并且试了下P9.4,P9.5这俩个IO口的输出,高电平都为3.3V,低电平一个为0V一个为0.3V,不知道会不会有影响
具体测试程序与设置如下:
//串口2初始化
void UART1_Init()
{
  P5SEL |= 0xc0;                             // P3.4,5 = USCI_A0 TXD/RXD
  UCA1CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA1CTL1 |= UCSSEL_2;                     // SMCLK
  UCA1BR0 = 104;                              // 1MHz 9600 (see User's Guide)
  UCA1BR1 = 0;                              // 1MHz 9600
  UCA1MCTL |= 0x02;            // Modulation UCBRSx=1, UCBRFx=0
  UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA1IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt
}
//串口3初始化
void UART2_Init()
{
  P9SEL |= 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
  UCA2CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA2CTL1 |= UCSSEL_2;                     // SMCLK
  UCA2BR0 = 104;                              // 1MHz 9600 (see User's Guide)
  UCA2BR1 = 0;                              // 1MHz 9600
  UCA2MCTL |= 0x02;            // Modulation UCBRSx=1, UCBRFx=0
  UCA2CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA2IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt
}

//串口2中断程序
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
//unsigned char data=0;
  switch(__even_in_range(UCA1IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG

   while (!(UCA1IFG&UCTXIFG));             // USCI_A1 TX buffer ready?

   UCA1TXBUF = UCA1RXBUF;                  // TX -> RXed character
   //Send_Byte(data);
   break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;
  }
}
//串口3中断程序
#pragma vector=USCI_A2_VECTOR
__interrupt void USCI_A2_ISR(void)
{
//unsigned char data=0;
  switch(__even_in_range(UCA2IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG
   while (!(UCA2IFG&UCTXIFG));             // USCI_A1 TX buffer ready?
   UCA2TXBUF = UCA2RXBUF;                  // TX -> RXed character
   //Send_Byte(data);
   break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;
  }
}
通过IAR仿真软件看寄存器的设置是完全一样的,打是串口2就能通讯,串口3就收不到。还望大家帮忙看看,问题会出在哪里。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
wstt
1楼-- · 2019-03-24 10:19
 精彩回答 2  元偷偷看……
zh2244ou
2楼-- · 2019-03-24 14:40
< :TI_MSP430_内容页_SA7 --> 我换了块232芯片,但是没有效果,跟之前的一样没有反应。
zh2244ou
3楼-- · 2019-03-24 17:24
重新焊了块调试板,结果3个串口通讯都正常,返回来重新给这块板子换了5438A芯片,结果不行,再换串口3的周边电容,结果还是不行,目前怀疑布局可能有问题了,导致信号会出现干扰,造成通讯不正常。
wstt
4楼-- · 2019-03-24 20:22
 精彩回答 2  元偷偷看……
zh2244ou
5楼-- · 2019-03-24 20:54
重新焊了块板子,通讯正常,最后才发现原来是串口接口虚焊了。虽然电压测量的时候也有。
zmsli
6楼-- · 2019-03-24 21:49
注意检查硬件引脚的连接,TXD与RXD的连接是否正确。

一周热门 更多>

相关问题

    相关文章