前言
去年开始打算在CSDN上写自己学习日志的文章,但就坚持了几天就放弃了,总的来说,坚持一件事还真是挺难的,前几天出差遇到一些人,一些事,领悟到终身学习的重要性,在这个内卷的时代,不会终身学习的人终将被时代淘汰。捡起自己曾经放弃的习惯,努力去学习,让自己变得璀璨。重新整理自己前面写过的文章,修正前面的不足之处,然后坚持下去。
一、单片机简介
上面是百度百科关于单片机的基本介绍。
然后千篇一律搬运工的工作就不打算浪费时间了,就从目前学习到的知识面总结一下单片机吧,当然,入行不到一年半的菜狗一枚,不正之处请指正。
单片机,也就是微型计算机,可以简单的理解为简化后的电脑。
从电脑的功能结构说起吧,电脑包括了我们可以直观看到的输入输出设备(显示器,键鼠,音箱,麦克风),还有主机箱内部用来处理数据的CPU,传输数据的数据线,总线,保存数据的存储器等等。具体概况五个部分就是运算器、控制器、存储器、输入设备、输出设备,加一个总线。而单片机也是由以上五个部分组成。
最基本的单片机就包含了下图所示功能
运算器和控制器就是CPU
输入输出简化为IO口电平信号的接收发送
数据存储器RAM用来保存程序运行过程中的数据包括堆,栈,局部变量,全局变量等等
程序存储器ROM保存固化的程序,这里貌似缺失了一个FLASH存储,
总线就是单片机数据通信的线路,CPU要从FLASH获取需要执行的指令需要通过总线进行数据交换,CPU保存运算后了临时接管需要和RAM通过总线进行数据交换等等
上图的定时计数器属于外设功能,后面会讲到
最后还有时钟电路,担任单片机心脏的角色,CPU无论是从flash读取数据,执行指令都需要时钟的支持,例如每个时钟脉冲执行一条指令,如果没有时钟电路则单片机将无法工作。
然后存储器这里做一个额外说明介绍一下单片机存储器类型
单片机存储器类型包括:ROM,RAM,FLASH三种
ROM:属于只读存储器类型,不可被常规手段擦写,用途在于:有些单片机启动后会运行一段引导程序,这段程序是单片机厂家出厂是烧入ROM存储器用户不可更改,用来初始化单片机的一些状态,或者实现一些其他功能。比如STM32单片机可以通过boot引脚设置三种启动方式,其中方式2就是会让单片机运行ROM存储器内的程序实现串口下载的功能。
RAM:可读可写存储器类型,读写速度快,缺点是掉电后数据会丢失,因此常被用于在程序运行中保存一些数据包括堆,栈,局部变量,全局变量。同时因为RAM读写速度快的特点,为了加快关键程序的运行速率,可以将flash中的对时序要求严格的程序copy到RAM中直接让CPU在RAM中取指,提高程序运行速率。
FLASH:闪存,可读可写寄存器,掉电后数据不会丢失,缺点是读写速率没有RAM快。被用于存储程序编译后的程序指令和常量。同时,我们也可以在程序运行中对没使用到的FLASH进行读写实现一些状态量的保存。不仅如此,还可以将flash存储划分为两个区间,区间一为bootload,有对区间二的flash修改的功能和跳转的区间二运行区间二内的程序的功能。区间二为AP,是我们需要实现的逻辑功能。在区间一里判断区间二是否需要更新,如需更新,通过某种通信将最新的固件包覆盖到区间二就可以实现单片机的代码更新,这就是所谓的OTA技术,当然OTA不仅仅是这点内容。
二、8位单片机和32位单片机
学校学习的都是从最经典的8位51系列单片机学起的,包括它的硬件组成,中断系统,时钟系统,定时计数器,IO口各个结构,寄存器功能学起。
如果学习了51单片机或者微机原理课程就会对单片机有个大概的认识,能用51单片机做点简单好玩的项目。
那么,32位单片机对比8位单片机有什么优势呢?
先从位数来讲吧,8位单片机一次最多运算8位数据,32位则可一次运算32位。从一次时钟脉冲运算速率上来讲32位占尽优势。
再说内存和寻址吧,内存和和寻址实际和单片机的数据总线和地址总线相关。8位单片机地址总线不是8位而是16位,就是51课程上老师讲P2端口既可作数据总线,又可作地址总线高八位,而其数据总线则是8位。也就是说51单片机最大寻址范围是2^16(64K),并且每次读取数据可读8bit数据。而32位单片机数据总线是32位,地址总线也是32为,因此一次寻址可读32bit数据,2^32其寻址空间高达4G。
当然,这些内存空间都有相关规定,部分地址用于做寄存器功能,部分地址用于保存程序数据,还有什么中断向量映射啦,堆区,栈区等等。
而且,32位单片机因为庞大的寻址空间,可以根据需求自由添加各种外设例如AD转化,多整几个中断啦,定时器啦,集成一些通信协议的实现电路都不成问题。但8位单片机就不行了,受资源限制,多添加几个功能寻址范围不够了。
大多32位单片机都有休眠模式用来降低功耗,虽然32位单片机运行时功耗远大于8位单片机,但通过低功耗模式,让它只需要在需要工作的时候高功率启动,不需要时就休眠,整体算下来,其平均功率远远低于8位单片机的。
32位单片机从性能,功耗,外设易集成等多个方面远超8位单片机的优势占尽市场大部分份额。但是8位单片机也有自己的优势,系统简单也就意味着结构稳定,不易出错,8位单片机在部分军工,工业控制等一些对稳定性安全性要求高的场合被继续使用。
三、认识32位单片机
说32位单片机之前先介绍什么是ARM。
ARM是单片机处理器内核,在整个单片机中担任大脑的角色arm单片机_百度百科
而ARM单片机就是一系列以ARM处理器为内核生产出来的单片机。
目前说的市面上常见的32位单片机基本都是ARM处理器内核的单片机。
而ARM处理器又有多个系列,大方向可分Contex-A,Contex-R,Contex-M三种。三个系列有什么区别,总结一下就是从A到M性能逐步降低,成本逐步降低,A系列主要用于手机内核,R系列主要用于汽车主控,M系列就是简单家电等方面的微处理器。
三个系列各有侧重点,具体可看图
我目前学习的嵌入式开发也是M系列的微处理器内核的使用。每个系列还有许多版本,从Contex-M0,M0+,M1,M2,M3....性能逐步优化提升。同时低版本可以很方便的移植到高版本上而不需要太大的改动,同一系列处理器内核的好处。
然后介绍一下M0的处理器内核
这张图简单明了的表现出32位M0处理器内核的结构和功能。包括了中断控制和唤醒,处理器(运算器和控制器),总线,存储器和外设的接口。
M0处理器相当于工艺完备,功能成熟,留出合适接口的核心结构,而不同品牌,不同系列的32位ARM结构单片机都使用相同的内核,然后根据产品不同需求和侧重点,添加相应的外设,存储器连接到内核的总线接口上,造成了目前32位单片机百花齐放的盛态。有侧重电机驱动控制的,有侧重读写运算的,有侧重稳定性的。各种场景需求,产品需求都能挑选到一款合适的单片机芯片。
但是,无论外设怎么变化,无论是添加看门狗电路外设,AD/DA转换电路外设,各种通信协议,定时器,电源管理,复位等等方面的硬件电路的外设,其根基都建立在单片机内核处理器上。