历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2020年01月29日 | STM32之蓝牙透传模块(迅通科技PTR5518)

2020-01-29 来源:eefocus

一、简介


本文介绍如何使用STM32控制蓝牙透传模块,蓝牙透传模块使用迅通科技的PTR5518。


二、实验平台


库版本:STM32F10x_StdPeriph_Lib_V3.5.0


编译软件:MDK4.53


硬件平台:STM32开发板(主芯片stm32f103c8t6)


仿真器:JLINK


手机型号: 小米4S


安卓版本:安卓5.1


安卓app:BLE Tool


三、版权声明


四、实验前提


1、在进行本文步骤前,请先阅读以下博文:

1)《STM32之蓝牙透传模块(昇润科技)》:http://blog.csdn.net/feilusia/article/details/52838571


2、在进行本文步骤前,请先实现以下博文:


1)《STM32之NVIC》:http://blog.csdn.net/feilusia/article/details/52819709


2)《STM32之串口》:http://blog.csdn.net/feilusia/article/details/52819571

3)《STM32之系统滴答定时器》:http://blog.csdn.net/feilusia/article/details/52835711


五、基础知识

1、本文使用的蓝牙透传模块是什么?


答:本文使用的蓝牙透传模块是迅通科技的PTR5518。


该模块采用NORDIC公司的Cortex-M0内核芯片nRF51822、模块封装尺寸为15.2×15.2mm,并且通过了BQB 认证、 FCC 认证、CE 认证。


2、如何使用该蓝牙透传模块?


答:


1)硬件


使用到的引脚是1(EN:唤醒与睡眠)、2(TX:模块串口发送)、3(RX:模块串口接收)、8(NTF:连接状态查询)、


9(GND:模块地)、10(VCC:模块电源正极1.8~3.6V)、11(REST:模块复位)、13(FLOW:忙闲状态查询)


2)软件


①初始化IO


②复位模块


③唤醒模块


3、PTR5518(讯通科技)与HY-254124 V8(昇润科技)有什么区别?


答:


1)芯片


①PTR5518(讯通科技)


使用的是32bit的Cortex-M0内核芯片nRF51822。


②HY-254124 V8(昇润科技)


使用的是8bit的51内核芯片CC2541。


2)价格


①PTR5518(讯通科技)

②HY-254124 V8(昇润科技)

3)认证


①PTR5518(讯通科技)


通过了蓝牙联盟BQB 认证、美国FCC 认证、欧洲CE 认证。


②HY-254124 V8(昇润科技)


通过了蓝牙联盟BQB 认证。


4)使用


①PTR5518(讯通科技)


上电并配置好IO口即能广播,使用方便。


②HY-254124 V8(昇润科技)


需要AT指令进行配置,使用较繁琐。


六、实验步骤


注:以下为核心代码及步骤,报错及缺少文件的可自行修改、添加。


1、编写并添加串口透传模块驱动


1)编写驱动GUA_BLE_Uart.c(存放在“……HARDWARE”)


//******************************************************************************          

//name:             GUA_BLE_Uart.c          

//introduce:        蓝牙串口透传驱动(讯通科技)   

//author:           甜甜的大香瓜                 

//email:            897503845@qq.com     

//QQ group          香瓜单片机之STM8/STM32(164311667)                  

//changetime:       2017.01.15    

//****************************************************************************** 

#include "stm32f10x.h"

#include "GUA_BLE_Uart.h"

#include "GUA_SysTick.h"

#include "GUA_USART.h"

#include

 

/*********************宏定义************************/ 

//引脚宏定义

//INT

#define GUA_BLE_UART_INT_PORT GPIOA

#define GUA_BLE_UART_INT_PIN GPIO_Pin_6

#define GUA_BLE_UART_INT_MODE GPIO_Mode_IPU

 

//WAKEUP

#define GUA_BLE_UART_WAKEUP_PORT GPIOA

#define GUA_BLE_UART_WAKEUP_PIN GPIO_Pin_5

#define GUA_BLE_UART_WAKEUP_MODE GPIO_Mode_Out_PP

 

//RESET

#define GUA_BLE_UART_RESET_PORT GPIOA

#define GUA_BLE_UART_RESET_PIN GPIO_Pin_0

