基于Cortex的MCU设计

news2024/9/8 9:01:21

基于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.coloradmin.cn/o/1703560.html

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

相关文章

FreeRtos进阶——关于任务的深入探究

创建任务函数 在我们创建任务中,会有几个比较神奇的参数,例如函数名称,以及栈大小。在我们创建任务时,也相应的要为每一个任务创建栈。这里面的栈除了用于任务数组开辟的空间外,还可以用于保存现场,例如有S…

kubernetes(k8s) v1.30.1 创建本地镜像仓库 使用本地docker镜像仓库部署服务 Discuz X3.5 容器搭建论坛

1 master11创建本地镜像仓库 [rootmaster11 ~]# docker run -d -p 5000:5000 --restartalways --name registry registry:2 Unable to find image registry:2 locally 2: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df…

5月27日

思维导图 #include <iostream>using namespace std; namespace st_open {string a1;string retval(string a1);} using namespace st_open; int main() {getline(cin,a1);cout << "逆置前的字符串&#xff1a;" << a1 << endl;a1rerval(a1);…

YOLOV8逐步分解(5)_模型训练初始设置之混合精度训练AMP

yolov8逐步分解(1)--默认参数&超参配置文件加载 yolov8逐步分解(2)_DetectionTrainer类初始化过程 yolov8逐步分解(3)_trainer训练之模型加载_yolov8 加载模型-CSDN博客 YOLOV8逐步分解(4)_模型的构建过程 在上述文章逐步分解&#xff08;3&#xff09;和&#xff08;4&…

openEuler 22.03 LTS SP3源码编译部署OpenStack-Caracal遇到的问题解决

openEuler 22.03 LTS SP3源码编译部署OpenStack-Caracal遇到的问题解决 问题一 给路由设置外部网关后Status为DOWN&#xff08;使用的是OVN&#xff09;问题描述临时的解决办法永久解决办法&#xff08;修改源代码&#xff09; 问题二 分离卷一直显示分离中问题描述解决办法&am…

YOLOv8 Closing dataloader mosaic

在使用YOLOV8训练时&#xff0c;epoch训练到最后10次出现”Closing dataloader mosaic"&#xff0c;又不是报错&#xff0c;但又不往下进行训练&#xff0c;有点懵了&#xff0c;后面经过了解&#xff0c;Yolov8是默认设置close_mosaic10&#xff0c;需要把它修改为0; clo…

js:数组去重

let arr [{name:1},{name:2},{name:2}] let seen {} let new_arr arr.filter(item > {return seen.hasOwnProperty(item.name) ? false : (seen[item.name] true); }); console.log(new_arr,new_arr);

微信小程序仿胖东来轮播和背景效果(有效果图)

效果图 .wxml <view class"swiper-index" style"--width--:{{windowWidth}}px;"><image src"{{swiperList[(cardCur bgIndex -1?swiperList.length - 1:cardCur bgIndex > swiperList.length -1?0:cardCur bgIndex)]}}" clas…

抽屉网关停,Digg类网站退出互联网舞台

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 别人我不清楚&#xff0c;至少在松松我心中&#xff1a;抽屉网是世界著名的网站&#xff0c;而近期抽屉新热榜突然宣布关站了&#xff0c;我内心充满遗憾。因为抽屉网站收集的内容&#xff0c;让我看到了更大的世界…

第十二届蓝桥杯物联网试题(国赛)

不得不说国赛相比较省赛而言确实&#xff0c;功能变得更加复杂&#xff0c;更加繁琐&#xff0c;特别是串口LORA通信相结合的更加频繁&#xff0c;且对收取的字符处理要求要更加复杂&#xff0c;处理判别起来会更加复杂。 对于收发数据本身来说&#xff0c;收发的数据本身是以…

源码编译安装LAMP与部署

目录 一、LAMP架构的简述 1.LAMP搭建时各组件安装顺序 二、编译安装Apache httpd服务 1.关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下 2.安装环境依赖包​编辑 3.配置软件模块 4.编译及安装 5.优化配置文件路径&#xff0c;并把httpd服务的可执行程序文…

重学java 47.集合 ② 迭代器

金榜题名&#xff0c;前程似锦 —— 24.5.27 一、迭代器的介绍和使用 1.概述 Iterator接口 2.主要作用 遍历集合 3.获取 Collection中的方法&#xff1a; Iterator<E> iterator() 4.方法 boolean hasNext() —> 判断集合中有没有下一个元素 E.next() —> 获取下一个…

Leetcode 力扣92. 反转链表 II (抖音号:708231408)

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1,4,3,2…

dp + 计数,1954D - Colored Balls

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1954D - Codeforces 二、解题报告 1、思路分析 本题前置题目&#xff1a; 1953. 你可以工作的最大周数 通过前置题目可以知道如何计算两两不同数对序列的最大长度 我们记最大数量为ma&#xf…

我的世界开服保姆级教程

前言 Minecraft开服教程 如果你要和朋友联机时&#xff0c;可以选择的方法有这样几种&#xff1a; 局域网联机&#xff1a;优点&#xff1a;简单方便&#xff0c;在MC客户端里自带。缺点&#xff1a;必须在同一局域网内。 有些工具会带有联机功能&#xff1a;优点&#xff1a;一…

剖析【C++】——类与对象(上)超详解——小白篇

目录 1.面向过程和面向对象的初步认识 1.面向过程&#xff08;Procedural Programming&#xff09; 2.面向对象&#xff08;Object-Oriented Programming&#xff09; 概念&#xff1a; 特点&#xff1a; 总结 2.C 类的引入 1.从 C 语言的结构体到 C 的类 2.C 中的结构…

LLaMa系列模型详解(原理介绍、代码解读):LLaMA 2

LLaMA 2 大型语言模型&#xff08;LLMs&#xff09;作为高度能力的人工智能助手&#xff0c;在需要跨多个领域专家知识的复杂推理任务中表现出巨大潜力&#xff0c;包括编程和创意写作等专业领域。它们通过直观的聊天界面与人类互动&#xff0c;这导致了快速和广泛的公众采用。…

分布式事务解决方案(最终一致性【TCC解决方案】)

最终一致性分布式事务概述 强一致性分布式事务解决方案要求参与事务的各个节点的数据时刻保持一致&#xff0c;查询任意节点的数据都能得到最新的数据结果&#xff0c;这就导致在分布式场景&#xff0c;尤其是高并发场景下&#xff0c;系统的性能受到了影响。而最终一致性分布式…

JavaScript表达式语句二

异常处理语句 异常标识一种非中正常得信息&#xff0c;它提示程序在运行过程中发生了意外或错误&#xff0c;然后JavaScript通过一定的方式把它暴露出来&#xff0c;这叫做抛出异常。抛出异常操作表示系统告诉我们当前程序出现了问题&#xff0c;JavaScript使用异常处理语句来…

【python】python商家会员数据分析可视化(源码+数据集+课程报告论文)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…