微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > CC2541上微信之经验教程(三)

CC2541上微信之经验教程(三)

时间:10-02 整理:3721RD 点击:

CC2541上微信之经验教程(三)


微信規定了藍牙 BLE 需要有以下兩個特點。
1:可以傳輸無限長度的數據。
2:雙工,讀寫可以並發,互不干擾。
藍牙無法傳輸無限長度的數據,為了實現這個目的,需要定議一個規範。     
ps:当然是把数据截成奋斗一奋斗段奋斗一奋斗段奋斗的,然后再发送了。要不然怎么办。就是下面的帧这个东东了。
注:把一个特征值一次传输的数据,称为一帧(不同类型的特征值一次传输的数据长度是不一样的)。
藍牙設備需暴露兩個特徵值﹝Characteristics﹞:Write 特徵值,Indication 特徵值。藍牙設備從 Write 特徵值接受數據,從 Indication 特徵值發送數據。
UUID 0xFEC8  Properties:Indicate            
UUID 0xFEC7  Properties:Read Write   
蓝牙的数据传输是通过特征值实现的,那既然已经有了接受和发送的特征值,那就可以读写了数据了。
蓝牙设备写过程:
1. 分帧:假设蓝牙手环上有1k数据,要发给手机微信。由于一个特征值长度有限(如20个字节),显然需要分多次才能传输完成。1k 数据,要分成 1024 字节/ 20 字节=51 个帧。剩下的 4 个字节,不足一帧(20个字节),需补齐为一帧并对剩下的 16 个字节赋 0。总共是 52 帧。
2. 发送第一个帧:把第一个帧的内容放入特征值里面。然后通知手机读取数据,通知有两种方式,Indication 和 notify,这里使用 Indication 方式,即带响应的通知。当通知完成的时候,可以认为手机已经读完数据。这就完成了发送第一个帧。
3. 按照 2 的步骤,依次发送剩下的帧。
按照此方法可以发送无线长度的数据。
蓝牙设备读过程:                                                                                             
当蓝牙设备发现读特征值收到数据的时候,就接收数据,并追加到设备的 buf 里。
注意:蓝牙设备必须等微信 app 订阅了 Characteristics 之后,才能 indicate 数据,否者会造成设备发送数据丢失的问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top