由浅入深蓝牙4.0BLE协议栈开发攻略大全5_第1页
由浅入深蓝牙4.0BLE协议栈开发攻略大全5_第2页
由浅入深蓝牙4.0BLE协议栈开发攻略大全5_第3页
由浅入深蓝牙4.0BLE协议栈开发攻略大全5_第4页
由浅入深蓝牙4.0BLE协议栈开发攻略大全5_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本系列教程将结合ti推出的cc254x soc 系列,讲解从环境的搭建到蓝牙4.0协议栈的开发来深入学习蓝牙4.0的开发过程。教程共分为六部分,本文为第五部分:第五部分知识点:第二十一节 dht11温湿度传感器第二十二节 蓝牙协议栈之从机通讯第二十三节 蓝牙协议栈主从一体之主机通讯第二十四节 oad空中升级第二十五节 sbl串口升级有关ti 的cc254x芯片介绍,可点击下面链接查看:主流蓝牙ble控制芯片详解(1):ti cc2540同系列资料推荐:由浅入深,蓝牙4.0/ble协议栈开发攻略大全(1)由浅入深,蓝牙4.0/ble协议栈开发攻略大全(2)由浅入深,蓝牙4.0/ble协议栈开发攻

2、略大全(3)由浅入深,蓝牙4.0/ble协议栈开发攻略大全(4)有关本文的工具下载,大家可以到以下这个地址:朱兆祺forarm第二十一节 dht11温湿度传感器dht11简介dht11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠 性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个ntc测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰 能力强、性价比极高等优点。每个dht11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在otp内存中,传感器内部在检测

3、型号的处 理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为给类应用甚至最为苛刻的应用场合的最佳选择。产 品为4针单排引脚封装,连接方便。技术参数供电电压: 3.35.5v dc输 出: 单总线数字信号测量范围: 湿度20-90%rh, 温度050测量精度: 湿度+-5%rh, 温度+-2分 辨 率: 湿度1%rh,温度1互 换 性: 可完全互换 ,长期稳定性: 0 ) / 显示扫描到的设备/ increment index of current result (with wraparound)simpleblescanidx+;if ( si

4、mpleblescanidx = simpleblescanres )simpleblescanidx = 0;lcd_write_string_value( “device”, simpleblescanidx + 1,10, hal_lcd_line_1 );lcd_write_string( bdaddr2str( simplebledevlistsimpleblescanidx.addr ),hal_lcd_line_2 );if ( keys & hal_key_right ) / 右/ connection updateif ( simpleblestate = ble_state

5、_connected ) / 如果连接,则更新连接gapcentralrole_updatelink( simplebleconnhandle,default_update_min_conn_interval,default_update_max_conn_interval,default_update_slave_latency,default_update_conn_timeout );if ( keys & hal_key_center ) / 中间键uint8 addrtype;uint8 *peeraddr;/ connect or disconnectif ( simplebles

6、tate = ble_state_idle ) / 空闲则连接/ if there is a scan resultif ( simpleblescanres 0 )/ connect to current device in scan resultpeeraddr = simplebledevlistsimpleblescanidx.addr;addrtype = simplebledevlistsimpleblescanidx.addrtype;simpleblestate = ble_state_connecting;gapcentralrole_establishlink( defau

7、lt_link_high_duty_cycle,default_link_white_list,addrtype, peeraddr );lcd_write_string( “connecting”, hal_lcd_line_1 );lcd_write_string( bdaddr2str( peeraddr ), hal_lcd_line_2 );else if ( simpleblestate = ble_state_connecting | / 连接则断开连接simpleblestate = ble_state_connected )/ disconnectsimpleblestate

8、 = ble_state_disconnecting;gstatus = gapcentralrole_terminatelink( simplebleconnhandle );lcd_write_string( “disconnecting”, hal_lcd_line_1 );if ( keys & hal_key_down ) / 下/ start or cancel rssi pollingif ( simpleblestate = ble_state_connected ) / 连接则读取rssi的值if ( !simpleblerssi )simpleblerssi = true;

9、gapcentralrole_startrssi( simplebleconnhandle, default_rssi_period );elsesimpleblerssi = false;gapcentralrole_cancelrssi( simplebleconnhandle );lcd_write_string( “rssi cancelled”, hal_lcd_line_1 );因为从机一直处于广播状态,所以秩序将上一节中的从机程序烧录进开发板即可,然后将主机程序烧录到另外一快开发板,通过五向按键来实现和从机的连接和读写功能。(1) 上电提示从机上电提示:主机上电提示:(2)根据主

10、机的按键功能,我们按“up”键,开始搜索周边设备。搜索完成后,可以看到,扫描到了一个设备。(3)接着我们查看扫描到的设备地址,按左键。可以看到扫描到的设备地址为0x7c669d9f638a。这个地址正是我们的从机地址。(4)按中间键连接从机,可以看到主机提示连接成功,从机也提示连接成功。(5)接着我们开始读取从机的rssi值,按下键。(6)再次按下键,取消rssi值的读取。(7)对从机的char1进行读写,再次按上键读取到char1的值为1。(8)接着按上键,对char1写入0,同时看到从机提示char1的值被修改为0。主机写入成功:从机提示char1被改变:上电自动连接上一节中我们通过五向按

