摘要:1.android 4.3.1(Build.VERSION_CODES.JELLY_BEAN_MR2)增加的startLeScan(callback)方法,官方在5.0之后不建议使用,实测此方法,4.3至目前6.0版本还是很稳定的,毫秒级无限返回蓝牙数据,很稳定,就是很耗电; 2.android5.
阅读全文
摘要:广播信道频点的选择原则上是为了远离诸如WiFi接入点的严重干扰。这些接入点通常选择802.11信道中的3个:信道1、6、11。这几个信道的中心频率分别为2412/2437/2462,宽度大概为20MHZ。这意味着信道1占据2402-2422,信道6占据2427-2447,信道11占据2452-247
阅读全文
摘要:/** * Battery level conversion from ADC to a percentage: * * The maximum ADC value for the battery voltage level is 511 for a * 10-bit convers...
阅读全文
摘要:在蓝牙4.0的开发中,很多数据类型都用到了 unsigned char ,我觉得用这个类型的一个原因是相比较于整型,它占的空间更少。比如:unsigned char a = 1; // 占1个字节int a = 1; // 占2个字节--------------------------------...
阅读全文
摘要:1. 在外围设备和中心设备建立连接的过程:a) 从设备发射广播(广播中包含从设备的服务的 UUID 列表);b) 主设备扫描,让主设备扫描只是一个简单的 API ;c) 如果主设备扫描到设备后(正是根据从设备的广播而发现的,此时是没有建立连接但是主设备和从设备通信了),就会触发一个设备发现的事件;d...
阅读全文
摘要:我能为别人做点什么?这是我最近在思考的问题。看了 ADC 电源监测代码,觉得对 ADC 的理解不到位,代码中有很多部分都不懂。如:1. 为什么初始化的时候管脚设置为输出?2. ADC 采集到的值是什么样的值,有范围吗?3. 为什么需要 ADC,具体阐述模拟量和数字量?带着这些问题先看一遍芯片手册。看...
阅读全文
摘要:在 TI 给的 SimpleBleCentral demo 里,读取 RSSI 的原理是:按 CC2540EM 的下键,然后调用 GapCentralRole 里的函数,启动定时器,不断向 OSAL 层发送 Message ,然后调用 HCI 层的 CMD 读取 RSSI ,最后将值传回 APP 层...
阅读全文
摘要:#include typedef void (*fun_cb)(int a, int b);static fun_cb exe_fun_cb;void fun_cb_input(int, int);void setUp_cb(fun_cb);void main(){ setUp_cb(...
阅读全文
摘要:这里的需求是完成一个cc2540 RF测试程序。实现功能为开发板按键控制 RF 发射频率的改变。首先被告知要用PTM来做这个测试程序,然后我去了PTM的介绍文档,地址为http://processors.wiki.ti.com/index.php/PTM经过阅读后知道PTM就是为了测试而诞生的,它主...
阅读全文
摘要:头文件定义部分:#define HAL_LED_1 0x01#define HAL_LED_2 0x02#define HAL_LED_3 0x04#define HAL_LED_4 0x08#define HAL_LED_ALL (HAL_LED_1 | HAL_LED...
阅读全文
摘要:蓝牙协议栈里的操作系统叫做 OSAL(操作系统抽象层)。它并非一个真正意义上的操作系统,它只是实现了操作系统的一些功能,如任务切换、内存管理。OSAL 产生的根源:基于蓝牙协议栈开发的产品,实际上是一个应用层的应用程序,而每个应用程序可以看成是一个任务,为了实现多个任务的切换、同步、互斥等,这时就需...
阅读全文
摘要:蓝牙4.0对事件处理的方式为:把所有的事件放在一个事件表中,每个事件都有优先级,协议执行的整个过程为轮询事件表,响应事件。而事件在时间表中的存储方式为函数指针。下面结合代码部分:定义函数指针:typedef unsigned short (*pTaskEventHandlerFn)( unsigne...
阅读全文