硬件模块

原文约2000字,阅读约需5分钟。发表于:

单片机最小系统的设计 作为无人驾驶车的心脏,单片机扮演了管理底层硬件的角色。谈及单片机的构成,我们可以将其抽象为最小系统,即能实现最基础的功能的最简化设计。以 STM32(F1 系列)单片机为例,最小系统包含以下几部分:电源、复位、时钟、启动模式、下载调试。 电源 STM32 的电源有以下几种类型: 主电源(VDD / VSS) 主电源指的是标记为 VDD1、VDD2... 的引脚。 每个引脚必须加一个 100nF 的滤波电容,且尽量靠近引脚放置,此外需要一个 10uF 的钽电容公用。 后备电源(VBAT) VBAT 引脚可用于电池供电。如果不用,可以与 VDD 连接在一起。VBAT 也需要一个 100nF 电容滤波。 可参考以下的电源选择电路: ADC 电源(VDDA / VSSA) 为了提高转换精度,ADC 设备可以从这里取电。一般将 VDDA 通过一个电感后, 与 VDD 相连接。 若不用到 ADC,可将 VDD, VDDA, VREF+(如果有的话) 接在一起,并对地接 1uF 钽电容 + 10nF 陶瓷电容滤波。 复位 因为 STM32 内部有上拉电阻,所以外部只接 100nF 电容 + 按键即可: 上电时,CPU 处于复位状态,此时电容充电,NRST 引脚电位持续拉低,当电容充满电后,NRST 电位变为高电平,此时 CPU 退出复位模式,进入正常运行状态。当按钮被按下时,电容被短路清空电量,按钮松开后重新充电,触发复位。 根据官方设计指南,电容选取 100nF 即可,以保证 NRST 低电平持续的时间满足 CPU 复位的最小脉宽要求,能正常触发复位。 如果不需要手动复位功能,也可以略去按键。 时钟 如上图,STM32 的时钟分以下几种: HSI:高速内部时钟,是内部的 RC 振荡器,频率为 8MHz HSE:高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz LSI:低速内部时钟,RC 振荡器,频率为 40kHz. 独立看门狗的时钟源只能是它,同时它也可以作为 RTC 的时钟源 LSE:低速外部时钟,接频率为 32.768kHz 的石英晶体。LSE 是给 RTC 用的时钟源 PLL:锁相环倍频输出,其时钟输入源可选择为 HSI/2, HSE 或 HSE/2. 倍频可为 2~16 倍,但是输出频率最大不得超过 72MHz 从稳定性上考虑,我们在设计的时候一般使用外部晶振作为时钟源。一般选取 8MHz 晶振作为 HSE,便于倍频(一般倍频到 72MHz);选取 32.768kHz 晶振作为 LSE,RTC 使用便于分频(32768 是 2 的 15 次方,可以得到精准的时间)。 至于晶振的选用,有源的精度高,无源的成本低,一般无源就足够了。 如果选用无源晶振,则需要在两端要加上起振电容,滤除晶振波形中的高频杂波。容值可选 10 ~ 40pF. 晶振输入输出引脚之间可加一个 1M 的电阻,产生负反馈,保证放大器工作在高增益的线性区。同时还起到限流作用,防止反相器驱动过载损坏晶振。 启动模式配置 一般来说,将 BOOT0 引脚下拉(串接 10K 电阻再接地),BOOT1 任意 即可,如果需要模式切换,也可以参照以下的设计: STM32 提供了 BOOT1 与 BOOT0 引脚,可以通过设置引脚的状态,以选择上电复位后的启动模式。 以下为三种启动模式: 1. 从主闪存存储器启动 | BOOT0 | BOOT1 | | :---: | :---: | | 低 | 任意 | 从片上 Flash 存储器启动(就是参数为 64K / 128K / 256K 的 Flash),一般正常情况下是这样配置的。 2. 从系统存储器启动 | BOOT0 | BOOT1 | | :---: | :---: | | 高 | 低 | 使用串口 / ISP 下载程序时,需要配置这种模式。 3. 从内置 SRAM 启动 | BOOT0 | BOOT1 | | :---: | :---: | | 高 | 高 | 从内置 SRAM 启动,用途有两个: 用于反复下载调试时,提高效率(因为下载到 Flash 相对慢)。需要注意的是,断电程序将丢失 用于解除芯片的读保护功能 / 擦除 Flash 恢复出厂 下载调试接口 一般我们用 SWD 接口(接线少,方便),直接引出 SWDIO, SWCLK, VCC, GND 即可。 不需要添加外部上拉/下拉电阻,因为 STM32 内部已经有集成了。 单片机最小系统的编程与调试 靖高写:拿到最小系统板之后,截个点灯代码,简单提一下原理就行 实验效果(或仿真效果) 靖高写:最好有个板子亮灯的照片,如果没有我找找

单片机最小系统的设计包括电源、复位、时钟、启动模式和下载调试。电源包括主电源、后备电源和ADC电源。复位通过外部电容和按键实现。时钟可选择HSI、HSE、LSI、LSE和PLL。启动模式可通过BOOT0和BOOT1引脚配置。下载调试接口一般使用SWD接口。

硬件模块
相关推荐 去reddit讨论