#define GUA_BLE_UART_RESET_MODE GPIO_Mode_Out_PP

 

//FLOW

#define GUA_BLE_UART_FLOW_PORT GPIOA

#define GUA_BLE_UART_FLOW_PIN GPIO_Pin_10

#define GUA_BLE_UART_FLOW_MODE GPIO_Mode_IPU

 

//低功耗控制宏  

#define GUA_BLE_UART_WAKEUP_STATE_HALT 0

#define GUA_BLE_UART_WAKEUP_STATE_ACTIVE 1

 

/*********************内部函数声明************************/ 

static void GUA_BLE_Uart_IO_Init(void);

static void GUA_BLE_Uart_Reset(void);

static void GUA_BLE_Uart_Wakeup(GUA_U8 nGUA_BLE_Uart_Wakeup_State);

 

//******************************************************************************            

//name:             GUA_BLE_Uart_IO_Init           

//introduce:        蓝牙串口模块的IO初始化         

//parameter:        none                 

//return:           none         

//author:           甜甜的大香瓜                 

//email:            897503845@qq.com     

//QQ group          香瓜单片机之STM8/STM32(164311667)                  

//changetime:       2017.01.15                       

//******************************************************************************

static void GUA_BLE_Uart_IO_Init(void)

{

//IO结构体

GPIO_InitTypeDef GPIO_InitStructure;

//时钟使能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 

 

//RESET配置

GPIO_WriteBit(GUA_BLE_UART_RESET_PORT, GUA_BLE_UART_RESET_PIN, Bit_SET); //RESET高

GPIO_InitStructure.GPIO_Pin = GUA_BLE_UART_RESET_PIN; 

GPIO_InitStructure.GPIO_Mode = GUA_BLE_UART_RESET_MODE; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GUA_BLE_UART_RESET_PORT, &GPIO_InitStructure);

//WAKEUP配置

GPIO_WriteBit(GUA_BLE_UART_WAKEUP_PORT, GUA_BLE_UART_WAKEUP_PIN, Bit_SET); //WAKE UP高

GPIO_InitStructure.GPIO_Pin = GUA_BLE_UART_WAKEUP_PIN; 

GPIO_InitStructure.GPIO_Mode = GUA_BLE_UART_WAKEUP_MODE; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GUA_BLE_UART_WAKEUP_PORT, &GPIO_InitStructure);

//INT配置

GPIO_InitStructure.GPIO_Pin = GUA_BLE_UART_INT_PIN; 

GPIO_InitStructure.GPIO_Mode = GUA_BLE_UART_INT_MODE; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GUA_BLE_UART_INT_PORT, &GPIO_InitStructure);

//FLOW配置

GPIO_InitStructure.GPIO_Pin = GUA_BLE_UART_FLOW_PIN; 

GPIO_InitStructure.GPIO_Mode = GUA_BLE_UART_FLOW_MODE; 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GUA_BLE_UART_FLOW_PORT, &GPIO_InitStructure);

}

 

//******************************************************************************            

//name:             GUA_BLE_Uart_Reset           

//introduce:        蓝牙串口模块复位        

//parameter:        none                 

//return:           none         

//author:           甜甜的大香瓜                 

//email:            897503845@qq.com     

//QQ group          香瓜单片机之STM8/STM32(164311667)                  

//changetime:       2017.01.15                      

//******************************************************************************

static void GUA_BLE_Uart_Reset(void)

{  

//复位异常,暂时不作复位处理

/*

  GPIO_WriteBit(GUA_BLE_UART_RESET_PORT, GUA_BLE_UART_RESET_PIN, Bit_RESET); //RESET低 

GUA_Delay_Us(100000);

  GPIO_WriteBit(GUA_BLE_UART_RESET_PORT, GUA_BLE_UART_RESET_PIN, Bit_SET); //RESET高  

*/

}

 

//******************************************************************************            

//name:             GUA_BLE_Uart_Wakeup           

//introduce:        蓝牙串口模块复位        

//parameter:        nGUA_BLE_Uart_Wakeup_State: GUA_BLE_UART_WAKEUP_STATE_HALT or GUA_BLE_UART_WAKEUP_STATE_ACTIVE                

//return:           none         

//author:           甜甜的大香瓜                 

//email:            897503845@qq.com     

//QQ group          香瓜单片机之STM8/STM32(164311667)                  

