Nordic芯片中某些芯片的一个机制

nrf51822和nrf52832的bug

从徐大佬那里了解到的,没想到到了nrf52832还有这个,感觉不算一个bug,而像一个设计。个人理解,哈哈
其主要是:
		可以通过设置寄存器可以控制接受数据包的access address,其实就是ble的访问地址。
		然后利用芯片寄存器设置CRC以及其他操作来获取到数据包数据。主要使用的寄存器字段
		1.PCNF0寄存器中几个字段,来影响接受数据包的长度以及其他东西,下面详细说。
		2.PCNF1寄存器 STATLEN字段,静态字段。
		3.CRCCNF  配置CRC的,可以配置而不使用CRC
		4.DATAWHITEIV 白化处理配置

nrf52832接受的数据

nrf52832数据手册中指出只有部分数据可以出现在内存中。对于标准的BLE数据包来说,s0,length
s1,设置成符合BLE包即。一般情况下,其中preame、address、crc是不会出现在内存中的。但static
段可以出现在内存中,可以将BLE包所有当成BLE段,然后利用下面的机制.(看过徐大佬的之后,感觉
好神奇.)
还有一个就是preame,芯片通过前导码来识别数据包,然后进行地址匹配来识别通信的终端,可以通过
PCNF0来配置其地址,利用上面所的。那个prefx是死的(1byte)。而base则是可以配置的,虽然说规定
的是[2,4],但是可以设置成1,( 这就是所说的那个bug )。然后配合preame和一些设置,可以抓取任意
包。

在这里插入图片描述

nrf52832的the static payload

按说BLE是不需要该段的,但是现在需要利用他。再抓取包的时候,要获取access address
不知道这个地址,所以要抓取任意包,然后分析出正确的access address。其实就是循环扫描
非广播信道,来提取access address.

在这里插入图片描述

nrf52832抓取任意包机制

前面说了preame配置上access address的一些设置实现这个功能。这里进行详细的说一下。
还有一点是***好像芯片在进行地址匹配的时候,可能会读取一大串数据,preame也在匹配
之列****(意思就是,地址匹配也会匹配preame,就是这个意思)。其是:
	1.base address设置成0x00 PREFIX设置成AA
	2.上面说地址匹配会从preame之前,所以相当于把preame当成了access address,以改机制
	来完成任意数据抓取。(其更深层次从原理我也搞不懂)
	3.preame可以为0xAA或者0x55,芯片根据其access address最低位来设置。而这里将preame
	当作访问地址,所以匹配地址可能为0x00AA和0x0055。看徐大佬的方案,直接利用前面两个地址
	数字关系。(0x55<<2不就是0xAA,也就是说AA>>两位不就是55对应的吗)
出现干扰情况还没学会。。。。,出现干扰就是多01导致提前地址匹配,从而后面数据多出来一些
杂乱数据。要明白一点,信道传输least先传输。1010传输0101 而 0101传输1010,所以匹配你懂
00000000 10101010 access address       		0xAA
00000000 01010101 0 access address	 		 0x55 所以需要删除payload的LSB
00000000 10101010 1010 access address

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值