【STM32】F103 总线结构

  • 一、总线的概念
  • 二、STM32的总线结构
    • 2.1 STM32的总线矩阵
    • 2.2 STM32的存储器映射
    • 2.3 STM32的外设寄存器

一、总线的概念

总线是连接多个部件的信息传输线,是各部件共享的传输介质。总线是一种电路,它是CPU、RAM、ROM、输入、输出等设备传递信息的公共通道,充当数据在计算机内传输的高速公路。

在这里插入图片描述

总线的特性包括以下几方面:

  • 机械特性:物理尺寸、插头形状、管脚数、排列顺序等;
  • 电气特性:信号线的电平范围、电源电压等;
  • 功能特性:每根传输线的功能,如数据、地址、控制等;
  • 时间特性:信号的前后时序关系,如时钟同步方式等;
  • 性能指标:总线宽度、总线带宽、信号线数、总线控制方式、带载能力等;

总线的应用主要有以下几种:

  • 片内总线:芯片内部总线,例如运算器和cache之间的总线;
  • 系统总线:系统总线也称为板级总线。处理器与主存、I/O等部件之间的信息传输线。系统总线中常见的三总线结构:数据总线(DB)、地址总线(AB)、控制总线(CB);
  • 通信总线:计算机系统之间,或计算机与其他设备之间的信息传输线。通信总线可以分为串行通信和并行通信。

二、STM32的总线结构

STM32是一系列基于ARM Cortex-M内核的32位微控制器,它具有丰富的外设资源和灵活的存储器映射。本文将从以下几个方面介绍STM32的总线结构:

  • STM32的总线矩阵
  • STM32的存储器映射
  • STM32的外设寄存器

2.1 STM32的总线矩阵

STM32采用了多层AHB(Advanced High-performance Bus)总线矩阵,用于连接Cortex-M内核、DMA控制器、外设和存储器。STM32的总线矩阵可以分为以下六部分:

  • ICode总线:用于访问存储空间里指令的总线;
  • DCode总线:用于访问存储空间里数据的总线;
  • System总线:用于访问指令、数据以及调试模块接口;
  • DMA总线:用于内存与外设之间的数据传输;
  • Bus matrix:用于总线之间的访问优先级管理控制;
  • APB总线:用于外设接口的数据传输;

总线结构:
在这里插入图片描述

总线矩阵:
在这里插入图片描述

其中:

  • ICode、DCode、System Bus都是AHB总线,可以实现高速数据传输。

  • APB(Advanced Peripheral Bus)则是较慢的外设总线,通过两个AHB-APB桥接器连接到AHB上。APB1上挂接有DAC、UART等外设,其最高频率可达36MHz;APB2上挂接有ADC、GPIO等外设,其最高频率可达72MHz。

2.2 STM32的存储器映射

STM32采用了统一编址的方式,将存储器和外设都映射到一个4GB(2^32字节)的逻辑地址空间中。STM32将4GB空间分为了八个区域,每个区域大小为512MB,分别为:

  • 0x0000 0000 ~ 0x1FFF FFFF (512MB):作为代码区,用于存放下载的代码。系统上电后,将从该部分读取代码;
  • 0x2000 0000 ~ 0x3FFF FFFF (512MB):作为SRAM区,用于存放运行代码。系统上电后,将从Flash读取代码,放到SRAM里,CPU再从SRAM读取代码运行;
  • 0x4000 0000 ~ 0x5FFF FFFF (512MB):作为片上外设区,用于存放厂商外设寄存器。要操作外设,即修改这里对应的外设寄存器;
  • 0x6000 0000 ~ 0x9FFF FFFF (1GB):作为片外RAM,用于扩展RAM。当SRAM或者Flash不够用时,MCU通过FSMC外接其它IC芯片,则在这个地址范围读写IC芯片数据;
  • 0xA000 0000 ~ 0xDFFF FFFF (1GB):作为片外外设区,用于读写扩展IC芯片的寄存器。ST只用了这里的一半空间,另外一空间未使用;
  • 0xE000 0000 ~ 0xFFFF FFFF (512MB):作为内核外设区,用于存放Cortex-M3内核的内部外设。Cortex-M3内核的内部外设有NVIC、Systick等;

在这里插入图片描述

2.3 STM32的外设寄存器