11、键实现了主机连接从机的功能,这一节中们来实现主机上电后自动搜索连接从机。要实现连接,从机必须处于广播状态,剩下的工作全部由主机完成,扫描、发起连接。主机的状态也有回调函数,主机启动后,第一个状态是初始化,所以我们在初始化完成时开始扫描,这样开机后主机就会开始扫描周边设备,接下来我们在扫描完成后对扫描到的设备发起连接。将工程编译下载后通过串口助手观察主机和从机的输出可以发现主机上电后自动的完成了一系列的操作。第二十四节 oad空中升级通过仿真器更新程序或者通过usb更新固件那都是一般人都可以实现的操作,但是要想实现oad空中升级,这还是需要一定的技术能力。这一节我就带着大家完善这一能力。oadn

12、 air download,指空中下载模式。当我们的产品发布以后,有时需要对固件进行升级,oad是升级方式中的一种。配置bim(boot image manger)打开iar,打开ble-cc254x-1.4.0下的工程c:texasinstrumentsble-cc254x-1.4.0projectsbleutilbimcc254xbim.eww,然后编译,下载到开发板中。配置image a打开oadexample工程,配置工程,添加如下几个宏feature_oad_bimhal_image_afeature_oadoad_keep_nv_pages(1) 打开simpleperiphera

13、l.c找到宏定义default_enable_update_request,将其改为flase。否则会影响bledevice monitor对其进行空中升级,到时可以再改回来。(2) iar左侧导航中找到profile文件夹,点击右键添加oad_target.c和oad_target.h两个文件,二文件位于 c:texasinstrumentsble- cc254x-1.4.0projectsbleprofilesoad中。(3) 在iar导航中找到 haltargetmt254xboarddriver,右键添加文件hal_crc.c,该文件位于c:texasinstruments ble-c

14、c254x-1.4.0componentshaltargetmt254xboard中。(4) 在刚才的simpleperipheral.c文件中,找到simpleperipheral_init()函数,在里面添加oadtarget_addservice()函数。(5) 在simpleperipheral.c的前面,添加引用oad的头文件,oad.h和oad_target.h。(6) 点击projectoption,或直接按alt+f7,选择buildactions,在post-buildcommand line中添加:“$proj_dir$。commoncc2540cc254x_ubl_pp.

15、bat”“$proj_dir$” “ rodubl”“$proj_dir$cc2540-oad-imgaexeoadexample”注意,各双引号之间只有一个空格。注意图中红框标的部分,image_a是和之前第1步对应的。(7) 点击projectoption,或直接按alt+f7,选择linker,选择config,linker configurationfile中勾选override default,添加c:texasinstrumentsble-cc254x-1.4.0projectsblecommon cc2540cc254x_f256_imga.xcl。(8) 点击projectop

16、tion,或直接按alt+f7,选择linker,选择extra output。(9) extra option添加hex文件的输出。(10) 点击ok,编译下载,如果出现如下错误,是因为我们使用的是iar8051 8.30版本,如果你使用的是iar8.20版本就没有这问题。(11) 这个问题是因为使用了虚拟寄存器导致的,我们找到如下文件。(12) 对文件的115行进行如下修改,将虚拟寄存器注释掉。(13) 编译后,可以看到我们生成的文件(14) 我们将hex文件叠加到bim后面这样imagea就成功烧录进开发板了。配置image b(1) 方法如image a,其它要注意的几个地方:点击pr

17、ojectoption,或直接按alt+f7,选择c/c+compiler,选择preprocessor,将defined symbols中的hal_image_a改成b。(2) 点击projectoption,或直接按alt+f7,选择linker,选择config,将linker configuration file中的文件改为b。(3) 保存后编译,同样的可以看到生成的文件。(4) 为了区分a和b镜像,我们将最终结果改名。空中升级有了bin文件就可以进行空中升级了,打开ble device monitor(没有安装的需要安装),打开后软件会自动扫描设备,如图,我们扫描到了开发板。(2)

18、连接后,打开oad(3) 点击file,选择progame(oad),选择生成的bin文件,可以看到我们当前运行的是a固件(4) 点击start,当进行到100%,就完成了固件空中升级。(5) 升级后再次打开oad选项,可以看到选择运行的固件已经是b版本的了。注意:要把 ble协议栈ble-cc254x-1.4.0 安装在c盘,在其他盘符下没有生成bin文件。第二十五节 sbl串口升级sbl升级和oad升级的配置步骤都是一样的,主要是配置的参数不一样,下面我们来配置一个sbl升级的固件。配置sbl打开iar,打开ble-cc254x-1.4.0下的工程c:texasinstrumentsble-cc254x-1.4.0projectsbleutilsbliarcc254xsbl.eww,然后编译,下载到开发板中。配

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论