打印

不返回数据给430

[复制链接]
1344|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyjie|  楼主 | 2017-5-13 21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个小程序,发送一个GSM的命令,然后GSM收到的话回返回数据的。可是GSM不返回。一开始我以为是电平问题,接了一块74ls244,再送给GSM。我确认通过74ls244后能数据能通过的,因为我接了USB转TTL的小板,串口调试助手收到了。
        一个奇怪的现象是,USB转TTL发命令给GSM,让GSM返回数据到430,430收得到。但是430发数据给GSM,GSM不知道是收不到还是4什么原因,不返回数据给430

相关帖子

沙发
wuhany| | 2017-5-13 21:26 | 只看该作者

系统移植也不那么容易吧,不过裸跑肯定难度不小。

使用特权

评论回复
板凳
lizye| | 2017-5-13 22:13 | 只看该作者
430收不到?

使用特权

评论回复
地板
wyjie|  楼主 | 2017-5-13 22:15 | 只看该作者

不知道啊,用串口调试助手发给GSM,GSM也不返回。

使用特权

评论回复
5
wyjie|  楼主 | 2017-5-13 22:17 | 只看该作者

但是,同样用51通过GSM模块引出的串口,51和GSM是可以通信的。

使用特权

评论回复
6
zhanghqi| | 2017-5-13 22:20 | 只看该作者
程序的问题,还是电路的问题

使用特权

评论回复
7
jlyuan| | 2017-5-13 22:21 | 只看该作者

把程序贴上来看看吧

使用特权

评论回复
8
wyjie|  楼主 | 2017-5-13 22:23 | 只看该作者
#include<msp430g2553.h>
#define uint unsigned int
#define uchar unsigned char

#define MAXCHAR 20
uchar  aa[MAXCHAR];
uchar j=0;

uchar  ATE0[]="ATE0\r\n" ;                        //关闭回显一个\n 0a(还行符)

void Print_Char(uchar ch)                         //发送单个字节
{
   while (!(IFG2&UCA0TXIFG));            
  UCA0TXBUF = ch;                  
}

void Print_Str(uchar *str)                      //发送字符串
{
   while(*str!='\0')
     {
       Print_Char(*str);
       //__delay_cycles(2000);
       str++;
     }
}

void Ini_UART(void)
{
   P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
   P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
   UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK         ACLK默认外部32K晶振
   UCA0BR0 = 0x03;                           // 32kHz/9600 = 3.41                32k/19200=1.66667
   UCA0BR1 = 0;                           //
   UCA0MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
   IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
   _EINT();
}

#pragma vector=USCIAB0RX_VECTOR                                   //接受中断
__interrupt void USCI0RX_ISR(void)
{
   aa[j]= UCA0RXBUF;//命令存到命令数组
   j++;
}

int main()
{
   WDTCTL = WDTPW + WDTHOLD;                 // Stop
  Ini_UART();
   while(1)
   {
     Print_Str(ATE0);//关闭回显   
     __delay_cycles(1000000);
   //  while(1);
   }
}

使用特权

评论回复
9
wyjie|  楼主 | 2017-5-13 22:26 | 只看该作者
430跟电脑通过USB转TTL是可以通信的。但是GSM通过USB转TTL不能通信。电脑发数据给GSM,由GSM返回数据给430,430能收到。430发数据给GSM,就收不到返回的数据了。

使用特权

评论回复
10
heweibig| | 2017-5-13 22:28 | 只看该作者
电路有问题吗    在你的程序中加入未加入纠错处理机制   电路尽量使用推荐电路来

使用特权

评论回复
11
lizye| | 2017-5-13 22:31 | 只看该作者

首先的看下430单片机的比特率跟TC35的波特率配置是否一致的,这个很关键的,不然,发给模块的指令也是白发的

使用特权

评论回复
12
wyjie|  楼主 | 2017-5-13 22:35 | 只看该作者

波特率没错的,我用51也是9600的波特率

使用特权

评论回复
13
zhanghqi| | 2017-5-13 22:38 | 只看该作者
电平匹配吗    3.3    5.0   有时候加上拉可以的

使用特权

评论回复
14
shimx| | 2017-5-13 22:38 | 只看该作者
或是分压  (下拉)

使用特权

评论回复
15
zhenykun| | 2017-5-13 22:40 | 只看该作者
电平转换问题

GSM通过串口到PC是需要变换为RS232电平才行的

使用特权

评论回复
16
wyjie|  楼主 | 2017-5-13 22:43 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先

使用特权

评论回复
17
kkzz| | 2017-5-13 23:29 | 只看该作者
这个串口的配置的问题吧

使用特权

评论回复
18
minzisc| | 2017-5-13 23:29 | 只看该作者
确认指令正确?

使用特权

评论回复
19
xiaoyaodz| | 2017-5-13 23:29 | 只看该作者
通信的波特率一致吗?

使用特权

评论回复
20
pixhw| | 2017-5-13 23:30 | 只看该作者
这个应该是供电不一致。

使用特权

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

本版积分规则

927

主题

12706

帖子

5

粉丝