在学习 BLUENRG-LP 的过程中,及时地把碰到的问题记录下来,并作解答,形成本文档。
该文档会时时更新,并且当某些章节内容过多时,会独立出来,形成新的文章。
FLASH 存放固件和用户数据。支持读、写保护
OTP (1KB) 存放用户数据,支持读、写保护
ROM (7KB) 不对用户开放。存放 UART BOOTLOADER 固件和一些芯片的配置信息,如ADC校准值
2Mbps:更高数据吞吐率
LE 2M PHY,比特率为 2Mb/s,不支持 ECC;减少冗余度以提高传输吞吐率。
关于 1M PHY:
蓝牙 4.2 采用 LE 1M PHY,即比特率为 1Mb/s 的 PHY;必选。
支持 ECC (error correcting coding,可选)
根据编码方式的不同,支持 3 种比特率:1Mb/s,500Mb/s (LE Coded),125Kb/s (LE Coded),其实就是冗余度的增加导致了比特率的下降,带来的好处就是能对空中的数据进行纠错从而可以传的更远
Long range:更远的通讯距离
Channel selection algorithm #2:,通道选择算法 2,可避免干扰和多路径衰落效应
参考文章:https://blog.51cto.com/11134889/2317010
GATT caching:
以下是网友总结:
新增功能
协议层
描述
Slot Availability Mask (SAM)
物理层
标记设备的收发时间块。其他蓝牙设备获取该信息即可避免在该设备忙碌时争抢信道资源,这有利于在信道资源有限的情况下维持多设备同时工作,这个特性仅适用于经典蓝牙。
2 Mbit/s PHY for LE
物理层
2Mbit/s比特率的物理层。以前的物理层都是1Mbit/s比特率,这个特性从物理层提升了传输速率。
LE Long Range
物理层
该特性由多个方面共同实现。最高20dBm的发射功率(以前是10dBm),编码型物理层最低-82dBm接收灵敏度(以前是-70dBm),8位前向纠错编码FEC(以前没有),这些新特性共同实现了更远的通信距离,官方宣称能比过去提高4倍传输距离,实际测试高达750米。
High Duty Cycle Non-Connectable Advertising
链路层
在协议文档中未找到针对该特性的描述,从网络上也未获取有用信息。根据一个已有的类似概念“High Duty Cycle Connectable Advertising”,可以推测这个广播事件类型就是广播间隔更短,并且限制广播总时间,超时后将停止广播。
LE Advertising Extensions
链路层
扩展广播。以前广播仅仅使用37/38/39三个广播信道,现在可以使用扩展广播包,在0-36数据信道上传输,以前广播数据最大为31字节,现在扩展广播的数据长度最大可达255字节,所以官方宣称广播数据容量扩展8倍。
LE Channel Selection Algorithm #2
物理层
一种新的跳频算法。以前的算法仅用于连接数据的跳频,现在数据信道支持传输广播数据,以前的跳频算会产生性能问题,新的跳频算法可以用于连接数据通信的跳频和周期广播数据的跳频。
选型(电流评估、资源评估、成本评估)
开发(编译工具、调试工具)
生产(烧录工具、测试工具)
timer module 是一个软件模块。
该软件模块管理了芯片内部链路控制器硬件的各个定时器,关于这些定时器的详细介绍,可在射频控制器参考手册里找到。
timer module 根据抽象程度的不同分为了两个层次 (HAL, LL)。可为设备的唤醒、用户超时触发和预配置的射频事务触发关联一个事件;举个例子,用户可编程一个事件,实现:
timer module 的源码实现包含以下文件:
bluenrg_lp_hal_vtimer.h
bluenrg_lp_hal_vtimer.c
bluenrg_lp_ll_timer.h
bluenrg_lp_ll_timer.c
ll 层比较靠近硬件,主要实现了对硬件定时器的编程、低频时钟的管理和定时时间的转换(将 hal 的时间值转化为硬件定时器寄存器的值)
hal 层是对 ll 层的进一步抽象,封装了硬件的细节。主要实现了虚拟定时器序列,回调管理,校准调度,射频事件调度等。
虚拟定时器
链路控制器计数器。链路控制器中有一个计数器,定时器模块可利用该硬件计数器来虚拟出多个软件定时器。
时间基准。虚拟定时器的有一个特定的单位,称为系统时间单位(STU system time unit)。一个 STU = 625/256 us。在对真正的计数器进行编程之前,需要将用 STUs 表示的时间转换到硬件计时器计数单元中。
校准间隔。是一个参数,可以在初始化阶段设置,以决定该设备需要多长时间对内部振荡器的频率进行测量;当计数器使用的时钟源是外部晶振时,则不需要该参数。
射频计数器
BLUENRG-LP 提供了另外一个定时器专门用于触发射频事务(transaction)。该事务可以是一次射频发送、或射频接收。
休眠管理
定时器模块可避免系统在以下条件下进入休眠:
ST 的芯片在多连(一拖多,主从一体)特性的支持上有优化,达到行业领先水平。BLUENRG-1/-2 关于此的实现相关资料如下:
DEEPSTOP 模式下,唤醒源可能是:
通过运行在低频时钟的内部唤醒定时器,射频模块能产生两种事件来唤醒系统:
RTC 事件
IWDG 产生的复位事件
多达 28 个的 GPIO 事件(PA0~15, PB0~11)
SHUTDOWN 模式下,只能通过拉高拉低复位引脚来唤醒系统
在大多数口(非全部)上可以:PA0~15, PB0~11
芯片上电(或复位)后,芯片内部的 ROM 代码会先运行,
当检测到 PA10 脚为低电平时,会直接跑进 FLASH 开始运行 用户固件(运行失败会停在 while(1) )。
当检测到 PA10 脚为高电平时,会运行 UART BOOTLOADER 流程。
UART BOOTLOADER 可通过串口接收用户指令,执行一系列的操作。其特性为:
UART BOOTLOADER 详细的介绍,参照文档:AN5471: The BlueNRG-LP UART bootloader protocol
手机扫一扫
移动阅读更方便
你可能感兴趣的文章