简单来说,嵌入式:就是嵌入在对象中的特殊计算机系统。 特殊计算机的三个要素被嵌入到该物体中。
嵌入式系统通常是相对复杂的系统,由微控制器、硬件平台和嵌入式计算机系统组成。 其核心是嵌入式处理器。
我们主要讲解单片机
文章目录
1 单片机基本介绍 1.1 单片机的组成
单片机系统是典型的嵌入式系统
单片机简称单片机。 它不是完成某种逻辑功能的芯片,而是将计算机系统集成到一块芯片上。 它通常集成以下部分:
(1)CPU中央处理器
(2)RAM随机存取存储器
(3)ROM只读存储器
(4)定时器/计数器/IO接口
采用哈佛结构Harvard Structure
将程序指令存储和数据存储分开的存储器结构。 具有独立的指令总线和数据总线,可以使取指令和数据访问分开进行,提高执行效率。
而不是我们熟悉的传统冯诺依曼结构
1.2 单片机的特点
1)集成度高、体积小、可靠性高
2)控制功能强
3)低电压、低功耗,易于生产便携式产品
4)易于扩展
5)优异的性价比
1.3 微控制器的分类
1 按数据处理位数划分
由于4位微控制器的性能相对较低,已逐渐退出市场。
虽然16位和32位单片机的性能远优于8位单片机,但由于成本和应用限制,特别是近年来ARM嵌入式技术的发展,其应用空间并不像8位单片机那么广阔。 8 位微控制器。 16位和32位微控制器主要用于视频采集、图形处理等。
2 按核心分类
微控制器分为核心
51 系列 Atmel 公司
ARM系列 ARM国际科技有限公司
PIC系列美国Microchip科技公司
AVR 系列 Atmel 公司
MSP430 系列德州仪器
3 按指令类型分类 单片机可分为
精简指令集和复杂指令集。
1.4 单片机内部结构
1)中央处理器
运算器和控制器是核心,统称为中央处理器或中央处理单元。
算术单元执行所有算术和逻辑运算;
控制器负责从内存中一一取出指令,解码后向计算机发出各种控制命令;
寄存器为处理单元提供操作所需的数据。
2)内存
存储器主要包括只读存储器和随机存储器。
3)输入设备和输出设备
输入设备和输出设备主要包括并行I/O端口和串行接口等通信方式。
并行I/O端口是输入/输出引脚。 这是单片机与外部电路和设备之间的主要连接端口。 它不仅可以接收外部输入的电平信号,还可以向外部发送指定的电平信号。
串行通信是一种消息的每一位数据按顺序一位一位地传输的通信方法。 数据传输是按位顺序进行的,需要至少一根传输线。 串行通信主要使用通用异步接收器和发送器(UART)来实现。其中,RxD代表接收数据端口,TxD代表发送数据端口。
4)时钟电路
它主要提供单片机运行所需的节拍信号。 每当一个节拍到来时,微控制器就会执行一步操作。 因此,时钟电路提供的信号频率越高,单片机运行速度越快,相应的功耗也越大。
5)中断控制系统
一般来说,中断的类型主要包括硬件中断和软件中断。
硬件中断的形成通常是由外部硬件设备利用CPU拉出的中断请求信号线通知CPU有中断请求而引起的。
软件中断通常是由CPU本身引起的,例如执行了不应该执行的指令、计算错误或者执行了用于产生软件中断的指令。
6) 定时器/计数器
微控制器将CPU、存储器、输入/输出设备、中断控制系统、定时器/计数器和通信等多种功能部件集成到单个硅芯片上,从而形成一个虽小但功能齐全的微型计算机系统。
为了解决这个问题,我们将重点介绍一种具有多种应用的微控制器。
2. 8051单片机内部结构 2.1 CPU内核
以ALU为中心的算子
还有以各种寄存器和译码器为核心的控制器
除了CPU之外,微控制器最著名的三个资源是:
FLASH(程序存储空间ROM)
RAM(数据存储空间)
SFR 特殊功能寄存器
2.2 ROM Flash程序存储空间
FLASH存储器是一种非易失性存储器,用于存储嵌入式系统的程序代码。 它通常用于存储固件、操作系统、应用程序和其他必要的程序代码。 与传统RAM不同,FLASH存储器断电后数据仍保留,因此适合存储长期程序代码。
对于单片机来说,Flash最大的意义就是断电后数据不会丢失。
2.3 RAM数据存储空间
RAM是单片机的数据存储空间,用于存储程序运行过程中产生和需要的数据。
它与计算机内存有类似的概念。 断电后数据就会丢失,所以每次打开计算器时,我们都是从零开始计算。
它的优点是,第一,读写速度非常快,第二,理论上可以无限写入,即具有无限的寿命,无论程序如何运行,如何读取,都不会中断。写道。
2.4 SFR特殊功能寄存器
特殊功能寄存器是嵌入式系统中的一类寄存器,用于控制和配置系统的特殊功能和硬件模块。 这些寄存器通常包括控制寄存器、时钟寄存器、中断寄存器、输入/输出端口控制寄存器等,通过写入和读取这些寄存器的值,开发人员可以配置和控制系统的各种功能。
SFR,特殊功能寄存器。 一开始你可能不理解这个概念,但你必须记住它。 单片机有很多功能,每一种功能都对应一个或多个SFR。 我们通过读写SFR来实现单片机的各种功能。
3 CC2530芯片介绍 3.1 组成
(1)CPU和内存
CC2530芯片中使用的8051CPU内核是单周期8051兼容内核。
它有3种不同的存储器访问总线,用于访问特殊功能寄存器、数据和代码/外部数据
此外,它还包括一个调试接口和一个18输入扩展中断单元。
(2)时钟和电源管理
数字核心和外设由 1.8V 低压差稳压器供电。 它提供电源管理功能,可使用不同的电源模式实现低功耗操作,从而延长电池寿命。 CC2530有5种不同的复位源来复位设备
(3) 周边设备
调试接口实现了用于在线调试的专有两线串行接口。 通过该调试接口,可以执行整个Flash存储器的擦除、控制振荡器、停止和启动用户程序执行、执行8051内核提供的指令、设置代码断点以及对内核中所有指令进行单步调试。 利用这些技术,可以很好地进行内部电路的调试和外部闪存的编程。
定时器 1 是一个具有定时器/PWM 功能的 16 位定时器。 消费者红外信号。
定时器2是专门为支持IEEE 802.15.4 MAC或其他软件时隙的协议而设计的。该定时器具有可配置的定时器周期和8位溢出计数器
定时器3和定时器4是具有定时器/计数器/PWM功能的8位定时器。
睡眠定时器在除功耗模式 3 之外的所有操作模式下连续运行。该定时器的典型应用是作为实时计数器,或作为功耗模式 1 或 2 之外的唤醒定时器
ADC 支持 7 至 12 位分辨率,带宽分别为 30kHz 或 4kHz。 多达 8 个输入通道(端口 0)可用于直流和音频转换,输入可选择单端或差分。 参考电压可以是内部电压、AVDD、或者单端或差分外部信号。 ADC 还有一个温度传感输入通道。 ADC 可以自动执行定期采样或转换通道序列的例程
串行端口 1 (USART 0) 和串行端口 2 (USART 1) 配置为 SPI 主/从或 UART。 它们为 RX 和 TX 提供双缓冲以及硬件流控制。
4 单片机最小系统
单片机最小系统,也称为单片机最小应用系统,是指使用最少数量的原始部件使单片机工作的系统。最小的三要素单片机系统由电源、晶振和复位组成。
4.1 电源
微控制器常用的供电系统有5V系统和3.3V系统。
4.2 晶振 4.2.1 定义类型
晶振又称晶振,其作用是为单片机系统提供参考时钟信号。
单片机内部的所有工作都是基于这个时钟信号。
STC89C52单片机的18、19引脚是晶振引脚。 我们连接了一个11.0592M晶振(每秒振荡11,059,200次),加上两个20pF电容。 电容的作用是帮助晶振起振和维持振荡。 信号稳定性
电容器分为不同类型
晶振分为有源晶振和无源晶振
两种时钟产生方法
内部振荡器模式
外部时钟源模式
4.2.2 基本定时周期
CPU总是按照一定的时钟节拍和时序工作。 计时单元一共有4个,从小到大分别是:
振荡周期/时钟周期:Tc = 晶振频率 fosc(或外部频率)的倒数。 MCS-51微控制器中最小的计时单元
状态周期:Ts=2个时钟周期(Tc)(这个概念很少使用)
机器周期:CPU完成一次基本操作所花费的时间称为机器周期
指令周期:执行一条指令所需的机器周期数™,是MCS-51单片机最大的计时单位。 通常包含 1 到 4 个机器周期。
相互转换关系
振荡周期=晶振频率fosc的倒数;
1个状态周期=2个振荡周期;
1个机器周期=12个振荡周期=6个状态周期;
1 个指令周期 = 1、2、4 个机器周期
CC2530指令周期与标准51不同
标准51:1个机器周期是12个振荡器周期 • CC2530包含一个单周期增强型51内核,与标准51不同
CC2530
四个时钟源,两个内部振荡器,两个外部晶振
:没有任何配置,系统时钟为16Mhz • 什么是机器周期? 1/16 我们
4.3 复位
复位电路需要连接到单片机的RST(Reset)复位引脚。
单片机复位时一般有以下三种情况:
上电复位、手动复位、程序自动复位。
(1)上电复位:单片机上电后执行的内部初始化过程。 确保微控制器每次都从固定且相同的状态开始工作。
(2)手动复位:当程序因意外干扰而崩溃,或者程序跑掉时,我们可以按复位按钮,重新初始化程序并重新运行。
(3)自动复位:当程序崩溃或跑飞时,单片机往往具有自动复位机制,如看门狗。如果程序长时间失去响应,单片机看门狗模块会自动复位,重新启动单片机。
电源、晶振、复位构成了最小单片机系统的三要素。 换句话说,如果单片机满足这三个条件,它就可以运行我们下载的程序。
其他如LED灯、数码管、液晶显示器等设备都是单片机的外部设备,即外设。
外围设备
通常红色贴片LED采用电流驱动,电压1.8V~2.2V,电流1~20mA,亮度在1~5mA之间变化,5mA以上亮度基本没有变化。
5 编程
注意嵌入式编程中的数据类型。
char 8 位通常分配给寄存器,因为寄存器一般都是 8 位。
需要考虑编程取值范围