IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【单片机学习之旅】(1-3)stm32F407自举配置 -> 正文阅读

[嵌入式]【单片机学习之旅】(1-3)stm32F407自举配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

什么是自举?自举就是单片机初始化自己达到开始跑程序的过程。
就好比笔记本按下开机键到开机界面的过程。

一、自举模式

在STM32中存储器采用固定的存储器映射,代码区域起始地址为 0x0000 0000(通过 ICode/DCode 总线访问),而数据区域起始地址为 0x2000 0000(通过系统总线访问)。Cortex?-M4F CPU始终通过 ICode 总线获取复位向量,这意味着只有代码区域(通常为 Flash)可以提供自举空间。STM32F4xx 微控制器实施一种特殊机制,可以从其它存储器(如内部 SRAM)进行自举。
在这里插入图片描述

		复位后,在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值,
		用户可以通过设置BOOT1 和 BOOT0 引脚来选择需要的自举模式。
		平常都是选择主Flash启动,有些时候才会选择存储器自举

启动延迟结束后,CPU 将从地址 0x0000 0000 获取栈顶值,然后从始于 0x0000 0004 的自举存储器开始执行代码。
#如果器件从 SRAM 自举,在应用程序初始化代码中,需要使用 NVIC 异常及中断向量表和偏 移寄存器来重新分配 SRAM 中的向量表。

对于F407嵌入式自举程序模式用于通过以下串行接口重新编程 Flash:
● USART1(PA9/PA10)
● USART3(PB10/11 和 PC10/11)
● CAN2(PB5/13)
● USB OTG FS(PA11/12) 从设备模式(DFU:器件固件升级)。
嵌入式自举程序代码位于“系统存储器”中,在芯片生产期间由 ST 编程。
不同型号所支持的串行外设不同,详情请参见应用笔记 AN2606。

二、系统存储器自举

自举程序存储在 STM32 器件的内部自举 ROM 存储器 (系统存储器)中。在芯片生产期间由 ST 编程。其主要任务是通过一种可用的串行外设(USART、CAN、USB、I2C 等)将应用程序下载到内部 Flash 中。每种串行接口都定义了相应的通信协议,其中包含兼容的命令集和序列。

1.自举程序配置

	STM32F40xxx/41xxx 自举程序通过应用模式 1 激活

在这里插入图片描述

	很简单,只需要将Boot0置1,Boot1z置0就行。

系统所需配置:
在这里插入图片描述
在这里插入图片描述
对于 USARTx 自举程序,系统时钟由嵌入式内部高速 RC 提供。执行 CAN 和 DFU 自举程序需要使用频率 (介于 4 MHz 到 26 MHz 之间)的外部时钟。

	可以看出F40xxx系列可以选择的自举串行外设还是很多的
	而F10xxx系列只支持通过USART1进行自举,程序下载方式就少了

2.自举程序选择机制

在这里插入图片描述
上图是对不同串行外设的检测,其中最常用的莫过于USARTx 自举程序。

3.硬件连接要求

在这里插入图片描述

	现在电脑上几乎没有RS232串口,可以用USB转串口代替(CH340、CP2102、PL2303等)

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

	某些单片机甚至还支持IIC,SPI下载。

三、自举程序中使用的协议

1.USART 协议

在这里插入图片描述

当配置STM32微控制器为自举启动,系统将进入自举程序模式
自举程序代码将立即扫描 USARTx_RX 引脚,等待接收 0x7F 数据帧:
一个起始位,0x7F 数据位,偶校验位和一个停止位。

此数据帧的持续时间由 SysTick 定时器测量,并且定时器的计数值用于计算系统时钟相应的波特率因子。代码将初始化相应的串行接口。通过计算出的波特率,发送确认字节(0x79)给主机,表示 STM32 已准备好接收命令。

也就是说微控制器会等外部USART给它发送正确格式的数据帧:0x7F
然后自动根据数据帧持续时间把自己的串口初始化好,并返回0x79回应

—USART 自举程序命令

在这里插入图片描述
编程工具 (PC) 到器件的所有通信均通过如下方式验证:
—校验和:接收到的数据字节块进行异或运算。每个通信结尾增加一个字节(校验和字节),包含前面所有字节异或运算的结果。异或运算所有接收到的字节,即数据包加上校验和字节,结果必须为 0x00
— 针对每条命令,主机都会发送一个字节及其补码(异或结果 = 0x00)
— UART:激活奇偶校验(偶校验)
每个数据包或者被接受(ACK 应答)或者被丢弃(NACK 应答):
? ACK = 0x79
? NACK = 0x1F

针对每个命令在AN3155应用笔记中有详细讲解,可以去STM32官方下载了解
根据这些命令可以自行开发一个上位机进行测试或下载代码

2.其他协议

在这里插入图片描述

详细信息请参考AN3154应用笔记STM32自举程序中使用的CAN协议
USB DFU 协议请参考AN3156应用笔记STM32 自举程序中使用的 USB DFU 协议 

总结

如果说想深入理解stm32的自举过程,可以通过查阅相关文档或开发一个上位机软件来测试自举过程

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:07:47  更:2022-07-04 23:07:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:01:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计