随笔分类 -  蓝牙方案

摘要:Preamble: 引导码, 为1个字节, 不显示出来. Access Address: 访问地址, 长度为4个字节, 所有广播包的访问地址都是0x8E89BED6, 如下图. 当PDU在广播信道传输时, 就是广播PDU, 如果在数据信道传输, 就是数据PDU, CRC就是根据这个PDU计算的. 广 阅读全文
posted @ 2017-01-18 14:56 Montauk 阅读(702) 评论(0) 推荐(0)
摘要:因为红外遥控要占用的系统中断时间可能超过了80ms, 极有可能导致蓝牙断线, 特别是连续两次按键, 100%断线. 后来根据蓝牙技术群里的哥们提示, 觉得不能在一个中断中delay得太久, 只能用任务跟事件的情势来实现了. 首先原理是, 利用现有的SimpleBLEPeripheval的这个任务, 阅读全文
posted @ 2016-09-29 15:34 Montauk 阅读(739) 评论(0) 推荐(0)
摘要:被突如其来的一个bug困扰了好几天, 起因是, 按键接的红外接收器, 结果发现, 一旦按下之后, IEN1, P0IE的标识位bit5, 被不知道特么的谁归0了, 也就是说, 按键只能被按下一次, 再按就不进中断了. 后来研究了甜总的自定义按键. http://blog.csdn.net/feilu 阅读全文
posted @ 2016-09-21 11:33 Montauk 阅读(467) 评论(0) 推荐(0)
摘要:分别是P0, P1, P2中断使能. 阅读全文
posted @ 2016-09-18 12:01 Montauk 阅读(469) 评论(0) 推荐(0)
摘要:这个配置或者说任务, 让这个蓝牙设备成为了一个简单的BLE外设. 这里定义了外设的广播数据, 以及最重要, char被改变之后的回调, 引出后来的coreHandler里面的, ack 以及写e2prom. /********************************************* 阅读全文
posted @ 2016-09-16 10:43 Montauk 阅读(5161) 评论(0) 推荐(0)
摘要:买的E2PROM是128*8bit的, 就是只能存储128个byte, 妈的, 买小了. 实际需要的是10句, 可能加两个特殊句, "新手"跟"故障", 一共12个字符, 除了后面两个特殊的, 每个句子有最多30个字, 每个字是2个byte, 一句话就是30*2=60+2(语句编号/语句长度)个by 阅读全文
posted @ 2016-09-04 10:32 Montauk 阅读(333) 评论(0) 推荐(0)
摘要:1. 首先要考虑将String转成一个bytes的数组, 每个汉字是3个bytes, 英文或者标点是1个byte. 2. 然后去判断一下每一个byte的前面几个bit, 看下面的表, 1个byte的字符, 就是英文跟标点, 它的第1个bit是0; 3. 重点是3个bytes的字符, 就是汉字, 或者 阅读全文
posted @ 2016-09-02 20:33 Montauk 阅读(1725) 评论(0) 推荐(0)
摘要:1. App端会发送一定数量的byte过来蓝牙, 每2个byte是一个汉字的编码. 2. 拿到汉字编码之后, 统计字符数量, 然后通过SPI, 搜索编码 3. 收到的编码, 每个汉字字符有32个byte, 如果一句话有30个汉字, 及960个byte,乘以8, 就是7680, 大约8K, 24C08 阅读全文
posted @ 2016-08-28 00:12 Montauk 阅读(299) 评论(0) 推荐(0)
摘要:P1SEL寄存器, 0xF4, 功能选择用的, 0表示GPIO口, 1表示外设. 寄存器0x90, 是制度的, 表示P1的8个引脚的状态. Port1的方向, 0表示输入, 1是输出. 阅读全文
posted @ 2016-08-27 13:51 Montauk 阅读(1145) 评论(0) 推荐(0)
摘要:E2PROM(24C02): Flash(w25q): 阅读全文
posted @ 2016-08-25 14:20 Montauk 阅读(595) 评论(0) 推荐(0)
摘要:包类型: 01命令/02数据/03应答消息 开始标志FF/本数据包长度(注意是16进制)/校验码/包ID/包类型01: 表示是命令/01表示下面要开始传输/03字符串编号/字符串长度/结束位FEFF 09 3B 2C 01 01 03 0A FE 0A 0B 0C 0D 0E 0F 10 11 12 阅读全文
posted @ 2016-08-24 20:48 Montauk 阅读(579) 评论(0) 推荐(0)
摘要:由于要写TM1680, 写命令跟写数据, 所以需要使用CC2541的I2C, 2541是有硬件I2C的. tm1680.c: #include "tm1680.h" //TM1680是先发送配置, 然后发送数据.void masterConfig(void);void masterSendData( 阅读全文
posted @ 2016-08-24 10:46 Montauk 阅读(1631) 评论(0) 推荐(0)
摘要:SPI就是用4条线来串行传输数据, 2541只能用模拟的方式用GPIO来做. //******************************************************************************// INCLUDES//****************** 阅读全文
posted @ 2016-08-24 10:42 Montauk 阅读(2356) 评论(0) 推荐(0)
摘要:NXP的这个BLE蓝牙方案也很有趣, 一起研究. 这个函数在app_gpa_task.c里面 **************************************************************************************** * @brief Handl 阅读全文
posted @ 2016-05-31 11:45 Montauk 阅读(887) 评论(0) 推荐(0)
摘要:1. CC254x的软件基于OSAL架构 2. OSAL并非一个真的操作系统, 而只是让软件设立一个事件的执行方法(setup excution of events) 3. 每一个子系统都在OSAL的一个任务(task)执行并由一个独立的task id. 4. task id越小, 优先级别越高 5 阅读全文
posted @ 2016-05-26 15:11 Montauk 阅读(3483) 评论(0) 推荐(0)
摘要: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个 阅读全文
posted @ 2016-05-26 13:45 Montauk 阅读(1461) 评论(0) 推荐(1)
摘要:通用属性配置(Generic Attribute Profiles) 1. 数据在services里面以特征字(characteristics)的形式展示出来 如你所见, 特征字包含属性(Properties), 值(Value), 跟若干描述(Descriptor) 上面的截图描述了, 句柄在40 阅读全文
posted @ 2016-05-26 13:17 Montauk 阅读(528) 评论(0) 推荐(0)
摘要:连接更新请求(connection update request) 如果slave不满意现有的连接参数, 比如间隔, 延迟等等, 可以向master提出自己希望的参数范围 连接终止(connection termination) 1. master跟slave都可以终止连接 2. 如果超时时间到, 阅读全文
posted @ 2016-05-26 12:20 Montauk 阅读(843) 评论(0) 推荐(0)
摘要:约定, 第一次翻译这种东西, 专有名词的翻译原则还是不太清楚, 总之涉及有可能误解的词, 都用双语, 如果是简单的, 直接英文或者中文, 取决于我是否能找到中文合适的词来翻译. 何为BLE: 1. 是一种蓝牙联盟Bluetooth Special Interest Group(BT-SIG)制定的无 阅读全文
posted @ 2016-05-26 11:27 Montauk 阅读(933) 评论(0) 推荐(0)