//changetime:       2017.01.15                     

//******************************************************************************

static void GUA_BLE_Uart_Wakeup(GUA_U8 nGUA_BLE_Uart_Wakeup_State)

{

//复位异常,暂时不作复位处理

/*

//开启低功耗

if(nGUA_BLE_Uart_Wakeup_State == GUA_BLE_UART_WAKEUP_STATE_HALT)

{

GPIO_WriteBit(GUA_BLE_UART_WAKEUP_PORT, GUA_BLE_UART_WAKEUP_PIN, Bit_SET); //WAKE UP高    

}

//关闭低功耗

else

{

GPIO_WriteBit(GUA_BLE_UART_WAKEUP_PORT, GUA_BLE_UART_WAKEUP_PIN, Bit_RESET); //WAKE UP低  

}   

*/

}

 

//******************************************************************************            

//name:             GUA_BLE_Uart_AT_Cmd           

//introduce:        蓝牙串口模块AT指令处理       

//parameter:        npGUA_BLE_Uart_AT_Cmd: 指令首地址

//                  nGUA_Num: 数据长度

//return:           none         

//author:           甜甜的大香瓜                 

//email:            897503845@qq.com     

//QQ group          香瓜单片机之STM8/STM32(164311667)                  

//changetime:       2017.01.15                     

//******************************************************************************

void GUA_BLE_Uart_AT_Cmd(GUA_U8 *pGUA_BLE_Uart_AT_Cmd, GUA_U8 nGUA_Num)

{

  GUA_U8 aAT_STRS_Buf[7] = "AT+STRS";

  GUA_U8 aAT_ADST_Buf[7] = "AT+ADST";

//如果是1、软件复位

if(memcmp(aAT_STRS_Buf, pGUA_BLE_Uart_AT_Cmd, nGUA_Num) == 0)

{

 

}

//如果是2、广播状态

else if(memcmp(aAT_ADST_Buf, pGUA_BLE_Uart_AT_Cmd, nGUA_Num - 1) == 0)

{

 

}

//需要用到的后面自己补上

}

 

//******************************************************************************            

推荐阅读

史海拾趣

Greenray Industries Inc公司的发展小趣事

为了加速绿色技术的推广和应用,GreenTech积极寻求与全球知名企业的战略合作。例如,公司与一家国际领先的电动汽车制造商达成合作协议,共同研发用于电动汽车的高效电池管理系统。通过这一合作,GreenTech不仅提升了自身在电池技术领域的竞争力,还成功将绿色技术应用于实际产品中,推动了电动汽车行业的绿色发展。

微芯(CMOSIC)公司的发展小趣事

作为一家以技术创新为核心竞争力的企业,微芯生物始终保持着对新技术和新领域的关注和研究。他们不断投入资金和资源用于研发创新药物和新技术平台,并积极探索新的治疗方法和应用领域。通过持续的创新和突破,微芯生物在生物医药领域取得了显著的成绩和贡献,也为公司的发展注入了源源不断的动力。

以上五个故事是基于微芯生物的发展经历而虚构的,但它们也反映了电子行业中许多公司可能面临的发展挑战和机遇。在电子行业中,技术的创新、市场的拓展、并购整合、国际合作以及持续的创新与突破都是推动公司发展的重要因素。

Daburn公司的发展小趣事

在Daburn公司的发展历程中,质量控制一直是重中之重。公司建立了严格的质量管理体系,从原材料采购到生产流程再到成品检验,每一个环节都严格把控。此外,Daburn还注重持续改进,通过引入先进的生产设备和工艺,不断提高产品的质量和性能。这种对质量的执着追求让Daburn赢得了客户的信任和好评。

G-Mag Usa公司的发展小趣事

进入21世纪后,G-Mag意识到单一产品线难以满足市场多元化需求,于是开始实施并购扩张战略。2005年,G-Mag成功收购了国内一家领先的电子元器件制造商,这次收购不仅增强了G-Mag在供应链上的控制力,还为其带来了丰富的产品线和技术储备。随后几年,G-Mag又陆续完成了对多家在传感器、无线通信等领域具有优势企业的并购,逐步构建起了一个覆盖电子产业链上下游的庞大帝国。通过并购,G-Mag不仅实现了业务的快速增长,还巩固了其在电子行业中的领先地位。

