最近参考bitcraze的程序,做了一个类似的板子,MCU同样使用STM32F072RBT6,除了LED和DWM1000 reset pin不同,其他都差不多一样,目前开发阶段,最后完成了会发布整个版本。
这里讲下板子上EEPROM保存的数据内容格式,主要保存了地址,板子的类型(Anchor还是Tag)和基站列表。具体格式如下:
(1)Head,5bytes
(2)Payload,0~19bytes
(3)Checksum,1byte
目前程序中定义只用到25字节,程序定义如下:
<span style="font-size:14px;">#define NUMBER_OF_BYTES_READ 25</span><pre name="code" class="cpp"><span style="font-size:14px;">static uint8_t buffer[NUMBER_OF_BYTES_READ];</span>
那buffer这个数组,对应到上面的数据格式,会存储所以的EEPROM中的25个字节。
(1)Head具体定义:
byte:0:MAGIC, 0xBC
byte1:Major Version,0x01
byte2:Minor Version, 0x00
byte3:Length of Payload(TLV):跟byte 4 一起决定Payload的长度
byte4:Length of Payload(TLV)
(2)Payload具体定义:
byte 5:field,
byte6:value length
byte7:value(if value length >1, byte8,byt9... will exist value)
(3)Checksum
是Head和Payload的总和。
Define | Value |
MAGIC | 0xBC |
Major Version | 0x01 |
Minor Version | 0x00 |
Length of TLV | 0x00 |
Length of TLV | 0x00 |
field(Address) | 0x00 |
value length | 0x01 |
value(Address 0x00) | 0x00 |
field(Mode) | 0x01 |
value length | 0x01 |
value(Mode Anchor 0x00) | 0x00 |
field(Anchorlist) | 0x02 |
value length | 0x06 |
value(anchors list address) | 0x01 |
value(anchors list address) | 0x02 |
value(anchors list address) | 0x03 |
value(anchors list address) | 0x04 |
value(anchors list address) | 0x05 |
value(anchors list address) | 0x06 |
checksum | 上面所有值的和 |