打印
[应用相关]

【转】STM32之蓝牙透传模块(迅通科技PTR5518)

[复制链接]
1419|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
南国先生|  楼主 | 2017-2-24 12:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[size=13.6364px]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

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

[size=13.6364px]五、基础知识

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、编写并添加串口透传模块驱动



3)工程中添加GUA_BLE_Uart.c
[size=13.6364px]

4)在MDK设置中添加驱动源文件路径




2、写中断服务函数(stm32f10x_it.c中)
1)添加头文件
[cpp] view plain copy


  • #include "GUA_BLE_Uart.h"  


2)修改串口中断服务函数
[cpp] view plain copy


  • //******************************************************************************              
  • //name:             USART2_IRQHandler            
  • //introduce:        串口2中断服务函数           
  • //parameter:        none                  
  • //return:           none           
  • //author:           甜甜的大香瓜                  
  • //email:            897503845@qq.com      
  • //QQ group          香瓜单片机之STM8/STM32(164311667)                    
  • //changetime:       2016.10.17                       
  • //******************************************************************************  
  • void USART2_IRQHandler(void)  
  • {  
  •   GUA_U8 nGUA_Ret = 0;  
  •   GUA_U8 nGUA_Num = 0;  
  •   GUA_U8 aGUA_AT_Buf[2] = "AT";  
  •       
  •     //接收串口数据  
  •   nGUA_Num = GUA_USARTx_Reveive(USART2, gGUA_USART2_rx_buf);                     
  •       
  •     //判断数据是否有效  
  •     if(nGUA_Num > 0)  
  •     {  
  •         //如果是AT指令  
  •         if(memcmp(aGUA_AT_Buf, gGUA_USART2_rx_buf, 2) == 0)  
  •         {  
  •             GUA_BLE_Uart_AT_Cmd(gGUA_USART2_rx_buf, nGUA_Num);   
  •         }  
  •         else  
  •         {  
  •             nGUA_Ret = GUA_USARTx_Judgment(gGUA_USART2_rx_buf);     //串口数据判断  
  •             if(nGUA_Ret == GUA_TRUE)  
  •             {  
  •                 GUA_USARTx_Process(gGUA_USART2_rx_buf);                         //串口数据处理  
  •             }  
  •             else  
  •             {  
  •                 gGUA_Function = GUA_FUNC_RETRUN_ERROR_EVENT;                //空闲               
  •             }      
  •         }  
  •     }  
  • }  



3、在应用层中调用

1)添加头文件(main.c中)

[cpp] view plain copy


  • #include "GUA_BLE_Uart.h"  


2)添加驱动初始化代码(main.c的main函数中)

[cpp] view plain copy


  • //串口模块初始化  
  • GUA_BLE_Uart_Init();   


3)数据发往app举例

[cpp] view plain copy


  • GUA_BLE_Uart_Send(USART2, gGUA_USART2_tx_buf, GUA_USART2_TX_SIZE);   //发送应答     


七、注意事项
[size=13.6364px]暂无
[size=13.6364px]
八、实验结果

仿真并全速运行,手机的BLE Tool软件能搜索到蓝牙模块在广播,连接上之后可使用两个通道进行读写:

1、数据传输服务 UUID:6940-0001-b5a3-f393-e0a9-e50e-24dc-ca99
1)写数据特性 UUID:6940-0002-b5a3-f393-e0a9-e50e-24dc-ca99
2)读数据特性 UUID:6940-0003-b5a3-f393-e0a9-e50e-24dc-ca99

app往写通道写入17个字节,则stm32能在串口中断服务函数中接收到该17个字节。(最大20字节一包)

stm32往串口写入17个字节,则app能在接收通道接收到该17个字节。(最大200字节一包,模块会自动将其分为20字节一包、每个连接事件发送4包)





沙发
yiyigirl2014| | 2017-2-24 21:28 | 只看该作者
自从买了手机蓝牙从来没开过,真心不知道能干啥,周围也没有什么蓝牙的设备。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

160

帖子

3

粉丝