AHB与APB总线介绍

news2024/9/24 1:18:35

1 什么是AHB、APB?

AHB(Advanced High-performance Bus)高速总线接高速master,APB(Advanced Peripheral Bus)外设总线用来接低速slave,一个master可以有多个slave,AHB和APB之间通过一个AHB2APB桥转接。

1.1 什么是主模块(master)、从模块(slave)?

        主模块是向从模块发出读写操作的模块,如CPU、DSP等。

        从模块是接受主模块发来的命令并做出反应的模块,如片上的RAM,AHB/APB桥接器等。

另外,还有一些模块同时具有两种属性,比如DMA(直接存储器存取),在被CPU编程时是从模块,但在后续传输数据时是主模块。

1.2 什么是总线?

总线是计算机系统中连接各个部件的信息通道,通过总线可以传输数据信息,通过总线矩阵管理总线之间的通信。早期的计算机系统没有总线的概念,各个部件之间分别连接,造成信息通路复杂,不宜维护与扩展。

1.3 什么是总线矩阵?

总线矩阵(Bus Matrix)是嵌入式系统中常见的组件之一,它通常用于连接多个总线并管理它们之间的数据传输。总线矩阵的作用:管理总线之间的通信,总线矩阵用于主控总线之间的访问仲裁管理。仲裁采用循环调度算法。总线矩阵可以被视为一种交叉开关,它可以根据需要将数据传输从一个总线切换到另一个总线,从而允许系统中的不同组件之间进行灵活通信。

2.芯片中的总线

与电脑相比,内核与外设就相当于电脑的CPU与主板、内存、显卡等。CPU与外设之间通过各种总线连接,其中驱动单元总线(CPU部分)有4个,被动单元总线(外设部分)有4个。

芯片(这里指内核,或者叫CPU)和外设之间通过各种总线连接,其中驱动单元有4个,被动单元也有4个 。为了方便理解,我们都可以把驱动单元理解成是CPU部分,被动单元都理解成外设。 下面我们简单介绍下驱动单元和被动单元的各个部件。

该图为 STM32F10xx系统框图 ,下面对该图进行详细解释:

1.ICode总线

ICode中的I表示Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在Flash中,内核要读取这些指令来执行程序就必须通过ICode总线,它几乎每时每刻都需要被调用,是专门用来取指令的。

2.驱动单元

2.1 Dcode总线

DCode中的D表示Data,即数据,这条总线使用来取数据的。我们在写程序的时候,数据有变量和常量两种,常量就是不变的量,在c语言中用const关键字修饰,是放在内部Flash中的;变量是可变的量,不管是全局变量还是局部变量都放在内存的SRAM中。因为数据可以被Dcode总线与DMA总线访问,为了避免冲突,在取数的时候要经过总线矩阵来仲裁,决定哪个总线读取数据。

2.2 System总线

System(系统)总线主要是访问外设的奇存器,我们通常说的寄存器编程,即读写寄存器都是通过这根条统总线来完成的。 

2.3 DMA 总线

DMA 总线也主要用来传输数据,这个数据可以在某个外设的数据寄存器中,可以在SRAM 中,也可以在内部的Flash 中。因为数据可以被 DCode 总线和 DMA 总线访问,所以为了避免访问冲突,在取效的时候需要经过一个总线矩阵来仲裁,决定哪个总线取数。

3. 被动单元

3.1 内部的闪存存储器

内部的闪存存储器即 Flash,我们编写好的程序就放在这个地方,内核通过 ICode 总线来取里面的指令。

3.2 内部的 SRAM

内部的 SRAM,即我们通常说的RAM,程序的变量、堆栈等的开销都基于内部的 SRAM。内核通过DCode 总线来访回它。

3.3 FSMC

FSMC的英文全称是Flexible static memory controller,叫灵活的静态的存储器控制器, 是STM32F10xx中一个很有特色的外设, 通过FSMC,我们可以扩展内存,如外部的SRAM,NANDFLASH和NORFLASH。但有一点我们要注意的是,FSMC只能扩展静态的内存, 即名称里面的S:static,不能是动态的内存,比如SDRAM就不能扩展。

3.4 AHB 到 APB 的桥

从AHB总线延伸出来的两条APB2和APB1总线,上面挂载着STM32各种各样的特色外设。我们经常说的GPIO、串口、I2C、SPI这些外设就挂载在这两条总线上, 这个是我们学习STM32的重点,就是要学会编程这些外设去驱动外部的各种设备。

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

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

相关文章

若依微服务实现分布式事务

一、基本介绍 1、什么是分布式事务 指一次大的操作由不同的小操作组成的,这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么全部成功,要么全部失败。从本质上来说,分布式事务就是为了保证不同数据库的数据一致…

2.1 数据类型-常量-变量(整型-浮点-字符)

目录 1 数据类型 1.1 关键字 2 常量 3 变量 3.1 命名规则 4 整形数据 4.1 符号常量 4.2 整型变量 5 浮点型数据 5.1 浮点型常量 5.2 浮点型变量 6 字符型数据 6.1 字符型常量 转义字符 6.2 字符数据在内存中的存储形式及其使用方法 6.3 ASCII码表 7 字符串型常…

homebrew安装mysql的一些问题

本文目录 一、Homebrew镜像安装二、mac安装mysql2.1、修改mysql密码 本文基于mac环境下进行的安装 一、Homebrew镜像安装 Homebrew国内如何自动安装,运行命令/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 会…

