[原创] 【NXP Rapid IoT评测】+ 蓝牙协议栈使用方法小结

manhuami2007   2019-1-20 14:25 楼主
x.png Rapid iot套件是如何使用蓝牙进行通讯的呢?通过在MK64FN这颗主MCU中模拟出蓝牙协议栈来进行蓝牙通讯。 那么是如何模拟的呢? 我们知道这个套件是双MCU的,MKW41Z负责蓝牙,MK64FN则是主MCU。通常我们编写的代码都是MK64FN的代码。这两个MCU使用FSCI(Framework Serial Communication Interface)互相通讯。这个FSCI是一个串行通讯的协议框架。这两个MCU间通讯不是简单的数据透传,而是通过串口命令在MK64FN芯片上模拟出蓝牙协议栈。也就是说不同的串口命令,对应着协议栈中GAP、GATT等协议的不同操作,我们想要执行协议中的那个操作,MK64FN就要向MKW41Z发送对应的命令。这样也就相当于在MK64FN上实现了蓝牙的协议栈。 123.png 在BLE的通讯中,我们的套件是服务器,电脑或者手机是客户端,这是因为数据都在套件上,是套件在提供服务。但是从通讯的角度看,电脑或者手机却是主机,而套件是从机。这两个概念需要搞清楚。 数据的组织形式是服务和特性。我们可以依据不同的传感器类型建立不同的服务,然后再在服务下建立多个特性。比如说我们以电池的数据建立1个服务,而电池有多种数据,比如是否充电、电量是多少。根据这两个数据,我们能够在电池的服务下再建立2个特性。 我们的提供的数据对于蓝牙就是不同的服务以及服务中不同的特性。那么这些服务又是如何添加到程序中的呢? 在蓝牙栈中,有两个方式来添加服务和特性。静态添加服务和动态添加服务。这就类似于变量,静态变量和动态申请的变量。由于我们的代码是在MK64FN中的,它独立于MKW41Z,因此服务和特性只能等MKW41Z启动之后动态的进行添加。 添加了服务和特性之后做什么? 之后套件开始广播,使得主机能够发现套机的蓝牙。当主机发现套件后就要向套件发起连接请求,这时候套件就要响应连接请求。 那么蓝牙的数据是何时写入和读出的呢? 首先说套件提供的蓝牙数据是当蓝牙连接建立之后,会有1个定时函数,定时的读取各传感器的参数,然后写入蓝牙服务的特性中。 而我们在手机或者电脑上写入数据后,会触发1个事件GATTServer-AttributeWritten,当收到这个事件之后,套件回去读取写入的数据是什么。 此内容由EEWORLD论坛网友manhuami2007原创,如需转载或用于商业用途需征得作者同意并注明出处 本帖最后由 manhuami2007 于 2019-1-20 20:15 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复