基于Cortex的MCU设计

基于Cortex的MCU设计

今日更新的存货文档,发现日更文章还是很花时间的。保证一周更新三篇文章就行啦,本篇文章的内容起始主要取自于《Cortex-M3 权威指南》和知网下载的论文。写的不详细,想进一步了解的就去看这篇文档或网上找别的资料,有错误的地方评论区留言或者私信我,我再更改。书本网盘链接如下,永久有效链接。

链接:https://pan.baidu.com/s/1Zp0L1rAnCJi8brKHjc766Q

提取码:5v92


文章目录


一、概述

如下表所示,MCU大致可以分为5个发展阶段,MCU的位数表示微处理器核每次处理数据的位数或者总线系统的位宽。目前电子市场的主流芯片是16位和32位处理器。

MCU按照指令集可以分为复杂指令集计算机(Complex Instruction Set Computer,CISC)和精简指令集计算机(Reduced Instruction Set Computer,RISC)。现在市面上常用的MCU采用的ARM架构是RISC指令集,该指令集的计算机处理速度更快、功耗更低。

根据MCU中才采用的存储结构不同可以分为冯诺依曼结构和哈佛结构,前者程序指令和数据指令共用同一个存储空间,后者程序指令和数据指令放在不同的空间。目前常用的MCU基本都是采用哈佛结构,比如ARM公司推出的ARM架构大多也是采用的哈佛结构,部分对内核要求很高的SOC系列芯片,采用的是冯诺依曼结构。本文主要讲解以下基于Cortex-M3内核的MCU设计时需要具备什么硬件功能。主要是从处理器内核、系统片上总线和片上外设三部分去讲解。


二、什么是Cortex-M3内核?

基于ARM的MCU控制器的制作流程如下图所示,各大芯片厂商得到了ARM微处理器授权后,根据自身需求再处理器的基础上添加存储器、系统总线和外设等部件。

ARM公司设计了多系列的微处理器内核,其部分Cortex-M系列的产品如下所示,Cortex-M3系列的处理器是ARM公司为高性能、低成本的平台开发而设计。

Cortex-M3具备一个完整的微控制器架构,如下图所示,下文将会根据该内核的简化视图依次从指令集、寄存器、异常和中断、存储器映射和总线接口五大点讲解内核的核心知识点。

2.1 指令集

ARM处理器目前可支持两种相互独立的指令集,分别是32位的ARM指令集和16位的Thumb指令集,两而cortex-M3可支持这两个指令集,三者之间的关系如下所示。

2.2 寄存器

Cortex-M3包括16个32bit的寄存器和多个特殊寄存器。特殊寄存器包括程序号状态寄存器、中断屏蔽寄存器和控制寄存器,其分类如下所示。

2.3 异常和中断

Cortex-M3支持11种类型的系统异常以及240个外部中断,通过内核中搭载的嵌套向量中断控制器(Nested Vectored Interrupt Controller,NVIC)实现对中断和异常的响应,其系统中断如下所示。

2.4 存储器映射

Cortex-M3的地址空间映射如下所示。

2.5 总线接口

Cortex-M3处理器内核基于AHB总线协议的32位总线接口包括:I-CODE总线、D-CODE总线、系统总线和外设总线,如下所示。

三、芯片内部数据怎么传输?(AMBA总线)

3.1 AHB总线特性和构成

计算机不同部件之间通过什么通信呢?以及各种电子设备之间通过什么传输数据呢?我们知道UART、I2C和SPI等通信协议都是需要对应的线缆进行通信的,并且有对应的通信协议。

那么SOC内部之间各个模块之间的数据是怎么传输的呢?同样的道理啦,也是需要在芯片内部构建对应的"线缆"和"通信规则"。即,在SOC里,单个芯片内部集成了内部总线和微处理器,那么这就称为片上系统总线。一个新概念的提出,必定会有其定义和名字及相关规则吧。而ARM公司推出了面向高性能微处理器的片上通信协议,即先进微控制器总线结构(Advanced Microcontroller Bus Architecture)协议。我们现在常用的微处理器采用的就是AHB总线,该总线就是AMBA总线协议中的一种,其支持多总线主机和流水线操作,典型的AHB总线系统如下所示。

AHB的总线信号一般分为主机接口信号、从机接口信号和其他信号三大类,部分关键信号名称和作用如下表所示。

AHB采用流水线传输操作,其数据传输过程如下所示。

3.2 APB总线

与AHB总线不同的是,APB总线没有流水线操作,其主要的信号描述如下所示。

APB总线的传输状态如下图所示,我们可以看到,APB传输数据主要分为3个状态。①外设总线的默认状态;②SETUP状态,有传输数据时候,PSEL_x信号拉高,总线保持一个SETUP周期。③ENABEL状态,该状态下PENABLE拉高保持一个周期,传输数据。如果没有数据传输了则进入到状态①,负责进入状态②。

根据以上的状态机,APB写传输的时序如下所示。

APB读传输时序如下。

3.APB桥

AMBA总线协议提供了APB桥实现AHB总线和APB总线之间的时序切换。APB桥在总线系统中既是AHB的从机又是APB的唯一主机。APB桥接信号如下图所示。


三、MCU外围设备

不同的生产厂商根据自身的需求会增加对应的外设,包括有定时器、输入输出端口、通信接口、看门狗、SPI接口、I2C接口等。

我们现在使用的32位单片机,基本都是基于ARM的内核实现的MCU。比如我们常用的STM32F103,其内核是ARM的cortex-M3内核,在内核的基础上再配置了一些外设,如GPIO、ADC、DAC、USART、SPI、I2C等外设接口。且这些芯片公司基本都有成熟的固件库,芯片公司已经写好了对应外设的API接口函数,我们在应用的时候使用固件库开发就会轻松很多,不需要再去花时间去配置对应的寄存器。但是对于一个实际的系统开发,我们需要编写MCU控制器以外芯片对应的配置代码,需要访问对应芯片内部寄存器控制芯片功能。

相关推荐
hairenjing11234 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
模拟IC攻城狮6 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
IT B业生6 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨6 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生7 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
海绵波波1079 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫9 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
云卓科技9 小时前
无人车之路径规划篇
人工智能·嵌入式硬件·算法·自动驾驶
stm 学习ing11 小时前
C语言 循环高级
c语言·开发语言·单片机·嵌入式硬件·算法·嵌入式实时数据库
w微信1501350781211 小时前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件