新手入门, 积分 8, 距离下一级还需 12 积汾 |
请去掉“使用ramisp”的勾勾,谢谢 |
STM32在芯片生产过程中内嵌了一段引導程序其作用就是通过串口将程序下载到Flash中,为以后的软件更新提供了极大的便利用户不需要利用仿真口进行下载程序,从而极大的提高了工作效率
STM32复位之后,如果检测到Boot1引脚为低电平boot0引脚为高电平,芯片就执行内部固话的ISP引导程序接收来自上位机的命令和数据。整个烧录过程如下图所示:
在给STM32复位之前,首先要确定BOOT0,BOOT1引脚的状态.通过各种方式,先让BOOT0处于高电平状态,BOOT1处于低电平状态,然后在RST脚上产生一个負脉冲,STM32就能进入ISP状态.注意,复位之后,一定要延时一定的时间,让ISP程序稳定,才能发送指令和数据.
复位后ISP程序已经处于接受连接的状态,电脑软件串口设置成波特率,偶校验,8位数据位1位停止位,然后发送一个0x7f,等待STM32回复STM32的ISP程序利用这个0x7f来测试波特率,如果收到了0X79,表示连接成功了,可以進入下一步操作;否则,必须检测BOOT0,BOOT1引脚,并重新复位STM32.
发送0x020xFD.命令发送之后,需要等待STM32 ISP程序回复,如果接收到0x79,读取成功。
发送一个双字节命令0x44+0xBB,让芯片执行擦除动作,等待回复0x79,然后再发送0xFFFF+0x00命令,让芯片招待全片擦除.如果接收到0x79,表明全片擦成功了!
全片擦除之后,就可以开始烧录程序了.首先发送双字节指令0x31+0xCE回复0x79,则继续用多字节命令(5个字节)发送一个32位的地址,此地址就是等待写入数据的地址,注意4个字节对齐.收到回复0x79之后,就可以发送N个字节数據了(注意N最大为256).重复以下过程,直到把所有代码发送出去
烧录完毕之后,为了防止程序被读出,可以设置读保护.发送双字节命令0x82,~0x82,先行回复0x79,再等待┅次0x79,回复成功之后,表明芯片已经被读保护了.