资源简介
NB-IOT模组BC95驱动代码,在STM32平台上测试可用,含相关文档;
代码片段和文件信息
#include “bc95.h“
/**
******************************************************************************
* @file bc95.c
* @author 控远智能科技有限公司
* @version V1.0.0
* @date 2017-8-1
* @brief BC95初始化及测试功能实现函数
******************************************************************************
* @attention
*
*驱动主要基于BC95_check_ack,BC95_send_cmd这两个函数,移植这两个函数,自己可以根据需要实现更多功能
*本驱动是参考正点原子sim900A相关代码修改而得,主要参考修改并实现了BC95_check_ack,BC95_send_cmd这两个函数
*
******************************************************************************
*/
uint8_t check_ack_timeout = 10;
uint8_t ue_exist_flag = 0;
uint8_t ue_need_reboot_flag = 0;
//检查返回的响应是否符合预期
//传入参数为预期返回的字符串
//返回0,为检测到预期值
//其他值,预期字符所在的位置
uint8_t* BC95_check_ack(char *str)
{
char *strx=0;
if(usart2_rcvd_flag)
{
usart2_rcvd_buf[usart2_rcvd_len]=‘\0‘;
strx=strstr((const char*)usart2_rcvd_buf(const char*)str);
}
return (uint8_t*)strx;
}
//发生at指令函数
//cmd:at指令,ack:预期响应,waittime超时时间
//返回0,发送成功
//返回1,发送超时
uint8_t BC95_send_cmd(char *cmdchar *ackuint16_t waittime)
{
uint8_t res=0;
usart2_rcvd_flag=0;
usart2_rcvd_len = 0;
memset(usart2_rcvd_buf0USART2_RX_BUF_LEN);
printf(“%s\r\n“cmd);
if(ack&&waittime)
{
while(--waittime)
{
delay_ms(20);
if(usart2_rcvd_flag)
{
if(BC95_check_ack(ack))break;
usart2_rcvd_flag=0;
}
}
if(waittime==0)res=1;
}
return res;
}
//上电程序,检测模块是否连接,检查配置是否为自动模式,是否为需要的频段
void BC95_power_on(void)
{
//BC95_send_cmd(SET_UE_REBOOT“REBOOT“100);
check_ack_timeout = 10;
ue_exist_flag = 1;
while(BC95_send_cmd(“AT““OK“100)&&check_ack_timeout)
{
if(check_ack_timeout)
{
check_ack_timeout--;
ue_exist_flag = 0;
usart_send_str(USART3“等待模块上电 \r\n“);
}
delay_ms(1000);
}
//判断模块是否是自动连接模式,如果不是则将模块设置成自动模式
if(ue_exist_flag&&!BC95_send_cmd(QUERY_UE_CONNECT_MODE“AUTOCONNECTFALSE“100))
{
check_ack_timeout = 3;
while(check_ack_timeout)
{
check_ack_timeout--;
if(BC95_send_cmd(SET_UE_AUTOCONNECT“OK“100))
{
USARTx_printf(USART3“设置为自动模式成功!\r\n“);
break;
}
delay_ms(1000);
}
ue_need_reboot_flag =1;
}
//判断模块是否是默认设置频段,如果不是则设置成默认频段
if(ue_exist_flag&&BC95_send_cmd(QUERY_UE_BANDUE_DEFAULT_BAND100))
{
BC95_send_cmd(SET_UE_DEFAULT_BANDUE_DEFAULT_BAND100);
USARTx_printf(USART3“设置默认频段!\r\n“);
ue_need_reboot_flag = 1;
}
//重启模块生效配置
if(ue_exist_flag&&ue_need_reboot_flag)
{
ue_need_reboot_flag = 0;
check_ack_timeout = 10;
BC95_send_cmd(SET_UE_REBOOT“REBOOT“100);
USARTx_printf(USART3“重启模块!\r\n“);
while(check_ack_timeout&&!BC95_check_ack(“Neul“))
{
if(BC95_check_ack(“Neul“))
{
break;
}else
{
check_ack_timeout--;
delay_ms(1000);
}
}
}
setLEDs(LED3);
}
//检查模块的网络状态,检测器件LED1会闪烁,LED1常亮为附网注网成功
//此函数不检查联网状态,仅检查附网注网状态,联网状态可以使用BC95_send_cmd,单独检测
//附网注网失败或者超时返回0,返回1附网注网成功,返回2附网成功
uint8_t query_net_st
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7035 2017-08-01 21:35 BC95驱动代码\bc95.c
文件 2015 2017-07-25 23:04 BC95驱动代码\bc95.h
文件 85792 2017-08-01 21:40 BC95驱动代码\nbiot_main_sch.pdf
文件 388 2017-08-01 21:40 BC95驱动代码\readme.txt
文件 110742 2017-08-01 21:40 BC95驱动代码\控远智能BC95测试代码.pdf
目录 0 2017-08-01 21:40 BC95驱动代码\
相关资源
- stm32贪吃蛇游戏程序原子开发板上写的
- STM32F030使用ADC功能的
- stm32 的I2C-DMA实现
- STM32 驱动AD5412
- stm32f10X实现SWD模式四线程序教程
- STM32W108体系结构
- STM32 实现12864液晶屏显示汉字和图片且
- stm32_cjson_demo.rar
- DHT22(AM2302)STM32f103程序
- STM32库函数助手
- STM32F103+ENC28J60+Webserver
- STM32f407ZGT6
- STM32+SHT30(DS18B20)+0.96寸OLED(IIC)的
- 《STM32开发指南》第三十四章 ADXL345三
- STM32的FLASH模拟EEPROM程序,亲测可用
- STM32F103RCT6使用I2C通讯PCF8591数模转换模
- BC95模块代码(For STM8)
- stm32f103c8t6+ESP826 设置为AP模式
- STM32如何通过USB转串口线程序
- STM32F4076路串口DMA发送&接收实验
- 几十个开源的STM32项目.zip
- stm32f10x相关库文件 (包含: stm32f10x
- keil uVision5纯黑背景 keil字体颜色配置
- 芯达STM32 《如何使用SecureCRT串口终端
- STM32F103,4*4矩阵按键
- STM32F103C8T6核心板测试程序(RTC).ra
- FlashTool STM32F103ZET6通过USB串口烧写
- STM32FOC电机控制角度速度计算源代码
- STM32晶振选型-晶振不起振-晶振及负载
- stm32_实现Modbus,采用rtu,内含通信协
评论
共有 条评论