嵌入式复习.docx
- 文档编号:3521472
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:48
- 大小:791.44KB
嵌入式复习.docx
《嵌入式复习.docx》由会员分享,可在线阅读,更多相关《嵌入式复习.docx(48页珍藏版)》请在冰豆网上搜索。
嵌入式复习
第一章嵌入式系统概述
1.1嵌入式系统的定义:
根据IEEE(国际电气和电子工程师协会)的定义:
嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”.
目前国内一个普遍被认同的定义是:
以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
1.2嵌入式系统的特点
(1)嵌入式系统通常是面向特定应用的。
(2)嵌入式系统的硬件和软件都必须高效率地设计
(3)实时操作系统支持
(4)具有较长的生命周期
(5)嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不存储于磁盘等载体中
(6)专门开发工具支持
嵌入式系统与单片机的区别:
实时嵌入式操作系统
嵌入式系统与通用计算机的区别:
专用性、体积、功耗、固化的程序
1.3嵌入式系统的组成
硬件:
处理器是系统的运算核心;存储器(ROM、RAM)用来保存可执行代码,以及中间结果;输入输出设备完成与系统外部的信息交换;其他部分辅助系统完成功能。
实时操作系统(RTOS):
该系统用来管理硬件资源和应用软件,并提供一种机制,使得处理器分时地执行各个任务并完成一定的时限要求。
应用软件:
应用软件是完成系统功能的主要软件,它可以由单独的一个任务来实现,也可以由多个并行的任务来实现。
1.4嵌入式处理器的分类
4位8位16位32位64位
从应用的角度来划分,嵌入式处理器包含:
嵌入式微处理器、嵌入式微控制器、嵌入式DSP、嵌入式片上系统
1.5嵌入式处理器的选型原则
CPU的处理速度
技术指标(寄存器,集成模块等)
处理器的功耗
处理器的软件支持工具
处理器是否内置调试工具
处理器供应商是否提供评估板
1.6嵌入式操作系统的特点
强稳定性,弱交互性:
较强的实时性;
外设接口的统一性:
1.7常见嵌入式操作系统
VxWorks(硬实时)uC/OSII(硬实时)嵌入式Linux(软实时嵌入式操作系统)WindowsCE(软实时)Android操作系统
1.8.1ARM处理器的简介
ARM:
AdvancedRISCMachines
公司:
处理器设计、提供技术和软件
技术:
处理器核心,指令系统,开发环境等等。
处理器:
由半导体公司生产的基于ARM技术的处理器。
如三星,飞利浦,Intel,ST,TI,FreeScale等。
7种版本,V1~V7
每种版本定义了ARM指令集体系结构;V1,V2使用26位寻址空间;V3使用32位寻址空间;V4T,V5E,V6,V7使用32位寻址空间,不与26位体系结构兼容。
目前常用的ARM7,部分ARM9处理器使用V4T版本,部分ARM9使用V5E版本,ARM11使用V6版本
V7版本用于Cortex,Cortex-A,Cortex-R,Cortex-M
1.9.1嵌入式系统的总体结构
硬件层:
硬件层由嵌入式微处理器、外围电路和外部设备组成
中间层:
硬件层与软件层之间为中间层,也称为BSP(板级支持包)
软件层:
软件层主要是操作系统,有的还包括文件系统、图形用户接口和网络系统等
功能层:
功能层由基于操作系统开发的应用程序组成,用来完成对被控对象的控制功能
1.9.2嵌入式系统设计过程
(1)需求分析;
(2)软硬件分别设计、开发、调试、测试;
(3)系统集成;软硬件集成;
(4)集成测试;
(5)若系统正确,则结束,否则继续进行;
(6)若出现错误,需要对软、硬件分别验证和修改;返回(3),继续进行集成测试。
第二章ARMCortex-M3内部结构
1.ARM公司于2006年推出了Cortex‐M3微处理器核。
2.Cortex-M3是较高效率(1.25DMIPS/MHz)、低功耗(0.19mW/MHz)、短中断延时(最少6周期)、低调试成本的32位标准处理器。
哈佛结构:
独立的数据总线和指令总线
集成硬件乘法器(单周期)和除法器(2-12周期)
内部的数据总线是32位的,寄存器和存储器接口也是32位的。
Cortex-M3采用的V7M架构和指令集,它的速度比ARM7快三分之一,功耗低四分之三。
3.
3.1嵌套向量中断控制器NVIC:
包含异常和中断管理,异常由Cortex-M3定义,中断由厂商定义。
系统基定时器SYSTICK:
简单的倒计时定时器,一般用于整个软件系统的基准定时。
3.2总线矩阵BusMatrix:
内部总线系统的核心,允许同时对不同区域进行访问,包含写缓冲和位带操作逻辑。
3.3AHB到APB总线桥:
允许外部设备通过APB总线连接到内核
3.4嵌入式跟踪宏单元ETM:
选配件,实时的指令跟踪,跟踪结果由TPIU输出
3.5数据观察点及跟踪单元DWT:
设置数据观察点,匹配后可触发ETM,可将数据信息输出至ITM
3.6指令跟踪宏单元ITM:
该模块可以支持DWT的调试消息输出,调试消息输出到TPIU
3.7跟踪端口的接口单元TPIU:
提供处理器和外部跟踪设备的数据接口
3.8闪存地址重载及断点单元FPB:
支持6个硬件断点地址匹配时产生断点事件,将匹配的Flash地址映射到SRAM中,可以用于加载数据或调试时调用子程序
ROM表:
提供调试组件或厂商外设的存储器映射信息
3.9调试访问接口DAP:
提供调试器与Cortex-M3的访问接口
3.10存储器保护单元MPU:
选配件,将存储器分为多个区域并分别进行保护
4.旧版本指令集ARM:
32位指令集;Thumb:
16位指令集
新版本指令集Thumb2指令集:
消灭了状态切换的额外开销,节省了执行时间和指令空间。
UAL(统一汇编语言)语法机制,由编译器决定使用32位指令或16位指令。
不再需要把源代码文件分成按ARM编译的和按Thumb编译的,软件开发的管理大大减负。
Cortex-M3指令集:
Thumb2指令集的子集,无协处理器指令,无SIMD(单指令多数据流)指令。
5.Cortex‐M3处理器使用一个3级流水线:
取指,解码和执行。
6.通用寄存器R0-R15:
R0-R7低组寄存器
R8-R12高组寄存器
R13堆栈指针(SP)
1)MSP主堆栈指针
2)PSP进程堆栈指针
R14链接寄存器(LR)
R15程序计数器(PC)
特殊功能寄存器(只能由MRS和MSR
指令进行读写,且无存储器地址):
程序状态寄存器组
中断屏蔽寄存器组
控制寄存器
7.操作模式:
Handlermode:
用于进行异常处理;Threadmode:
用于运行程序
特权等级特权级:
异常处理程序和特权程序(操作系统);
用户级:
用户应用程序无权访问NVIC,SYSTICK及调试跟踪模块的控制寄存器且无法访问除APSR外的特殊功能寄存器
合法的切换方式:
8.中断:
CPU暂停当前程序,处理某一发生的事件,处理结束后返回当前程序。
异常:
CPU暂停当前程序,处理某一发生的事件或错误,处理结束后返回当前程序或进行其他操作。
CortexM3的中断:
240个可屏蔽中断,异常号16-255
CortexM3的异常:
共11个异常{空异常(MSP初值)、复位、NMI不可屏蔽中断、P28表2-4}
嵌套向量中断控制器NVIC(NestedVectoredInterruptController):
可嵌套的中断支持(基于优先级)
向量中断支持(基于向量表)
动态优先级调整支持
中断延迟大大缩短(自动现场保护和恢复)
中断可屏蔽
9.
存储器射
10.入侵式调试:
停机以及单步执行程序
硬件断点
断点指令(BKPT)
数据观察点,作用于单一地址、一个范围的地址,以及数据的值。
访问寄存器的值(既包括读,也包括写)
调试监视器异常
基于ROM的调试
基于CoreSight的调试访问接口(DAP):
总线接口:
可以访问寄存器和存储器
调试端口
SWJ-DP:
JTAG及串行调试协议
SW-DP:
串行调试协议
JTAG-DP:
ARMCoreSightJTAG
第三章基于CortexM3内核的STM32F1微控制器
1.意法半导体(STMicroelectronics):
意大利SGS微电子公司;法国Thomson半导体公司
2.STM32F1产品线:
超值型STM32F100-24MHz
基本型STM32F101-36MHz
STM32F102–48MHz
增强型STM32F103-72MHz
互联型STM32F105/107-72MHz
3.STM32F103ZET6芯片介绍:
基于ARMCortex-M3核心的32位微控制器,LQFP-144封装。
512KB片内FLASH,64KB片内RAM,可设置的BOOT区
片内双RC晶振,提供8M和32K的频率。
支持片外高速晶振(8M),和片外低速晶振(32K)。
RTC和备份寄存器(可以理解为电池保存的RAM),利用外置的纽扣电池,实现掉电数据保存功能。
支持JTAG,SWD调试。
支持调试跟踪模块(包括ETM)
多达80个IO(大部分兼容5V逻辑)
DMA通道
4个通用定时器,2个高级定时器,2个基本定时器。
独立和窗口看门狗
3路SPI接口,2路I2S接口,2路I2C接口,5路USART,一个USB从设备接口,一个CAN接口
SDIO接口(支持CF卡等外设)
可兼容SRAM,NOR和NANDFlash接口FSMC(支持LCD)。
3路共16通道的12位AD输入,2路共2通道的12位DA输出。
支持片外独立电压基准。
内置温度传感器
电压范围:
2.0-3.6V。
内置调压器提供1.8V。
支持电压监控、低功耗模式
EXIT外部中断/事件管理
4.存储格式
大端小端针对多字节数据存储时字节顺序而言的。
小端存储:
所谓“LittleEndian”,数据的低字节存放在内存低地址中,高字节存放在高地址中。
大端存储:
所谓"BigEndian",数据的低字节存放在内存的高地址,数据的高字节存放在内存的低地址。
5.STM32F1微控制器的启动配置
通过BOOT0和BOOT1引脚的电平配置启动模式
复位后,在SYSCLK的第四个上升沿,BOOT引脚的值将被锁存
待机模式退出时,BOOT引脚的值将被重新锁存
VDD,VSS:
处理器供电引脚(2.0-3.6V,3.3V,使用ADC大于2.4V)
不同封装使用不同组数的VDDVSS(3-11组)
全部VDD和VSS需要外部连接,每组在靠近芯片处连接10nF-100nF的高频瓷介电容,第三组连接4.7-10uF的钽电容或瓷介电容
VDDA,VSSA:
为所有模拟模块供电,共一组VDDA和VSSA
应与VDD、VSS同电源供电(可互联)
10nF和1uF的去耦电容
VRef+,VRef-:
ADC外部参考电压,不多于64引脚的处理器不引出
VRef+=2.4-VDDA(可互联),VRef-=VSSA
10nF和1uF的去耦电容
VBat:
备份电源1.8-3.6V,可用电池或连接到VDD(二者必选其一)
第5章复位和时钟寄存器
系统复位(SystemReset):
1)复位除时钟控制寄存器RCC_CSR中的复位标志和备份寄存器以外的所有寄存器
2)NRST管脚上的低电平(外部复位)。
3)窗口看门狗计数终止(WWDG复位)。
4)独立看门狗计数终止(IWDG复位)。
5)软件复位(SW复位)。
6)低功耗管理复位。
上电复位(PowerReset):
1)复位除备份区域外的全部寄存器。
2)上电/掉电复位POR/PDR
3)PowerOnReset/PowerDownReset
4)当电源电压小于VPOR/VPDR时保持复位
5)从待机模式返回
备份区域复位(BackupdomainReset)
1)对备份区域寄存器进行复位
2)软件复位
3)设置备份区域控制器RCC_BDCR中的BDRST位产生
4)VDD和VBAT均掉电的前提下,VDD和VBAT任意一个开始供电
*必须了解时钟树:
1)HSE,高速外部时钟:
4-16MHz晶振(常用8MHz),最高25MHz时钟信号(50%占空比方波、三角波、正弦波),启动后需要稳定时间才能输出稳定的时钟信号。
2)HSI,高速内部时钟:
8MHz,RC振荡器,系统启动时的缺省时钟,精度差,可校准,备用时钟。
3)PLL,锁相环PhaseLockedLoop对输入信号进行倍频,输入信号:
HSE、HSE/2,HIS/2
输出信号:
输入信号*倍频系数,倍频系数:
2-16
4)LSE,外部低速时钟:
32.768KHz晶振,32.768KHz时钟信号(50%占空比方波、三角波、正弦波),启动后需要稳定时间才能输出稳定的时钟信号,RTC
5)LSI,内部低速时钟:
30-60KHzRC振荡器,精度差,可校准(大容量处理器),RTC、独立看门狗和自动唤醒单元
6)SYSCLK,系统时钟SystemClock最大值72MHz,HIS,8MHz,PLLCLK
HSE,晶振4-16MHz,时钟最大25MHz
7)AHB时钟预分频器,输入时钟:
SYSCLK,输出时钟:
SYSCLK/分频系数,分频系数:
1/2/4/8/16/64/128/256/512
8)HCLK:
AHB时钟(AHB总线、内核、DMA、存储器等)系统时基定时器时钟:
AHB时钟/8
FCLK:
AHB时钟(Cortex内核自由时钟)永远不停,用于中断采样和睡眠时的事件跟踪,并提供调试的时钟信号.FCLK是Cortex-M3的自由运行时钟。
PCLK1:
AHB时钟/分频系数,APB1总线时钟,最大36MHz
PCLK2:
AHB时钟/分频系数,APB2总线时钟,最大72MHz
时钟的设置过程:
复位
HSI启动为缺省时钟源(系统自动)
复位RCC
启动HSE时钟(8MHz)
等待HSE稳定
配置PLL
得到SYSCLK
根据需要进行其他配置
LSE不是必要时钟,可选
LSI可选择是否启动,若独立看门狗被启动,则LSI自动启动。
第6章I/O端口模块
STM32F103ZET6的引脚(共144个)
32个特定功能引脚:
电源引脚VDD、VSS等、启动引脚BOOT0、BOOT1、复位、HSE晶振、NC等
GPIO通用功能引脚:
112个分7组每组16个引脚
GPIOA(.0-.15)/PORTA(.0-.15)/GPIOA1/PORTA1/PA1
GPIOB(.0-.15)…GPIOG(.0-.15)
LSE晶振PC14和PC15和入侵检测PC13有限制
AFIO复用功能引脚,某些GPIO用作复用功能(缺省功能)
AFIO复用功能重映射,某些GPIO从缺省的复用功能映射为另一种功能
STM32F103ZET6的引脚配置
每组引脚可单独使能时钟;每个引脚可单独配置模式
*输入:
输入浮空、输入上拉、输入下拉、模拟输入
APB2时钟周期读取引脚到输入寄存器
*输出:
开漏输出、推挽输出、推挽复用输出、开漏复用输出
在开漏模式读输入寄存器是引脚的状态
在推挽模式读输出寄存器是最后一次写入的输出值
APB2时钟周期读取引脚到输入寄存器
输出速度:
2MHz/10MHz/50MHz
复位后全部引脚为输入浮空(JTAG调试引脚除外)
GPIO:
使能端口时钟、配置引脚模式、使用引脚(端口读写操作、引脚读写操作)
AFIO:
使能端口时钟并且使能相应外设时钟(否则输出不可确定)、配置相应AFIO引脚模式(需要的话进行重映射)、使用外设
第七章中断
嵌套中断向量控制器NVIC、外部中断/事件控制器EXTI
一、异常、中断、事件
异常:
由NVIC管理、Cortex-M3定义、需要异常处理程序
例如:
时钟安全系统CSSI(NMI)
中断:
由NVIC管理、STM32F1XXX定义、需要异常处理程序
例如:
外部按键中断、定时器更新中断
*事件:
软件配置后由硬件自动处理、STM32F1XXX定义,不需要编写任何代码,不中断正常的程序。
例如:
外部按键事件、定时器更新事件
中断:
240个(STM32F10x互联型68个、超大容量60、其他60);基于优先级响应
异常当做中断处理参见表7-1P97最后部分位置和优先级7x修改为5x
事件:
根据各个模块进行说明
优先级:
抢占式优先级、亚优先级/响应优先级、向量表位置优先级
先响应高抢占式优先级的中断,可以在具有低抢占式优先级的中断处理过程中被响应,低优先级中断进入pending(悬挂状态)。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,根据它们的响应优先级高低来决定先处理哪一个,如果它们的抢占式优先级和响应优先级都相等,则根据它们在中断表中的排位顺序决定先处理哪一个(向量表优先级),等待处理的中断进入pending(悬挂状态)。
STM32系列微控制器的NVIC把指定中断优先级的寄存器位减少到4位,这4个寄存器位支持5种分组方式,共支持16个可编程的优先级。
第0组:
所有4位用于指定响应优先级。
第1组:
最高1位用于指定抢占式优先级,最低3位用于指定响应优先级。
第2组:
最高2位用于指定抢占式优先级,最低2位用于指定响应优先级。
第3组:
最高3位用于指定抢占式优先级,最低1位用于指定响应优先级口
第4组:
所有4位用于指定抢占式优先级。
外部中断/事件控制器EXTI:
控制全部外部中断和事件
多条中断线路
互联型支持20条外部中断线路
其他支持19条外部中断线路(0-4独立、5-9综合、10-15综合、16PVD输出、17RTC闹钟、18USB唤醒)
可独立设置pending(悬挂)(中断)或脉冲(事件)类型
pending状态可保持
可独立设置边沿检测(下降、上升或两者)
可单独屏蔽
配置NVIC:
声明NVIC_InitTypeDef数据结构类型的变量
NVIC_InitStructure
配置NVIC异常向量表地址
配置NVIC采用的优先级组
配置NVIC_InitStructure的成员
使用NVIC_Init函数和NVIC_InitStructure初始化每个指定中断源
配置EXTI:
声明EXTI_InitTypeDef数据结构类型的变量
EXTI_InitStructure
配置EXTI_InitStructure的成员
使用EXTI_Init函数和EXTI_InitStructure
初始化每类型(事件/中断、边沿检测)中断源
SysTick库函数说明p110
第11章USART串口模块
UART通用异步收发器UniversalAsynchronousReceiver/Transmitter
USART通用同步异步收发器UniversalSynchronousAsynchronousReceiverTransmitter
同步时钟
USART
全双工UART串口通讯
多机UART通讯、半双工通讯
同步USART通讯
LIN(LocalInterconnectNetwork)
局域互联网
主要用于汽车内部电子设备间的网络
适用于低复杂度低传输速率(相对于CAN)
智能卡模式
ISO7816协议的智能卡(接触式)通讯
IrDA红外通讯
全双工UART串口通讯,硬件连接GND、Tx、Rx:
全双工:
发送和接收可同时进行
半双工:
发送和接收必须分时进行(仅用GND、TX)
全双工UART串口通讯
异步通讯:
无时钟信号
NRZ编码:
例如:
正高电平代表1,低电平代表0
设备在发送时按照一定速率(波特率)发送;设备在接收时按照一定速率(波特率)采样接收.
全双工UART串口通讯
信号格式:
空闲状态为保持高电平
起始位:
1位低电平
数据位:
8位:
第8位为可选的奇偶校验位
9位:
数据数据8位第9位为奇偶校验位
停止位:
0.5/1/1.5/2位停止位
*功能图p145
波特率发生单元:
1发送时钟TransmitterClock==2接收时钟ReceiverClock
USART_InitTypeDefUSART_BaudRate9600/115200等
配置完成后
1、发送控制器
2、发送数据寄存器
3、发送移位寄存器
当数据写入数据寄存器后、发送控制器将数据移入发送移位寄存器按位发送,此时产生发送寄存器空事件、发送完毕后产生传输结束事件。
USART中断控制器:
常用事件:
TXE、TC、RXNE发送缓冲器空、发送完成、接收缓冲器满
全双工UART串口通讯UART配置:
USART_InitTypeDefUSART_InitStructure
打开UART时钟、配置引脚
USART_StructInit()初始化USART_InitStructureP158
配置波特率、数据位、停止位、奇偶校验、发送和接收使能
初始化USART_Init()P156
配置中断(可选)USART_ITConfigP159
启动DMA(可选)USART_DMACmdP159
发送数据USART_SendDataP162
接收数据USART_ReceiveDataP162
USART1TxPA9推挽复用输出;USART1RxPA10浮空输入
Misc包含所有NVIC库函数
第12章SPI模块(串行外设接口)
主从全双工同步串行总线
主从模式中外设的片选信号
全双工:
发送数据线和接收数据线
同步:
时钟信号
NSS:
从设备选择线(片选线)
MOSI:
主模式输出从模式输入数据线
MISO:
主模式输入从模式输出数据线
SCK:
时钟线
设置工作模式主或从,处理器一般设置为主模式.
主模式:
MOSI:
处理器输出、外设输入;MISO:
处理器输入、外设输出
设置时钟信号,波特率发生器,时钟极性和时钟相位
设置从设备选择信号NSS,硬件或软件
完成其他属性配置后通讯控制器进行通讯控制
NSS
SCK
MISO
MOSI
SPI1
PA4
PA5
PA6
PA7
SPI2
PB12
PB13
PB14
PB15
SPI3
PA15
PB3
PB4
PB5
用作SPI引脚的GPIO大部分仍可复用为其他功能,使用时需要确认该引脚可用
例如PA15缺省为JTAG调试引脚,调试时该引脚不能用作SPI3_NSS
单主单从的连接图
单主单从:
每组同名引脚互相连接;NSS为可选引脚,NSS分为硬件和软件模式,一般不用NSS,配置时选择NSS为软件模式、另选一个GPIO作为外部设备片选引脚。
数据传输模式:
SPI有4种不同的数据传输格式时序。
CPOL时钟极性和CPHA时钟相位能够组合成4种可能的时序关系。
CPOL:
时钟极性位,控制在没有数据传输时时钟的空闲状态电平。
此位对主模式和从模式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 复习
![提示](https://static.bdocx.com/images/bang_tan.gif)