• 大小: 190KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: BC95  STM32  

资源简介

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驱动代码\

评论

共有 条评论