OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4700|回复: 15

关于GPRS模块的使用,继续上一贴

[复制链接]

49

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2015-8-21
在线时间
92 小时
发表于 2017-1-3 19:31:39 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 一个菜鸟 于 2017-1-3 19:36 编辑

昨天的帖子中,关于GPRS是否注册到网络,我查找了AT指令集,

捕获.JPG 捕获.JPG
我就用这个指令写了一个测试函数,/*

*/
u8 check_gprs_sta(void)
{
        u8 sta = 0, res = 3;
        u8 *p;
        u8 time = 0;
        sim800c_send_cmd("ATE0", "OK", 100);
        while(sta!=1)
        {
                UART7_RX_STA = 0;
                if(sim800c_send_cmd("AT+CGREG?", "+CGREG:", 100)==0)
                {
                        p = (u8*)strstr((const char*)(UART7_RX_BUF), ",");
                        *(p+2) = 0;        //加入结束符
                        printf("GPRS网络注册状态%s\r\n", p+1);
                        sta = *(p+1) - '0';
                        if(sta==0)
                        {
                                res = 0;
                                printf("移动设备还没有开始搜索网络\r\n");
                        }
                        else if(sta==2)
                        {
                                res = 2;
                                printf("移动设备正在搜索网络\r\n");
                        }
                }
                delay_ms(500);
                time++;
                if(time==40)
                        break;
        }
        if(time<40)
        {
                res = 1;
                printf("已经注册到网络\r\n");
        }
        return res;
}
但是存在的问题是,执行这段代码的时候,有的时候,发送"AT+CGREG?"会使模块关机,但是有的时候能够正确的执行并检测。



最佳答案

查看完整内容[请看2#楼]

两个方面查,一是检查POWERKEY到底有没有出现不受控制的控制脉冲,二是检查电源是否有被拉低的情况出现,因为开机一瞬间电流比较大,如果电源容量不足就会关机。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

144

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7342
金钱
7342
注册时间
2016-2-6
在线时间
1863 小时
发表于 2017-1-3 19:31:40 | 显示全部楼层
两个方面查,一是检查POWERKEY到底有没有出现不受控制的控制脉冲,二是检查电源是否有被拉低的情况出现,因为开机一瞬间电流比较大,如果电源容量不足就会关机。
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2017-1-3 20:49:25 | 显示全部楼层
硬件仿真下咯!!
回复

使用道具 举报

49

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2015-8-21
在线时间
92 小时
 楼主| 发表于 2017-1-4 09:53:33 | 显示全部楼层
本帖最后由 一个菜鸟 于 2017-1-4 09:55 编辑
FantaSy_ 发表于 2017-1-3 20:49
硬件仿真下咯!!

找到了问题在哪里,但是不知道哪里错了
while(!GPRS_STATUS)
        {
                printf("正在开机,请等待\r\n");
                delay_ms(250);
        }
        printf("模块开机,开始工作\r\n");
错误出在这里,GPRS_STATUS接模块的状态指示引脚,在模块上电工作后输出高电平。

捕获.JPG
但是我觉得时序是没有问题的,一直等待GPRS_STATUS变高,模块进入工作状态。
测试的现象是,使用按键开机后,大概几秒钟的时间,模块关机。
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2017-1-4 10:10:46 | 显示全部楼层
你的PWRKEY输入有没有连续两个低电平???
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2017-1-4 10:13:06 | 显示全部楼层
一般你开机后,然后PWKEY再输入1~3S的低电平就会关机!!!
回复

使用道具 举报

49

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2015-8-21
在线时间
92 小时
 楼主| 发表于 2017-1-4 10:14:48 | 显示全部楼层
FantaSy_ 发表于 2017-1-4 10:13
一般你开机后,然后PWKEY再输入1~3S的低电平就会关机!!!

没有,只有一个低电平。
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2017-1-4 10:15:41 | 显示全部楼层
你测下PWKEY这个引脚!!
回复

使用道具 举报

49

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2015-8-21
在线时间
92 小时
 楼主| 发表于 2017-1-4 10:20:33 | 显示全部楼层
FantaSy_ 发表于 2017-1-4 10:15
你测下PWKEY这个引脚!!

PWR_KEY();        //开机
printf("模块开机,开始工作\r\n");

//while(sim800c_send_cmd("AT", "OK", 100))        //检测是否应答AT指令
//{
//        printf(未检测到模块\r\n");
//        delay_ms(100);
//}
加入这段被注释的代码后就会出现关机的现象,不加的话,没有问题。
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2017-1-4 10:24:20 | 显示全部楼层
你是用原子的SIM800C模块测试吗?
回复

使用道具 举报

49

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2015-8-21
在线时间
92 小时
 楼主| 发表于 2017-1-4 10:25:49 | 显示全部楼层
FantaSy_ 发表于 2017-1-4 10:24
你是用原子的SIM800C模块测试吗?

不是,我自己做的,但是模块也是SIM800C。基础函数都是复制原子哥的
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2017-1-4 10:30:00 | 显示全部楼层
PWR_KEY(); 方便贴这个函数代码看看!
回复

使用道具 举报

49

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2015-8-21
在线时间
92 小时
 楼主| 发表于 2017-1-4 12:26:27 | 显示全部楼层
pbxywyq 发表于 2017-1-4 10:51
两个方面查,一是检查POWERKEY到底有没有出现不受控制的控制脉冲,二是检查电源是否有被拉低的情况出现,因 ...

找到问题了,确实是电源出现了问题。
回复

使用道具 举报

49

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2015-8-21
在线时间
92 小时
 楼主| 发表于 2017-1-4 12:26:51 | 显示全部楼层
FantaSy_ 发表于 2017-1-4 10:30
PWR_KEY(); 方便贴这个函数代码看看!

搞定了,电源的问题,非常感谢。
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2017-1-4 13:00:32 | 显示全部楼层
恭喜恭喜!!
回复

使用道具 举报

49

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2015-8-21
在线时间
92 小时
 楼主| 发表于 2017-1-4 15:49:10 | 显示全部楼层

十分感谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表