资源简介
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驱动代码\
相关资源
- STM32F103RC+ADC+DMA多通道采样LCD显示
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
评论
共有 条评论