LBDP-Z支持STM32通过无线模块实现在线升级

LBDP-Z可支持STM32通过无线模块实现在线升级,支持单播或广播模式。

LBDP-Z可变数据域报文

SD2 LE LEr SD2 GA SA FC DU FCS ED

SD2 起始字节,ED结束字节,GA组地址,SA从站地址/源地址,DA目的地址,LE/LEr数据域长度,FC控制字节,FCS校验字节。

GA为组地址,可表示0x02~0x7E共125个组;0x7F表示广播,0x00、0x01和0x80~0xFF保留。
SA为从站地址,可表示0x02~0x7E共125个从站;0x7F表示广播,0x00、0x01和0x80~0xFF保留。

DU为数据域,格式为FCm D0~Dn.

FCm = 0x41  后跟1个Hex行

HEX格式文件以行为单位,每行由“:”(0x3a)开始,以回车键结束(0x0d,0x0a)。

行内的数据都是由两个字符表示一个16进制字节,比如”01”就表示数0x01;”0a”,就表示0x0a。

对于16位的地址,则高位在前低位在后,比如地址0x010a,在HEX格式文件中就表示为字符串”010a”。

下面为HEX文件中的一行:

:10000000FF0462FF051EFF0A93FF0572FF0A93FFBC

“:”表示一行的开始。

“:”后的第1,2个字符“10”表示本行包含的数据的长度,这里就是0x10即16个。

第3,4,5,6个字符“0000”表示数据存储的起始地址,这里表示从0x0000地址开始存储16个数据,其中高位地址在前,低位地址在后。

第7,8个字符“00”表示数据的类型。该类型总共有以下几种:

00 ----数据记录       01 ----文件结束记录 02 ----扩展段地址记录 04 ----扩展线性地址记录

这里就是0x00即为普通数据记录。

自后的32个字符就是本行包含的数据,每两个字符表示一个字节数据,总共有16个字节数据跟行首的记录的长度相一致。

最后两个字符表示校验码。

每个HEX格式的最后一行都是固定为:

:00000001FF

如果FC41是广播报文则不回复,否则回:SC。

FCm = 0x51 后跟bin格式报文:

0x51 类型(0x01)  数据长度(1B)  起始地址(4B 例:0x08 00 30 00) 代码(最多128B) 校验码(2B)

bin格式比Hex格式升级速度快8倍。

类型:

01 数据

02 校验范围,例:

原文地址:https://www.cnblogs.com/shlb/p/12237418.html

时间: 2024-10-12 20:10:45

LBDP-Z支持STM32通过无线模块实现在线升级的相关文章

LBDP-Z支持STM32通过无线模块实现在线升级(二)

LBDP-Z可支持STM32通过无线模块实现在线升级,FCm = 0x41/0x51仅支持广播模式(取消单播升级模式). 因广播模式可能发生丢包,因此需要多次发送,在代码校验后进行升级操作.增加FCn=0x39命令: FCn=0x39: 校验flash.设置升级标志并复位,后跟6字数据,开始地址(2B) ,长度(2B) ,CRC校验(2B) . 增加FCm = 0x43,支持单播升级模式. FCm = 0x43  后跟6+n字数据,开始地址(2B) ,长度(2B) ,CRC校验(2B),代码数据

nRF2401A/nRF24L01/nRF24L01+无线模块最常见问题汇集(转)

俗话说:每个人一生下来什么都会的,都是通过自己努力和探索出来的,NRF系列芯片,刚开始都好奇心加兴趣才来捣鼓它的,刚开始做硬件和软件,没有收发数据弄得整个人头都快炸开了,所以在此和大家分享一下前辈的经验,希望大家会少走弯路. Q:最近在选型的时候发现基本常见的无线模块都是3V供电,而我使用的单片机是5V的,它们之间要怎么连接呢?直接连接会不会损坏模块? 回答: 如果你使用的51单片机的P0口是高阻引脚,可以直接将无线模块的IO脚连接到P0端口,并在对应的连线与3V电源间放置1K~10K左右的偏置