STM32的外设寄存器是用来控制和配置外设功能的特殊存储单元,它们与存储器统一编址,可以通过指针操作来访问和修改。STM32的外设寄存器包括以下几类:

  • 复位和时钟控制寄存器(RCC):用于控制系统时钟源、时钟分频、时钟使能等功能;
  • 中断和异常控制寄存器(NVIC):用于控制中断和异常的优先级、使能、屏蔽等功能;
  • 通用输入输出端口寄存器(GPIO):用于控制GPIO的模式、速度、输出类型、上下拉等功能;
  • 定时器寄存器(TIM):用于控制定时器的工作模式、预分频、自动重装载、捕获比较等功能;
  • 串行通信接口寄存器(USART):用于控制串口的波特率、数据位、停止位、校验位等功能;
  • 模数转换器寄存器(ADC):用于控制模拟信号的采样、转换、触发等功能;

STM32的外设寄存器是编程中最常用到的部分,需要熟练掌握每个寄存器的功能和位域含义。本文只是简单介绍了STM32的总线结构。



~

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

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

相关文章

PHP 论坛系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 论坛系统 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为PHP APACHE,数据库为 mysql5.0,使用php语言开发。 下载链接…

大数据应用——HBASE实验

任务一:搭建HBase集群 1.1 搭建Zookeeper 1. 官网下载Linux环境的tar包 (1)官网地址:Apache ZooKeeper (2)下载Linux环境的tar包 2. 拷贝安装包到Linux系统下并解压到指定目录 [hadoophadoop101 softwar…

高效处理消息:使用Spring Boot实现消息重试机制

当涉及到消息发送和接收的可靠性,Spring Boot提供了一些机制来确保消息的可靠传递。其中包括消息确认机制和重试机制。下面是一个示例代码,演示如何在Spring Boot中实现可靠的消息发送和接收。 首先,我们需要配置RabbitMQ的连接信息和相关属性…

【Java】JVM学习(一)

JVM是一种规范 Java程序的执行过程 一个 Java 程序,首先经过 javac 编译成 .class 文件,然后 JVM 将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数。JVM 作为 .class 文件的翻译存在&#xff…

Flutter 设置自定义字体

一般我们会在 assets 文件夹下新建一个 font 的文件夹,然后把字体拖动到 font 文件夹中,如下图所示 然后在 pubspec.yaml 配置文件中新添加如下内容 fonts:- family: Impactfonts:- asset: assets/font/IMPACT.TTF 最后字体使用 Text( "自定义字体…

基于深度学习的高精度烟雾检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度烟雾检测识别系统可用于日常生活中或野外来检测与定位烟雾目标,利用深度学习算法可实现图片、视频、摄像头等方式的烟雾目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

天津大学天津市认知计算与应用重点实验室视听觉认知计算团队12篇论文被语音处理顶会Interspeech 2023接收

天津大学天津市认知计算与应用重点实验室视听觉认知计算团队12篇论文被语音技术顶会Interspeech 2023接收,涵盖意图识别、口语理解、声学特征、语音识别、语音分离、情感识别等研究方向,论文简介如下。 01. Rethinking the visual cues in audio-visual…

最新ai创作系统CHATGPT镜像系统源码+支持GPT4.0+支持ai绘画(MJ)+实时语音识别输入+免费更新版本

AI系统CHATGPT镜像程序源码支持GPT4支持ai绘画实时语音识别输入免费更新版本 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 1、提问:程序已经支持GPT3.5、GPT4.0接口、支持新建会话,上下文记忆…

PyGame游戏编程

Python非常受欢迎的一个原因是它的应用领域非常广泛,其中就包括游戏开发。而是用Python进行游戏开发的首选模块就是PyGame。 1. 初识Pygame PyGame是跨平台Python模块,专为电子游戏设计,包含图像、声音等,创建在SDL(…

【GESP】2023年06月图形化二级 -- 时间规划

文章目录 时间规划【题目描述】【输入描述】【输出描述】【参考答案】其他测试用例 时间规划 【题目描述】 默认小猫角色和白色背景,小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟。你能通过编程帮他做到吗? 【输入描述】 新建变量“…

数据结构-哈希-位图与布隆过滤器

位图与布隆过滤器 一,位图题目分析位图设计位图代码经典题目 二,布隆过滤器布隆过滤器概念布隆过滤器的插入布隆过滤器的结构布隆过滤器总结经典题目 三,哈希切割 一,位图 题目分析 🚀给40亿个不重复的无符号整数&am…

设计模式之策略模式笔记

设计模式之策略模式笔记 说明Strategy(策略)目录策略模式示例类图抽象策略类策略A类策略B类策略C类促销员类测试类 说明 记录下学习设计模式-策略模式的写法。JDK使用版本为1.8版本。 Strategy(策略) 意图:定义一系列的算法,把它们一个个封装起来,并且…