打印

msp430的rs485串口通信问题

[复制链接]
1937|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Erichk|  楼主 | 2017-8-26 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <msp430x14x.h>


//                   系统时钟初始化,外部8M晶振
void Clock_Init()
{
  uchar i;
  BCSCTL1&=~XT2OFF;                 //打开XT2振荡器
  BCSCTL2|=SELM1+SELS;              //MCLK为8MHZ,SMCLK为8MHZ
  do{
    IFG1&=~OFIFG;                   //清楚振荡器错误标志
    for(i=0;i<100;i++)
       _NOP();
  }
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待
  IFG1&=~OFIFG;
}
//*************************************************************************
//               MSP430串口初始化
//*************************************************************************
void UART_Init()
{
  P5DIR |= BIT2;                        //P52口为RS485控制口,输出模式
  P5OUT &= ~BIT2   ;                  //置低P52  RS485接收状态

  P3SEL|= BIT6 + BIT7;                //设置IO口为第二功能模式,启用UART功能
  U1CTL|=SWRST + CHAR;                //复位SWRST,8位数据模式
  U1TCTL|=SSEL1;                      //SMCLK为串口时钟
  U1BR1=0x00;                       
  U1BR0=0x03;                       
  U1MCTL=0x4A;                        //波特率9600bps
  ME2|=UTXE1;                         //UART1发送使能
  ME2|=URXE1;                         //UART1接收使能
  U1CTL&=~SWRST;
  IE2|=URXIE1;                        //打开接收中断  
}
//*************************************************************************
//           主函数
//*************************************************************************
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
  Clock_Init();                       //系统时钟设置
  UART_Init();                        //串口设置初始化
  for (;;)
  {
  _BIS_SR(LPM3_bits + GIE);       //  进入 LPM3 模式/允许总中断
  while (!(IFG2 & UTXIFG1));       // USART0 发送缓冲器是否准备?
    P5OUT |= BIT2 ;                //  使发送   
    U1TXBUF = U1RXBUF;            //  从接收缓冲器写入发送缓冲器
    delay_ms(5);
   P5OUT &= ~BIT2 ;              // 使接收
  }
}

// UART1 接收中断将从 LPM3 模式退出
#pragma vector=UART1RX_VECTOR
__interrupt void usart1_rx (void)
{
  _BIC_SR_IRQ(LPM3_bits);                                      //  退出 LPM3

}

串口调试助手始终收不到数据  求教!

相关帖子

沙发
迪卡| | 2017-8-26 10:44 | 只看该作者
上逻辑分析 仪,判断MAX485输入端的信号是否正确,再排查原因。

使用特权

评论回复
板凳
冰河w| | 2017-8-26 10:57 | 只看该作者
RS485的传输速率多大的?

使用特权

评论回复
地板
Thorald| | 2017-8-26 11:23 | 只看该作者
程序看上去没有什么问题,大概逻辑是430收到串口数据之后将其原封不动发回去。

使用特权

评论回复
5
Bjorn| | 2017-8-26 16:08 | 只看该作者
需要确定是串口有没有收到数据,是没有数据传过来还是已经发回了,但是在485端没有收到

使用特权

评论回复
6
Rollo| | 2017-8-26 16:20 | 只看该作者
先分析你的UART运转正常不正常嘛,测试要一步步来不要以为一下子搞的定

使用特权

评论回复
7
gujiamao12345| | 2017-8-26 19:11 | 只看该作者
问题描述清楚呢?
就上一段代码有什么用呀。

使用特权

评论回复
8
aspoke| | 2017-8-26 22:37 | 只看该作者
波特率是否一致?

使用特权

评论回复
9
232321122| | 2017-8-26 22:37 | 只看该作者
这个共地了吗?

使用特权

评论回复
10
ghuca| | 2017-8-26 22:38 | 只看该作者
哪个收到数据有问题

使用特权

评论回复
11
soodesyt| | 2017-8-26 22:38 | 只看该作者
rs485握手信号呢。

使用特权

评论回复
12
mnynt121| | 2017-8-26 22:39 | 只看该作者
串口调试助手接收什么信号?

使用特权

评论回复
13
plsbackup| | 2017-8-26 22:39 | 只看该作者
这个不是串口吗?

使用特权

评论回复
14
kmzuaz| | 2017-8-26 22:39 | 只看该作者
检查电平信号是否存在。

使用特权

评论回复
15
qiufengsd| | 2017-8-26 22:40 | 只看该作者
最好能够通过逻辑分析分析数据。

使用特权

评论回复
16
wengh2016| | 2017-8-26 22:40 | 只看该作者
波特率设置正确了吗

使用特权

评论回复
17
aspoke| | 2017-8-26 22:40 | 只看该作者
传输输出的频率需要一致

使用特权

评论回复
18
232321122| | 2017-8-26 22:40 | 只看该作者
共地之后才能保证信号的基准。

使用特权

评论回复
19
ghuca| | 2017-8-26 22:41 | 只看该作者
发送信号是否发送开了。

使用特权

评论回复
20
soodesyt| | 2017-8-26 22:41 | 只看该作者
rs485的通信协议重新看看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

500

帖子

0

粉丝