迅维网

标题: 【NUCLEO-F412ZG试用体验】蓝牙串口( [打印本页]

作者: バ幸福De右岸    时间: 2016-12-26 10:10
标题: 【NUCLEO-F412ZG试用体验】蓝牙串口(
在玩STM32时用的最多的就是串口了,之前学了一段安卓应用开发,稍微玩了一下蓝牙SPP通信,只不过是SOCKET通信,也知道STM32可以外接蓝牙串口模块,碍于手上没有模块一直没有玩起来,在工作中也有接触蓝牙模块,只不过能力有限,蓝牙协议相关的东西太多了,没有深入了解。这次玩这个也就是通过串口进行数据传输,并没有深入蓝牙的相关协议。下面是关于STM32和蓝牙模块之前的通信模型。

                               
登录/注册后看高清大图

蓝牙模块的应用主要是通过串口和STM32进行连接,通过PC同时连接蓝牙模块和STM32连接。PC和蓝牙模块之间是通过蓝牙无线连接,而STM32和PC之间是通过串口进行通信。目前只做了单方向通信。就是通过蓝牙向STM32发送数据,暂时没有通过STM32控制蓝牙模块,执行一些蓝牙模块的指令,这个也很容易做到,只需要在接收到PC发来的数据后进行重组,通过串口发送给蓝牙模块就可以。

                               
登录/注册后看高清大图

效果图如上,上部的终端连接的是F412的串口,而下面的终端连接的是蓝牙串行通信链路,目前可以单方向的进行数据传输。关于蓝牙模块的使用的一点感想,就是蓝牙模块有两种状态,一种是命令状态,一种是数据传输状态。当在命令状态时,通过F412向蓝牙模块发数据,如果是AT命令,则蓝牙模块会做相应的处理,但是连接上蓝牙后,发送的就不再是命令了。所以实际开发的过程中应该区分这两种状态。但是如果蓝牙串口和电脑之间断开连接,STM32并不能区分这种状态,虽然可以通过字符串查询,但是不能保证应用的过程中也包括状态信息一样的字符串,能想到的也就是尽量避免使用AT命令状态返回的字符串。
同时这次修复了一处错误,就是对printf进行的封装,如下

[color=rgb(51, 102, 153) !important]复制代码

spp的源文件如下,
spp.c是核心部分,
spp_interface.c是作为接口供外部处理数据,这里仅仅是打印了蓝牙模块接收到的数据。
spp_transport.c应该是处理蓝牙模块的收发函数,这里没有做好,接收部分没有放到这个文件。

                               
登录/注册后看高清大图

所要作的工作就是把spp的接收函数映射到STM32的串口,当遇到“\r\n”时处理这一帧数据。
待有时间再把双向收发这一部分做一下,同时也要对数据和命令两种模式进行区分。

NUCLEO_F412.zip

2.84 MB, 下载次数: 1, 下载积分: 下载分 -2 分, 下载 1 次






欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4