无线模块数据加密,反码校验,发送字符串"ABCDEFGHIJKLMNOP" LED频闪

[原帖必看,不然你看不懂本帖] 单片机编码 无线模块发送与接收 程序 [说明]:                        [发送端]: LED亮灭跟随发送状态 发送字符串"ABCDEFGHIJKLMNOP" 发送过程,用"春哥"的GBK码对字符串异或运算加密 数据校验:采用反码校验,先发送源码,再发送反码,抗干扰 [接收端] 接收加密的源码,用"春哥"的GBK码对字符串异或运算解密,得到源码 接收反码,反码与源码比较 接收字符串 判断字符串

无线模块 RXB12-315m TXB12-315M 应用

最近有个产品用到这对模块,由于没有什么技术支持,就直接上机调试,测试结果为带障碍发射距离60米. 以下是应用的几个知识点: 1:编程操作,其实比较简单,调制信号315M是模块自带的,不需要调制和解调,我们只需控制自己的协议即可,我用的是红外发射的协议来控制. 2:发射位和接受位是相反的,即你发送一个1,接受的是0 3:天线 ,这个也重要,关系到发射的距离和稳定性,频率 15M,波长 20米,可以使用1/4波长(即天线长度等于1/4波长,315M对应23.8CM),具体波长 可以借用波长计算器,以

如何使用无线模块WizFi210的HTTP功能?

 点击了解:无线模块WizFi210 1.HTTP和HTTPS简介 1.1 HTTP简介 HTTP即超文本传输协议(Hyper Text Transfer Protocol),客户端(User Agent)通过WEB浏览器或网络爬虫等工具向服务器(网站)上指定端口(默认为80)以URL(统一资源定位符,即网址)的形式发起一个HTTP请求(一般为GET.POST),服务器监听到这一请求后会回复一个状态行+响应消息的主体,从而形成了一个完整的HTTP"请求-响应"过程,而这一过程是建立

ZigBee模块的功能是什么 和433无线模块区别在哪里

ZigBee 是一种基于标准的远程监控.控制和传感器网络应用技术.为满足人们对支持低数据速率.低功耗.安全性和可靠性,而且经济高效的标准型无线网络解决方案的需求,ZigBee 标准应运而生.核心市场是消费类电子产品.能源管理和效率.医疗保健.家庭自动化.电信服务.楼宇自动化以及工业自动化. 什么是ZigBee模块: 围绕ZigBee芯片技术推出的外围电路,称之为"ZigBee模块",常见的ZigBee模块都是遵循IEEE802.15.4的国际标准,并且运行在2.4GHZ的频段上,另外,

51单片机对无线模块nRF24L01简单的控制收发程序

它的一些物理特性如工作频段.供电电压.数据传输速率就不详细介绍了,直接上代码. 1.首先是发送端: // Define SPI pins #include <reg51.h> #define uchar unsigned char /***************************************************/ #define TX_ADR_WIDTH 5 // 5字节宽度的发送/接收地址 #define TX_PLOAD_WIDTH 4 // 数据通道有效数据宽度

CC1101 433无线模块,STM8串口透传

CC1101 433无线模块,STM8串口透传 原理图:http://download.csdn.net/detail/cp1300/7496509 下面是STM8程序 CC1101.C [cpp] view plaincopy /************************************************************************************************************* * 文件名: CC1101.c * 功能:  S

[51单片机] nRF24L01 无线模块 测试 按键-灯-远程控制

哈哈,穷吊死一个,自己做的一个超简单的板还没有电源提供,只得借助我的大开发板啦.其实这2个模块是完全可以分开的,无线嘛,你懂得!进入正题,这个实验的功能就是一个发送模块(大的那个板)连接4个按键,通过按动这4个不同的按键来发送4种不同的命令,来控制接收端(小的板)点亮4个不同的灯. >_<!首先是发送模块: 1 void main() 2 { 3 uchar Tx_Buf1[]={1}; //发送的信息1 4 uchar Rx_Buf[32]; //接收到的数据暂存器,最多32字节数据 5 i