完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、专业名词缩略语
1)VCP(虚拟串口) 2)CDC(通信设备类) 3)FCC:美国的联邦通信委员会、欧洲的电信标准委员会(ETSI) 4)RSSI :Received Signal Strength Indication 5)OSAL:OS Abstraction layer 6)SNV:simple non-volatile 7)SBP:Simple BLE Peripheral 8)NPI:network processor interface 9)SVC:Service discovery 10)LTK : long-term key 11)pairing/bonding : 配对与绑定 二、蓝牙(一种近距离无线技术) 蓝牙技术: 1、从机、主机、主从一体机( 同一时间只能充当一种角色, 通常由AT指令进行切换),串口透传模块; 2、HID蓝牙专用协议,应用在蓝牙耳机(传统蓝牙协议:A2DP profile)、蓝牙键盘、蓝牙鼠标等应用领域; 3、双模(BLE+传统蓝牙)与单模(指传统蓝牙或低功耗蓝牙) ; 4、双模蓝牙:发送:+-10dbm 接受:-90dbm; 5、低功耗蓝牙:传输速率100kb/s 传统蓝牙:传输速率3M/s WIFI:传输速率50M/s 6、OAD的原理:采用BIM(bootloader)引导新固件和旧固件在flash上的位置,并根据最新bin文件的版本号作为系统的启动; 7、无线通信工作频段:Zigbee、蓝牙以及 WIFI 标准都是工作在 2.4GHz 频段的无线通信标准; 8、采用自适应调频技术; 协议栈: 1、协议栈:是传输协议的软件集合(基于操作系统,一般是FreeRTOS),一般厂商会封装重要的底层协议,只提供最外层的开发接口; 2、协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发;协议栈是协议的具体实现形式,通俗的理解就是用代码实现的函数库。 3、所谓的协议栈数据实质就是一种标准的通讯协议,它应该可以被组织成一个清晰的表格; 4、协议栈中profile文件定义了各种应用场景; a、一个或多个service组成; b、service由一个或多个characteristic(结构体)组成; BLE规范: 1、BLE规范中定义了两个十分重要且基本的配置文件: 1) GAP(generic access profile):负责设备访问模式和进程,包括设备发现,建立连接,终止连接,初始化安全特征和设备配置。 2) GATT(generic attribute):用于已连接的蓝牙设备之间的数据通讯。 2、GATT服务器和GATT客户端,它们完全独立于GAP的角色。提供数据的设备称为GATT服务器,访问GATT服务器而获得数据的设备称为GATT客户端。 3、设备的GAP和GATT的角色都可能在数据的交换过程中改变,因此,这个文件应该包含广播的种类、所使用的连接间隔、所需的安全等级等信息; 4、特性的性质:写 没有回应的写 读 通知 指示 5、通知和指示性质允许GATT服务器在其某个特性改变的时候对GATT客户端进行提醒,通知和指示之间不同之处在于指示有应用层上的确认,而通知没有。 6、蓝牙技术联盟所用的基本UUID不能用于任何定制的属性、服务和特性。对于定制的属性,必须使用另外完整的128位UUID; 7、先增加一个特定的基本UUID(128位),再定义一个16位的UUID(类似于一个别名),再加载在基本UUID之上; 8、集中器发送一个连接请求来发起连接之前,必须接收到一个广播数据包,外围设备发送一个广播数据包之后一小段时间内只监听连接请求; 9、蓝牙最多只能一次(在一次连接中)发送20个字节的 应用数据; 10、在一个连接中,除了广播信道,设备间在频带的所有信道中进行通信。当然对于应用层,这是完全透明的; 11、 EEE802.15.4-2006指定 16个通道,它们位于 2.4GHz频段之内。步长为 5 MHz,编号为 11~26; 蓝牙与Zigbee的区别比较: 1、详细说明 2、RF调制方式不一致; 3、Zigbee:发送的比特流-》比特到符号-》符号到芯片-》O-QPSK调制器-》已调制的信号到ADC; 4、加密功能(鉴权)Zigbee灵活一点(三种选择方式); 5、 应为cc254x 与cc2530 都是同样的结构,仅无线不一样, 所以可以参考; 6、组网方式:BLE 网络可以点对点或者点对多点,一个 ble 主机可以连接多个(最多三个) ble 从机,组成星型网络,另外还有一种有广播设备和多个扫描设备组成的广播组结构,不同的网络拓扑对应不同的应用领域; 7、协调器、路由器、终端;组网十分灵活并且组网节点巨大; 蓝牙连接方式: 1、指定从机地址; 2、随机连接(按照扫描到的从机列表顺序); 蓝牙广播类型: 1、蓝牙角色类型、密码类型、广播类型 2、广播类型数据构成 BLE设备角色: 1、peripheral central :需要相互连接(心率计与手机) 2、broadercaster observe : 不需要建立连接,采用广播模式传播和接收广播形式(温度传感器与温度显示屏); 蓝牙的三种蓝牙类型以及应用: 1、详细说明 2、bluetooth BR/EDR(蓝牙耳机,车载蓝牙) 3、bluetooth smart(蓝牙低功耗BLE) 4、bluetooth smart ready (智能手机、平板) 二、项目开发实践杂记 1、基于协议栈,一般会做以下开发修改: a、添加串口打印、按键动作; b、、自定义消息; c、添加服务; d、自定义profile;//定义新的特征值 2、CC2540采用8051内核,与C51和其他单片机的区别,CC2541比40低功耗降低33%: a、IO口复位状态:配置引脚为具有上拉电阻的通用I/O输入。 b、电源管理:使用不同供电模式的长电池寿命的低功耗应用运行。 c、随机数发生器、AES协处理器:实现128位密匙的AES算法加密和解密数据; d、CC253x设备系列提供了一个IEEE802.15.4兼容无线收发器。 RF内核控制模拟无线模块。另外,它提供了MCU和无线设备之间的一个接口,这使得可以发出命令、读取状态、自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。 e、128/256KB FLASH; f、RX、TX(128KB FIFO); g、帧过滤和源匹配(源地址匹配),采用128字节来存储本地地址信息; h、低位符号首先传输。 对于多字节域,低字节首先传输,除了与安全相关的域是高字节首先传输; 3、蓝牙天线设计: a、四种常用天线 b、三种天线类型 1、蓝牙协议栈的开发重点在于熟悉应用接口,制定从机和主机的通讯流程去实现不同的应用; 2、profile 就是一系列服务(service)的集合; 3、初步了解OSAL的执行流程(比一般的RTOS系统实现的机制原理简单); 4、无论是协议栈(封装了起来,不开放源码)还是HAL、还是OSAL,都已经封装好常用的API接口;只要熟练练习即可; 5、基于系统的开发:实质就是清晰了解好该系统搭建好的框架以及组件(硬件驱动、应用API接口);善于修改和重用; 6、熟悉一个系统就是需要一点一滴地剖析这个系统本身的架构(循序渐进的过程); 7、如果是一个比较有经验的软件开发者,得到一份源码后,首先需要按照说明跑一跑,然后用代码对比工具做下对比,基本就了解别人做了什么修改了。 8、蓝牙协议栈跟IAR是有着对应关系的(实质上所有的开发平台都绑定相应的编译器(版本)进行开发的); 9、基于OSAL开发,只需要了解几个概念:任务、事件、消息机制、回调函数、HAL; 10、一些重要的开发工具: a、IAR:编程 b、smart flash:烧写固件 c、BLE device Monitor(直观)/Btool(高级模式):模拟蓝牙主机:实现连接、断开、读写服务操作(通过封装的HCI接口); d、studio:配置蓝牙射频寄存器(高级模式); e、packet sniffer:捕捉蓝牙空中信号; f、硬件: 1) CC debuger 2) 抓包器 3) sensor tag 11、 蓝牙名称如何才能设置为中文名? 要转下URL格式就行 12、 蓝牙低功耗的实现:1)硬件IO; 2)蓝牙协议栈低功耗模式; 3)连接参数;4)需要在OPTION里面设置(开启宏定义); 13、无线蓝牙透数据传均存在丢包率的问题,所以用户朋友们一定要做好应用层的数据校验。 14、密码连接是从机发起的; 15、重要的连接参数: a、connection interval; b、slave latency; c、supervision timeout; 16、服务端、客户端 主从机究竟是如何定义的?应用场合是? 连接后将会确定谁是GATT服务端 和GATT客户端,也可以同时处于这两种角色(主从一体); 17、TX FIFO储存器也位于RAM中?位于RAM中的XREG(1KB) X FIFO存储器区域位于地址 0x6000到0x607F,所以是 128字节。尽管这一存储器区域用于 RX FIFO, 但是它不以任何方式保护,因此它在XREG存储区域中仍然是可以访问的。一般地,只有指定的指令能用于操作RXFIFO的内容。 RXFIFO一次可以包括多个帧 18、蓝牙连接后就不广播了 解决:采用L2CAP层或者真正的用户通讯数据进行通信; 19、蓝牙的连接、配对、绑定、通讯的数据在哪里,过程的源码实现? 解决:在协议层内部实现了(赋值过程不可见); 20、蓝牙的数据接收在某个地方实现?根据不同的状态,进入不同的处理函数? 解决:接收过程不可见,根据返回的结果进行相应的处理; 21、网路教程: a、一个简单的BLE应用 b、蓝牙BLE简单介绍 c、蓝牙新手常见问题 d、蓝牙开发项目经验浅谈 e、一主三从的项目实现 22、蓝牙设备与手机通信不稳定现象调试 - 不同品牌/型号手机对蓝牙的兼容性也不一样(蓝牙普遍存在的通病) a、第一,抓取连接、交互那部分的打印信息,看是卡顿在哪个地方; b、第二,用蓝牙分析仪去抓取信息(专用仪器可以获取蓝牙在空中的 所有通信过程); 四、其它蓝牙应用学习 1、按键例程比较完整体现系统的流转( 按键事件通过消息,通知应用程序处理按键事件 ); 2、防止超长数据语句: a、 numBytes = (osal_strlen(strTemp) 》 SIMPLEPROFILE_CHAR6_LEN) ? SIMPLEPROFILE_CHAR6_LEN : osal_strlen(strTemp); 3、UUID( 类似枚举的作用一样 )作为一个switch的一个判断分支,来确定是属于哪个服务(执行相应的函数); 4、蓝牙鼠标的实现(基于TI demo工程实现): a、蓝牙接受端完全不用修改(官方固件),发送约定的数据( 鼠标数据结构体 ); b、主机端:主要对按键的处理:按键数据的产生处理、打包发送处理; 5、 在进行蓝牙协议栈开发时,切记事件处理不能超过蓝牙的连接间隔,否则蓝牙会出现广播停止,连接断开异常; 6、开发板试验总结: a、iBeacon实质就是从机广播特定的数据; b、实现的蓝牙功能:主从一体、实现透传、掉电数据保存、自动重连; c、蓝牙透传实现函数(都是通过GATT的CHAR6进行读写): 1)主机:GATT_WriteCharValue( 0, &AttReq, simpleBLETaskId ); 2)从机:SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR6,numBytes, buf ); 3)如果你发送的数据要超过 SIMPLEPROFILE_CHAR6_LEN, 那么最好的办法, 就是启动一个定时器,然后每定时器到, 就发送一段数据 d、主机接受的关键代码: if( pMsg-》msg.handleValueNoti.handle == simpleBLECharHd6/*0x0035*/) e、主机的接收和从机的发送都只是通过一个API实现的; f、匹配和绑定: 从机发起验证密码请求给 主机-》主机输入密码,发送给从机-》从机验证密码对或错-》通过后进行MAC绑定,记录在内存中; g、AT指令和透传数据的区分: 然后根据当前的状态决定执行, 如果没有连接上, 就把所有数据当做 AT 命令处理, 如果连接; h、心率计的实现: 1)采集pulse_sensor 的adc值,并将其转换成对应的数据结构,通过Notification传输到主机; 2)需要构造GATT服务:HeartRate_AddService(GATT_ALL_SERVICE); i、蓝牙鼠标的实现:按键产生动作(哪个按键被按下,按下了多少,将这些数据放到结构体中去)-》发送到USBDongle(烧写了原版TI的HID程序),实现控制蓝牙鼠标的功能; 1)hidMouseSendReport(uint8 mouseStates, int8 micKeysX, int8 micKeysY); 2)按下产生事件-》释放也产生事件(同时上报); 连续按下( keyRepeated++,非连续则keyRepeated+1 ) 3)空中鼠标,区别是计算欧拉角算出( x , y )坐标; j、防丢器:蓝牙断线后报警(靠近会自动连接); k、魔方:mpu6050上传dmp数据(欧拉角和四元数据),APP进行解释演示; 1)开发板端10ms读取一次mp输出,app 100ms读取一次开发板数据; 2)安卓源码: *readCharacteristic(读取开发板上的数据); *onReceive(解释数据); *getablePacket(显示图形函数); l、RGB调灯: *灯泡是共阳极的,采用nmos管控制; *手机端发现灯泡设备,自动连接; *音乐律动功能; m、一主三从的实现(具有参考价值): 主机端: 1)设置主机最大连接数为3(最大也只能是3); 2)自动连接设置(设置定时器-》自动增加连接序号-》连接); 3)配置三个结构体用于存放三个不同的从机数据; 4)数据的接受和发送; 5)主机连接从机后就需要发现特征值handle (扫描回应、读数据回应等); 从机端: 1)设置连接参数; 2)设置连接模式(无鉴权等待连接,鉴权连接); 3)数据的接受和发送(通知、指示形式); 7、Notification相当于socket的udp传输,只管传输,不管是否对方接收到; 五、蓝牙芯片选型 *市面上蓝牙芯片很多,要求价格可以选择博通,稳定专业肯定是TI跟NORDIC; 1、NORDIC nRF52832 2、TI :CC2640 六、结构/协议框图 1、CC2640内核: 2、BLE标准协议栈: 3、TI提供的协议栈: 4、ATT: 5、GATT(将ATT定义的Attribute实例化(根据各种不同的应用场景实化),提供给上层的profile使用): |
|
|
|
只有小组成员才能发言,加入小组>>
4533个成员聚集在这个小组
加入小组3340 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4269 浏览 1 评论
4296 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 00:24 , Processed in 0.654837 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号