TI CC254x BLE教程 4】的更多相关文章

TI的CC254x芯片 1. SoC 2. RF收发器+8051MCU 128/256KB Code空间. 3. Master或者Slave 4. 可编程flash 5. 8KB SRAM 6. 全软件协议栈, 无版权问题 7. 21个GPIO口, 2个UART或者SPI, 全速USB2.0, 2个16bit, 2个8bit计时器 8. 硬件AES加密 9. 8通道8-12bit ADC 10. 40pin 6x6x0.85mm QFN封装 IAR开发 值得注意是的上面的地方, 不知道Keil有…
连接更新请求(connection update request) 如果slave不满意现有的连接参数, 比如间隔, 延迟等等, 可以向master提出自己希望的参数范围 连接终止(connection termination) 1. master跟slave都可以终止连接 2. 如果超时时间到, 连接也自动终止 测试模式(direct test mode) 1. 允许一个tester设备对任何收发模式, 任何频道的设备进行监测. 2. 推荐的设备是Anritsu MT8852B, 对RF的性能…
约定, 第一次翻译这种东西, 专有名词的翻译原则还是不太清楚, 总之涉及有可能误解的词, 都用双语, 如果是简单的, 直接英文或者中文, 取决于我是否能找到中文合适的词来翻译. 何为BLE: 1. 是一种蓝牙联盟Bluetooth Special Interest Group(BT-SIG)制定的无线传输协议, TI是联盟成员 2. 基于蓝牙4.0加入了一些新特性, 蓝牙4.0早于2010年6月就公布了. 3. BLE主要目标是低功耗, 低延时与低数据量的需求 4. 主要围绕智能手机与PC生态,…
通用属性配置(Generic Attribute Profiles) 1. 数据在services里面以特征字(characteristics)的形式展示出来 如你所见, 特征字包含属性(Properties), 值(Value), 跟若干描述(Descriptor) 上面的截图描述了, 句柄在40的类型为0x2803的GATT特征字声明UUID中, 权限为只读, 里面的值又包含了 0xFFE1: 简单键值对自定义UUID 0x0029: 对应句柄41 0x10: 对应权限为notify 再看句…
BLE就是低功率蓝牙.要着重了解两种设备: dual-mode双模设备:简单说就是向下兼容. single-mode单模设备:仅仅支持BLE.   关于开发主要讲的是单模设备,它可以只靠纽扣电池即可持续工作. TI的蓝牙4.0BLE协议栈为BLE-CC254x-1.4.0,即现在的版本是1.4版本的.可以从TI官方下载或从附件中下载安装,默认是安装在C盘中.因为上一篇博文提到进行空中固件升级,当时没有安装在C盘下,死活生成不了bin文件,改在C盘下生成了.所以,我个人建议,还是默认安装吧,也占不…
关键术语和概念 1. Generic Attribute Profile(GATT)GATT配置文件是一个通用规范,用于在BLE链路上发送和接收被称为"属性"的数据块.目前所有的BLE应用都基于GATT. 蓝牙SIG规定了许多低功耗设备的配置文件.配置文件是设备如何在特定的应用程序中工作的规格说明.注意一个设备可以实现多个配置文件.例如,一个设备可能包括心率监测仪和电量检测. 2. Attribute Protocol(ATT)GATT在ATT协议基础上建立,也被称为GATT/ATT.…
在Flash中有一块只读区域,从地址0x780E开始,蓝牙的MAC以小端方式存放在里面. 在TI的Peripheral例程里面,添加一个特征值,只读属性,6字节长度(蓝牙MAC长度为48-bit,6字节). 蓝牙的MAC是全球唯一的,一般情况下,固件的开发中不会去使用,但也不排除二般情况. #define X_DATA(addr) ((uint8 volatile __xdata *)0)[addr] uint8 CC254x_MAC[6] = {0,0,0,0,0,0}; void ReadM…
BLE资料应用笔记 -- 持续更新 BLE 应用笔记 小书匠 简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.'让我们'更深入地探索这些方面吧. 蓝牙无处不在-,您可以在几乎每一台电话.笔记本电脑 .台式电脑和平板电脑中找到蓝牙.因此,您可以便利地连接键盘.鼠标.扬声器或健身带到电话或计算机. 蓝牙低耗能-,随着 Bluetooth Smart(BLE 或蓝牙低耗能)的诞生,现在开发者可以创造小型传感器,能够依靠硬币型电池运行数个月,甚至数年.这奠定了蓝牙作为物联网关键组件的地位. 蓝牙易…
简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.’让我们’更深入地探索这些方面吧. 蓝牙无处不在—,您可以在几乎每一台电话.笔记本电脑 .台式电脑和平板电脑中找到蓝牙.因此,您可以便利地连接键盘.鼠标.扬声器或健身带到电话或计算机. 蓝牙低耗能—,随着 Bluetooth Smart(BLE 或蓝牙低耗能)的诞生,现在开发者可以创造小型传感器,能够依靠硬币型电池运行数个月,甚至数年.这奠定了蓝牙作为物联网关键组件的地位. 蓝牙易于使用—,带领消费者’进入便利时代.您可以前往设置,启用蓝牙,…
TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth Low Energy Software Developer’s Guide (Rev. B),部分图片直接引用自该文档,不一一说明.初稿,待修改. 一.概述 1.BLE蓝牙协议栈结构 附图6 BLE蓝牙协议栈结构图 分为两部分:控制器和主机.对于4.0以前的蓝牙,这两部分是分开的.所有profile(姑且称为剧本吧,用来定义设备或组件的角色)和应用都建构在GAP或GATT之上.下面由结构图的底层组件开始介绍…
转自:http://blog.csdn.net/ooakk/article/details/7302425 TI低功耗蓝牙(BLE)介绍 本文档翻译和修改自参考资料:CC2540Bluetooth Low Energy Software Developer’s Guide (Rev. B),部分图片直接引用自该文档,不一一说明.初稿,待修改. 一.概述 1.BLE蓝牙协议栈结构 附图6 BLE蓝牙协议栈结构图 分为两部分:控制器和主机.对于4.0以前的蓝牙,这两部分是分开的.所有profile(…
1.Zigbee协议栈简介 协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收.协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议,进而实现无线数据收发. 如图1所示:Zigbee协议分为两部分,IEEE 802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范:Zigbee联盟定义了NWK(网络层).APS(应用程序支持层).APL(应用层)技术规范.Zigbee协议栈就是将各个层定义的协议都集合在一起,…
相比TI的CC254X.DIALOG的DA1458X,nordic推出的nrf51822和nrf52832在架构和开发商都有自己独特的地方.这几颗产品都是蓝牙低功耗芯片.DA1458X使用OTP硬件架构,功耗低,成本也低,但软件开发难度是个门槛,大团队才能做到量产,当然掌握了也是竞争力(想学习开发就参考博主之前的分享吧).如果对三种架构都很熟悉,然后从开发的角度做个比较,相信对nrf52832的架构和开发会更新青睐. 1. nrf52832有64K的ram和512K的flash,开发人员应该很喜…
1.在  TI  的 BLE 协议栈 中,即 OSAL 中 获取当前 系统 tick 的方法如下 /* * Read the system clock - returns milliseconds */ extern uint32 osal_GetSystemClock( void ); 2.32位 的变量 用于表示 ms ,可以表示多少天那?关系如下: 2^32 ms =  4294967296 ms = 4294967.296 S =  71582.788266666666666666666…
蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关系? Q: 双模(dual-mode)和单模(single-mode)有什么区别? Q: There is a confusion between Server-Client vs Master-Slave vs Central-Peripheral.…
TI 的OSAL做的很不错,不过看起来也挺费劲可能自己水平太差吧,网上买的谷雨的开发板觉得确实挺不错的. 做点学习笔记,首先是记录OSAL里执行的顺序流程,主要是task ,event,message 1, APP_Main.c: /* Initialize the operating system */ osal_init_system(); 其中初始化了 // Initialize the system tasks. osalInitTasks(); /*******************…
看源代码的时候,一般都是从整个代码的入口处开始,TI  BLE 协议栈源码也不例外.它的入口main()函数就是整个程序的入口,由系统上电时自动调用. 它主要做了以下几件事情: (一)底层硬件初始化配置 (二)创建任务并初始化任务配置 (三)检测并执行有效的任务事件 Main() 函数源码如下: 一:底层硬件初始化设置 75行,设置系统时钟,使能内存缓冲功能. 78行,关中断,刚启动时,系统运行不稳定,一般会首先关中断. 81行,硬件相关的I/O 口配置. 84行,初始化mcu 内部的flash…
本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的Framework包括Android Framework.Linux QT.Windows MFC.应用框架抽象并封装实现了一般应用场景的需求,完成应用开发的80%,剩下的20%则以回调(callback)和接口的方式供应用开发人员调用以完成具体的需求. 一般Framework完成的工作包括:任务分…
虽然BLE 5.0协议理论上已经开始支持IPv6了,但是目前市面上还没有可用的实现IPv6通信的BLE产品. 最近在网上看到一个开源的基于contiki系统,在CC2650上实现的IPv6 over BLE--BLEach.官网 其实现原理类似于IPv6 over 6lowpan,在底层和应用层之间添加了中间层: 更多实现原理请查阅RFC 7668和BLEach开发者的论文BLEach Exploiting the Full Potential of IPv6 over BLE in Const…
欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关系? Q: 双模(dual-mode)和单模(single-mode)有什么区别? Q: There is a confusion between Server-Client vs Master-Slave vs Central-Peripheral. I need a simplified exp…
#define GAPROLE_ADVERT_ENABLED 0x305 //!< Enable/Disable Advertising. Read/Write. Size is uint8. Default is TRUE=Enabled.#define GAPROLE_ADVERT_OFF_TIME 0x306 //!< Advertising Off Time for Limited advertisements (in milliseconds). Read/Write. Size i…
http://blog.csdn.net/wave_1102/article/details/39271693 分类: Android(105) 作者同类文章X Android4.3 规范了BLE的API,但是直到目前的4.4,还有些功能不完善. 在BLE协议中,有两个角色,周边(Periphery)和中央(Central):周边是数据提供者,中央是数据使用/处理者:在iOS SDK里面,可以把一个iOS设备作为一个周边,也可以作为一个中央:但是在Android SDK里面,直到目前最新的And…
web网页程序修改 打开gStudio之后,点击菜单栏中Help->Contents.先把这个诡异的编程语言看一遍吧.这里搬一些东西出来. GoDB简介 从第一副图片中,我们可以看出,从源文件到可执行文件的过程. 从第二幅图我们可以了解到GoDB是如何跨平台的. 编程语言的话: GBasic is a variant of the Basic Language included in GoDB platform as the scripting language. 这种编程语言大小写不区分,真是…
包类型: 01命令/02数据/03应答消息 开始标志FF/本数据包长度(注意是16进制)/校验码/包ID/包类型01: 表示是命令/01表示下面要开始传输/03字符串编号/字符串长度/结束位FEFF           09                                   3B      2C    01                           01                         03                  0A          F…
由于要写TM1680, 写命令跟写数据, 所以需要使用CC2541的I2C, 2541是有硬件I2C的. tm1680.c: #include "tm1680.h" //TM1680是先发送配置, 然后发送数据.void masterConfig(void);void masterSendData(void); void sendTest(void){    //uint8 buffer[24]={0x0f,0x0e};    //HalI2CWrite(2, buffer);   …
SPI就是用4条线来串行传输数据, 2541只能用模拟的方式用GPIO来做. //******************************************************************************//                      INCLUDES//******************************************************************************#include <ioCC2541.…
uint8 ownAddress[B_ADDR_LEN];  //B_ADDR_LEN=6GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress); #define   GAPROLE_BD_ADDR   0x304 Device's Address. Read Only. Size is uint8[B_ADDR_LEN]. This item is read from the controller. 读出正确,低字节在前…
主机会运行SCAN来搜寻广播中的设备 运行函数: GAPCentralRole_StartDiscovery( DEFAULT_DISCOVERY_MODE, DEFAULT_DISCOVERY_ACTIVE_SCAN, DEFAULT_DISCOVERY_WHITE_LIST ); /** * @brief Start a device discovery scan. * * Public function defined in central.h. */ bStatus_t GAPCentr…
// Setup the GAP Bond Manager { uint32 passkey = 0; // passkey "000000" uint8 pairMode = GAPBOND_PAIRING_MODE_WAIT_FOR_REQ; uint8 mitm = TRUE; uint8 ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY; uint8 bonding = TRUE; GAPBondMgr_SetParameter( GAPBOND_DEFA…
蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开. 如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.b…