基于Cortex的MCU设计

基于Cortex的MCU设计

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


文章目录

  • 基于Cortex的MCU设计
  • 一、概述
  • 二、什么是Cortex-M3内核?
    • 2.1 指令集
    • 2.2 寄存器
    • 2.3 异常和中断
    • 2.4 存储器映射
    • 2.5 总线接口
  • 三、芯片内部数据怎么传输?(AMBA总线)
    • 3.1 AHB总线特性和构成
    • 3.2 APB总线
    • 3.APB桥
  • 三、MCU外围设备


一、概述

如下表所示,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控制器以外芯片对应的配置代码,需要访问对应芯片内部寄存器控制芯片功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据治理与提取:未来科技发展的双引擎

在数字化浪潮席卷全球的今天,数据已成为推动科技进步的新石油。无论是人工智能、机器学习还是物联网,都离不开数据的支撑。然而,数据的海量增长也带来了新的挑战:如何有效地管理和利用这些数据?答案在于数据治理和数据…

Lightdm设置自动登录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、设置自动登录总结 前言 熟悉嵌入式系统的人都不陌生lightdm,这个轻桌面管理器曾经是Ubuntu等一众发行版默认的桌面,自从Ubuntu-18.…

Divisibility Part2(整除理论2)

Divisibility Part2 本节内容是Part1的进阶内容,主要讲的是整除在竞赛中的一些常用的技巧。 数的分解 一、带余除法 对于任意两个整数 a 、 b ( b ≠ 0 ) a、b(b\neq 0) a、b(b0),都有唯一确定的整数 q , r q,r q,r, 满足 a q b r (…

Oracle 序列-SEQUENCE

文章目录 序列-SEQUENCE创建序列访问序列序列的修改和删除查询序列信息 序列-SEQUENCE 创建序列 访问序列 序列的修改和删除 DROP SEQUENCE SEQ_EKPO;查询序列信息 可以通过视图 dba/all/user_sequences 查询序列的相关信息 SELECT SEQUENCE_NAME FROM DBA_SEQUENCES WHERE …

LLM提示工程的技巧

1. 从简单开始(Start Simple) 避免在一开始就增加太多的复杂性。 从简单的提示开始,然后在后续提示中添加更多信息和上下文。 这样,提示就是一个迭代过程,提示在此过程中进一步发展。 从简单的开始,就有足…

第十二章:C# 循环

0. 简介 循环语句用于重复执行代码块,直到满足特定条件。C#提供了多种循环语句,包括for循环、while循环和do-while循环。掌握这些循环语句有助于编写高效和简洁的代码。 1. for 循环 for循环用于在已知迭代次数的情况下重复执行代码块。for循环的语法包括初始化语句、条件…

UniApp中,在页面显示时触发子组件的重新渲染

在UniApp中,要在页面显示时触发子组件的重新渲染,可以利用生命周期钩子函数来实现。具体来说,可以在页面的onShow生命周期钩子中调用子组件的方法或者改变子组件的props,从而触发子组件的重新渲染。 首先,确保子组件有…

haploview单倍型分析

只需要vcf文件和候选区间信息。按照下面的代码逻辑即可完成分析。 awk -F"\t" {if($1~/^#/){print $0}else{if($1"Chr_23" && $2>6810142 && $2<6830142){print $0}}} All.SNP.filt.recode.vcf > ud10 awk -F"\t" {p…

HTML静态网页成品作业(HTML+CSS)——川西旅游介绍网页(2个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有2个页面。 二、作品演示 三、代…

【C++】:string类底层的模拟实现

目录 引言1&#xff0c;构造函数2&#xff0c;析构函数3&#xff0c;取出字符串的地址4&#xff0c;计算有效数据个数5&#xff0c;[ ]运算符重载6&#xff0c;简单迭代器7&#xff0c;预开空间(扩容)8&#xff0c;尾插一个字符9&#xff0c;尾插一个字符串10&#xff0c;运算符…

互联网十万个为什么之什么是虚拟化?

虚拟化是在一台物理计算机上同时运行多个虚拟操作系统实例的技术。虚拟操作系统上运行的这些实例被称为虚拟机&#xff08;Virtual Machine&#xff09;或者客户机&#xff08;Guest Machine&#xff09;。每个虚拟机都具备完整的硬件抽象&#xff0c;包括CPU、内存、网络适配器…

【408精华知识】时钟周期、机器周期、总线周期、指令周期、存取周期还傻傻分不清?

在做题时&#xff0c;我们经常能遇到关于“周期”的表述&#xff0c;比如时钟周期、机器周期、总线周期、指令周期、存取周期&#xff0c;类似的表述让我们很容易迷茫&#xff0c;那么接下来我们就看看它们到底是什么、有什么区别&#xff1f; 周期特点时钟周期也称为CPU时钟周…

图片数据增强-resize(不同插值)、各种模糊

各种不同的模糊处理 import os import cv2def apply_blur_to_images(input_folder_path, output_folder_path):# 遍历文件夹下的所有文件for filename in os.listdir(input_folder_path):# 检查文件类型是否为图片if filename.endswith(.jpg) or filename.endswith(.jpeg) or …

手算示例:在神经网络中进行后门攻击及验证

手算示例&#xff1a;在神经网络中进行后门攻击及验证 一、神经网络架构二、初始化参数三、数据集干净数据&#xff08;原始数据&#xff09;带后门数据&#xff08;污染数据&#xff09; 训练步骤四、示例前向传播&#xff08;干净数据&#xff09;计算损失&#xff08;干净数…

每天五分钟深度学习框架pytorch:tensor张量的维度转换大全

本文重点 在深度学习中比较让人头疼的一点就是矩阵的维度,我们必须构建出符合神经网络维度的矩阵,只有将符合要求的矩阵放到神经网络中才可以运行神经网络,本节课程我们将学习以下tensor中维度的变化。 view和shape View和shape,这两个方法可以完成维度的变换操作,而且使…

【C语言实现TCP通信】

要在C语言中实现TCP通信&#xff0c;您可以遵循以下步骤&#xff1a; 创建Socket&#xff1a;使用socket()函数创建套接字&#xff0c;指定协议族为AF_INET&#xff08;IPv4&#xff09;或AF_INET6&#xff08;IPv6&#xff09;&#xff0c;类型为SOCK_STREAM表示使用TCP协议。…

【相机标定系列】【相机模型】SLAM 中常用的相机模型畸变模型总结

Overview 鱼眼镜头的成像原理分类&#xff1a; Dioptric cameras&#xff0c;通过透镜来实现&#xff0c;主要是折射 Catadioptric cameras&#xff0c;使用一个标准相机加一个面镜&#xff08;Shaped mirror&#xff09; polydioptric camera&#xff0c;通过多个相机重叠视…

npm的基本命令和用法

1. 安装与初始化 安装npm 首先&#xff0c;确保你的系统中已安装了Node.js&#xff0c;因为npm随Node.js一同分发。访问Node.js官网下载并安装适合你操作系统的版本。安装完成后&#xff0c;在终端或命令提示符中输入以下命令来验证安装&#xff1a; 1$ node -v 2$ npm -v …

[STM32-HAL库]ADC采集-DMA中断采集-平均值滤波-STM32CUBEMX开发-HAL库开发系列-主控STM32F103C8T6

目录 一、前言 二、实现步骤 1.STM32CUBEMX配置 2.Keil工程程序设计 三、结语 一、前言 本文通过STM32CUBEMX实现对ADC的数据采集和滤波操作&#xff0c;帮助各位开发者完成与模拟量输入的采集工作。 二、实现步骤 1.STM32CUBEMX配置 以STM32F103C8T6为例&#xff0c;打开S…

3D 生成重建015-nerf2mesh从神经辐射场中提取mesh和纹理!

3D 生成重建015-nerf2mesh从神经辐射场中提取mesh和纹理&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 NeRF2Mesh 提出了一种从多视角 RGB 图像重建纹理表面网格的新方法。它克服了传统 NeRF 模型的局限性&#xff0c;由于其隐式表示&#xff0c;传统 NeRF 模…