蓝牙配对码配置错误_蓝牙电路实现详解3

一个典型蓝牙控制器的基本结构如图,右上角处理器处理上层协议,并通过ahb的总线接口将命令与数据配置到reg和sram中。生成的串行bit数据送入左下modem。左边的radio为蓝牙收发的模拟电路,接受link控制的配置。

570404d6db56f14403403270125f92d6.png

以上结构中,除了跟cpu交互用到的bus interface, register,sram,还有另外很多模块,这里逐一解释一下功能。

这里最核心的模块是mem control,基本所有模块都连接它,这相当于一个仲裁器,允许多个部件按优先级访问sram,sram中的命令和数据,可以同时被cpu,包控制器,事件控制器,射频控制这些部件访问。

timing gen负责产生蓝牙对应的各种时序信号。包括1us 625us 312.5us的脉冲。其中1us对应着蓝牙每个符号的发送时长,也就是发送给modem的串行数据流,每个bit发送1us。625us对应slot时长,发送广播包的间隔至少是1slot

aes ccm负责蓝牙数据的加密解密。蓝牙包的数据部分可以传输加密数据。加密方法使用aes ccm,基础加密模块128位的aes, ccm的操作方法如下,

先通过ccm B生成32位mic值,然后通过ccm A对数据进行加密。ccm B的结构如图。

e039f465dc28a7e90cf8660b04ffde3d.png

其中cs sk是128位的aes key,B1-BX 是需要传输的包的内容,这里的Y0-YX 只取YX的的最低32位作为mic。 B0的128位构成如下

f7bd73700de6d93455d1362d3a09680e.png

其中nounce的104位结构如下

9fad3fe55eb72357fc52313faedd8864.png

这里packetcounter用来计数发送了多少包,iv是初始向量,也由软件设置。

得到mic后通过ccm A加密数据,结构如图。

65b475656090872122a9fa59b77b2628.png

其中cs sk是128位的aes key,mic是刚才CCM B算出的,这里的A0-An 128位构成如下

4b6f0f94861d7cd8fbb02ddb0543a062.png

ccm A得到的加密数据在发送最后需要添加加密的mic一起发送,解密的过程与加密相反,先解密,然后检查mic是否正确。

int controller在发送,接收到包,或者出错是产生中断,通知cpu进行处理。

frequency selection 负责对发送的包选择传输频率。蓝牙的发送频率与频道对应关系如下

56550936549c859380305f25458fb9ff.png

其中频道37 38 39为广播频道,其他为数据频道,建立连接前的adv包,通过广播频道发送,数据包通过数据频道发送。本模块在发送或者接受包数据前,需要先调整射频部分的振荡器,让他工作在合适的频点

radio control负责控制射频部分的时序以及相应参数配置,包括何时开启发射或接受电路的电源,何时让振荡器起震,调整并锁定agc,填充数据,关闭电路等。

bit strem中的 CRC和whiten,分别对应包数据的CRC校验生成与数据白化

这里crc生成24位校验位,使用的多项式为

9dded3bb2f880aadfb7a131c7df70e22.png

数据白化为了避免发射数据长期不翻转,人工增加翻转率,使用的移位多项式如下。

c2518ad1ebca12c6f11d3e8fe4780931.png

移位寄存器的初始值为发射或接收的 频道代码。

packet control负责控制包的收发过程中的状态跳转,比如发包时的发送前缀码,发送同步吗,发送包头,发数据,发crc等

event control控制adv init connect scan 各个状态以及子状态之间的跳转,

event scheduler 控制从mem中预取指令数据,触发event control,协调各模块工作。

white list 负责对地址白名单进行检索,决定是否与之配对。

对于7种广播包,在发送时,都会在包的数据段发送48wei的device addr, 比如adv ind

8067ef91220a61d975768e296b66ddd5.png

这里advA 的48位定义如下

e82f871b325df24985393fc7dbd273d9.png

接收到这个包的设备,可以选择对这个包依据advA进行过滤,如果内存中有这个地址,则进行回应,如果没有这个地址,则直接丢弃这个包。

以上是link控制器的主要功能介绍。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值