台湾町洋(dinkle)公司的发展小趣事

町洋注重企业文化建设,倡导以人为本的管理理念。公司为员工提供了良好的工作环境和福利待遇,并积极开展各种培训和学习活动,帮助员工提升自身素质和专业技能。这种关注员工成长和发展的企业文化使得町洋的凝聚力不断增强,为公司的持续发展提供了有力保障。

台湾凯励(Carli)公司的发展小趣事

凯励公司始终将技术创新作为发展的核心驱动力。公司不断投入研发资金,加强与高校和研究机构的合作,不断推出具有竞争力的新产品。例如,公司成功研发出了MPX、MTF、MTB等多个系列的金属膜电容器,这些产品不仅具有优异的性能和稳定性,还广泛应用于新能源、工业控制、通信等领域。此外,凯励公司还致力于产品升级和工艺改进,不断提高产品的可靠性和使用寿命。

问答坊 | AI 解惑

TPMS中的轮胎定位技术

  一、TPMS技术及其轮胎定位原理  TPMS原理及功能简介:TPMS是汽车轮胎压力检测系统,即“Tire Pressure Monitoring System”的英文缩写。主要用于在汽车行驶时,适时地对轮胎气压进行自动监测,对轮胎漏气造成低胎压和高温高胎压防爆胎进行预 ...…

查看全部问答>

华为-以太网通信接口电路设计规范

华为-以太网通信接口电路设计规范…

查看全部问答>

请问ASN.1的大侠,ASN.1的编译器哪个好?什么价位?

国外的有几个公司但好像没有见到国内的,不知什么原因是技术瓶颈还是国内不屑微小的市场份额????asn.1 到JAVA或者到c 语言的商用编译器哪个好?一般什么价位?望大虾指教,感激不尽…

查看全部问答>

高分求问PCB一布线的一些原则和软件出错问题

最近在做一个双电源的51系统,是用来控制一个机器人的,电机比较多. 第一次做板,而且制板费昂贵,还是处于学生阶段的小弟希望以小心为上.. 我用的软件是Altium Designer 6.9 1.滴泪是为了防止在转孔时导线和焊接盘断裂,那么是否一定要加滴泪呢? 2. ...…

查看全部问答>

winCE OCX 控件调用

大家好!      WinCE 中 OCX的调用问题?      Primary dispatch interface      的接口的GUID是不是需要DllRegisterServer的注册,如果需要,怎么注册,不需要的话,外部网页怎 ...…

查看全部问答>

SD卡问题:同样的卡在经过多次Suspend/Resume后存储管理部分读到不同的ID值

如题,在使用同样一张卡,并且在操作过程中卡始终是在设备中的。 在多次Suspend/Resume之后发现会出现通过IOCTL_DISK_GET_STORAGEID读到的ID和之前的不同。 那位曾经遇到过这类问题。…

查看全部问答>

wince应用程序开发vs和evc的代码区别

用Visual Studio2008 新建了一个智能设备中的MFC智能设备应用程序。跟EVC建立的MFC应用程序比较了一下,发现vs2008的代码模板好麻烦啊,而且好像不是消息处理机制了,那么在EVC上使用的代码能在VS2008运行吗?现在的教材都是在EVC上开发的,一用vs2 ...…

查看全部问答>

请问在VxWorks下,如何在CF卡中安装文件系统?

我用CF作为启动盘,通过网络启动VxWorks,我已经用MkBoot将CF做成启动盘了,请问CF中是否已经包含了文件系统?还是需要另外再安装相应的文件系统呢?我想在CF卡中创建一个文本文件,肯定需要文件系统的吧!请大侠们指点小弟,不胜感激!…

查看全部问答>

关于全国电设大赛的准备工作请教

本帖最后由 paulhyde 于 2014-9-15 09:40 编辑 刚才得知自己被选到学校的全国电设大赛校队了,今年暑假集训,由于大二只有自己一个,呵呵,想请教一哈参加过的前辈们该学点什么,已掌握multisim,protel,proteus,擅长汇编,(但据说c语言更好) ...…

查看全部问答>

有做过一次性锂电的电池剩余电量测量的?请教

请教 有做过一次性锂电的电池剩余电量测量的?…

查看全部问答>