蓝牙PSKEY的调整
BlueCore
CMOS单芯片方案 在2002年,英国的Cambridge Silicon Radio公司(简称CSR)推出了名为BlueCore(蓝牙核心)的真正的CMOS单芯片方案(高频组件+基带控制器),并成功地把其后继版本BlueCore 2-External芯片的价格降至5美元以下。最终,促使了蓝牙产品的起飞。
Bluecore内部有些配置寄存器,称为PSKEY,这些寄存器不可随意更改,因其事关重大,稍有不慎改动便会造成运行的不稳定或无法工作,Bluecore的初始化便是从读取这些寄存器配置器件开始的,比如UART的使用方式就有RAW,BCSP,H4,H5几种协议方式,只有RAW这种方式才是可以当正常串口使用的,其他的都有自己特定的传输协议,比如HOST Interface可以选择为USB、UART、NONE等,一旦设置为USB,那么程序中对UART的所有操作都是无效的。
这些都是比较简单的PSKEY,稍微有些头脑的人都是可以很容易理解的,但还有一些PSKEY是决定蓝牙传输特性的,就不是那么容易理解的了,除非对蓝牙机制了解得比较透彻,比如ACL链路数据缓冲区的大小设置,这个设置大了容易造成运行时内存不够而死机,小了对传输时间有影响,再比如是否支持AFH,支持则建立连接后采用AFH机制,在有干扰的情况下通信特性会好些,再比如是否可以测量RSSI,这是判断好信道坏信道的一种方式,测量周期是多少,这个周期一到,接收端便会停止正常接收而专对各个信道进行测量评估,限制值是多少,可以判断这个信道是好的还是坏的,等等这些都是事关重大而且不好调整的,所以一般采用CSR已经调好的默认值,最好不要修改或者修改前考虑下后果再或者在CSR的建议下修改,否则无异于自杀式行为。
在这里强调一下,不要以自己的逻辑来改这些PSKEY,蓝牙特性首先遵从于协议机制,然后才会遵从你的逻辑,如果对蓝牙的各种协议不是很了解,不要认为逻辑上这么改是没问题的,因为你的逻辑说不定就违反了哪个协议。所以不要说什么逻辑上应该可以这些话,一定要有这样的观点:你的逻辑相比于蓝牙协议是不堪一击的。
由于这些PSKEY事关重大,所以对于Bluecore来说是不可访问的,对应用程序来说是即不能读也不能写,比如Bluecore无法知道自己设备的蓝牙地址是多少。那么怎么调整它们呢?因为有的是必须调整的,比如必须禁止低功耗模式否则会对UART通信有影响,方式只有一个:HOST+相应协议。
这些对Bluecore本身不可见的PSKEY是要通过HOST以特定的传输方式及协议(如BCSP、USB、SPI)来读写的,即对外部主机是可见的,这样便可以在调试或生产过程中通过主机端进行设置,而且生产完后对这些PSKEY值的访问接口就不存在了,改不了了,从而保证了产品运行期间的安全可靠性。