这段时间学习4.0协议里的BLE,遇到了一个关于CRC bit ordering的问题,希望社区里的大牛能帮忙解答一下,谢谢!
我在4.0协议的vol. 6 part B 1.2中看到了关于BLE包bit ordering的规定,其中除CRC外的其余域是按照从小端到大端的顺序传输的,而CRC是按照从大端到小端的顺序传输的。我用Packet Sniffer采集了BLE packet,如下图所示:
根据协议规定,PDU Header应该是:00 13,AdvA应该是:E4 1F 99 E5 C5 78,AdvData应该是02 01 05 03 19 C1 03 05 02 12 18 0F 18。这三个域中的每个byte都是按照从小端到大端的顺序传输的。
然后我按照协议中定义的CRC生成算法计算了整个PDU的CRC,得到的CRC是1111 0011 0100 1100 1110 0101,按照协议规定,CRC是从大端到小端传输的,因此得到的CRC就是0xF34CE5,而反过来看,即按照从小端到大端顺序,得到的CRC是0xA732CF,即如Packet Sniffer中所示。
我对此感到很困惑,不知道是我对协议产生了误解还是Packet Sniffer的显示格式有问题,哪位大神能帮我解答一下是哪里出了问题?谢谢!