2024年,游戏行业还值得进入吗?

来自知乎问题“2024年,游戏行业还值得进入吗?”的回答。 ——原问题描述:从超小厂执行策划做起,未来有前途吗? 展望2024年,国内外的游戏市场环境或将变得更加复杂,曾经那个水大鱼大的时代过去了…

ArduPilot开源飞控之MAVProxy深入研读系列 - 2蜂群链路

ArduPilot开源飞控之MAVProxy深入研读系列 - 2蜂群链路 1. 源由2. 蜂群链路2.1 拓扑结构2.2 设备标识2.3 命令列表 3. 蜂群应用4. 总结技术进步未来挑战 5. 参考资料 1. 源由 MAVProxy的一个关键功能是它能够通过UDP将来自无人机的消息转发到网络上的多个其他设备上的地面站软…

AI绘画图生图有什么用?

随着AI渗透到我们生活中的各个角落,AI绘画图生图的出现,更是在艺术领域引起了广泛的关注和讨论。那么,AI绘画图生图究竟有什么作用呢? 首先,AI绘画图生图能够极大地提高创作效率。传统的绘画过程需要艺术家们花费大量的时间和精力…

uni-app实现页面之间的跳转传参(八)

界面之间的参数传递在 开发中经常会用到,这节主要将一下uni-app开发应用是的传参情况。如下图所示,我的一级界面将点检分成三类:日点检、周点检和年保养;在点击相应的会导航到相应的功能。 在uni-app中常用的方法有uni.navigateTo(OBJECT)、uni.redirectTo(OBJECT);简单的…

一文带你学会如何部署个人博客到云服务器,并进行域名备案与解析!

哈喽,大家好呀!这里是码农后端。之前我给大家介绍了如何快速注册一个自己的域名,并创建一台自己的阿里云ECS云服务器。本篇将介绍如何将个人博客部署到云服务器,并进行域名备案与解析。 1、域名备案 注册了域名并购买了云服务器之…

牛客循环5.27

1006 错误代码 不知道原因,有大佬解答一下吗 ac代码 1007 错误代码 ac代码

AI音乐神器Suno V3.5进化全解析:功能升级吊炸天,让音乐创作更简单!

前言 目前,suno的v3.5版本已经向Pro和Premier会员开放,从更新当天到现在我已经使用了近2000积分,接下来我将v3.5的使用体验和与旧版本v3进行比较,让大家更直观的感受到v3.5的强大。 其中一个最屌的功能,我放在最后介绍…

linux下cp和mv命令显示进度条

1.查看当前系统下coreutils工具包的版本号: [rootk8s-master ~]# rpm -qa | grep -w coreutils coreutils-8.22-24.el7_9.2.x86_64当前版本为8.22。 因为cp 和 mv 命令由 coreutils 软件包提供,所以需要重新下载 coreutils 软件包配置补丁 2.下载core…

创意学习剪辑利器:一键添加动图水印,轻松提升视频专业度与创意新境界!

在数字化时代,视频已成为我们生活中不可或缺的一部分。无论是学习分享、工作展示还是生活记录,视频都以其直观、生动的形式,赢得了广大用户的喜爱。然而,如何在众多的视频中脱颖而出,展现出自己的专业度和创意&#xf…

CI/CD:持续集成/持续部署

1. 安装docker、docker-compose # 安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i sdownload.docker.commirrors.aliyun.com/docker-ce /…

【AD21】原理图PDF文件的输出

原理图PDF文件可以共享给团队成员,用于设计审核、讨论和协同工作。 菜单栏中点击文件->智能PDF。 在弹出的界面点击Next,勾选当前项目,修改文件名,避免与制造装备图PDF文件重名将其覆盖,点击Next。 只输出原理图…

谷歌AI搜索功能“翻车”,用户体验引担忧

近期,谷歌对其搜索引擎进行重大更新,推出了全新AI搜索功能“AI Overview”,试图通过人工智能技术提供更智能便捷的搜索体验,并追赶微软和OpenAI等竞争对手。然而事与愿违,这项备受期待的功能上线后却频频出错&#xff…

实现一个自定义 hook,用于强制刷新当前组件

写在前面 在 react 中,如果 state 数据发生变化,我们知道,会重新渲染该组件。 但是这个前提是我们需要依赖 state 数据的变化,那比如我们并不想定义 state,又或者说我们的操作不能引起 state 的变化,此时…

如何把学浪的视频保存到手机

你是不是还在为无法将学浪的视频保存到手机而烦恼?别担心,接下来我将为大家分享一个非常实用的方法,让你轻松实现这一目标! 下载学浪的工具我已经打包好了,有需要的自己下载一下 学浪下载工具打包链接:百…

【408真题】2009-18

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

为什么我们会固执己见、为什么我们总认为自己是对的?

人为什么固执己见,是其所是,而非其所非?我们要有什么样的思维模式才能使自己有良好的判断力,才能作出恰当的预测和良好的决定呢?作者Julia Galef对TED发表演讲时提出自己的观点。以下是演讲的文字实录。 我想让你们想象…

刷代码随想录有感(80):回溯算法——解数独

题干&#xff1a; 代码&#xff1a; class Solution { public:bool backtracking(vector<vector<char>>& board){for(int i 0; i < board.size(); i){for(int j 0; j < board[0].size(); j){if(board[i][j] .){for(char k 1; k < 9; k){if(isval…