第3章.STM32F1x系统架构及资源介绍

目录

0. 《STM32单片机自学教程》专栏总纲 

3.1.STM32F1x系统架构 

3.1.1-ICode总线 

3.1.2-DCode总线

3.1.3-System总线

3.1.4-总线矩阵

3.1.5-DMA总线

3.1.6-AHB/APB总线

3.2.STM32F1x片上资源

3.3.STM32F103C8T6引脚定义

3.3.1 主功能

3.3.2 默认复用功能

3.3.3 重定义功能

3.4.STM32数据手册及资料资源

参考资料:

0. 《STM32单片机自学教程》专栏总纲 

        本文作为专栏《STM32单片机自学教程》专栏其中的一部分,返回专栏总纲,阅读所有文章,点击Link:  

STM32单片机自学教程-[目录总纲]_stm32 学习-CSDN博客

3.1.STM32F1x系统架构 

图3.1-1STM32F1x系统架构图 

        如图3.1-1所示为STM32F1系列的系统架构图。蓝色为被动单元,绿色为主动单元。主动和被动单元之间通过总线矩阵连接。STM32F1x各总线和设备总结如下图3.1-2.

图3.1-2 STM32F1x总线简介

3.1.1-ICode总线 

        ICode总线是指令总线,它的主要作用是连接Cortex-M3内核与FLASH存储器的指令接口。具体来说,ICode总线用于加载FLASH闪存中的程序指令。当我们编写的程序被编译后,它会转换为一条条机器指令,并存储在FLASH闪存中。Cortex-M3内核通过ICode总线可以获取这些指令,并按顺序执行代码。因此,ICode总线在STM32F1系列单片机中起到了关键的作用,确保内核能够正确地读取并执行程序指令。ICode总线直接连接Flash接口,不需要经过总线矩阵。

3.1.2-DCode总线

        DCode总线是数据总线。它主要负责从Flash存储器或其他非易失性存储器中取指(Fetch),即将指令读取到指令流水线中。具体来说,DCode总线是Cortex-M3内核与存储器系统之间指令传输的通道,确保CPU能够按照程序顺序执行存储在存储器中的指令。此外,DCode总线还用于加载数据,如常量和调试数据等。Cortex-M3内核可以通过DCode总线访问Flash闪存和SRAM中的数据。在实际应用中,变量通常会储存在内部的SRAM中,而Flash闪存中则会储存程序所用到的常量

        那么ICode总线和DCode总线有什么区别呢?

        ICode总线主要承担的是指令的预取任务。它将M3内核指令总线和闪存指令接口相连接,确保CPU能够正确且高效地获取存储在Flash闪存中的指令。这一过程对于单片机的正常运行至关重要,因为只有获取到正确的指令,CPU才能按照程序设定的逻辑进行工作。

        而DCode总线则主要负责数据的传输和访问。它将M3内核的DCode总线与闪存存储器的数据接口相连接,使得CPU能够读取Flash中存储的全局变量的数值以及其他数据(例如常量)。此外,DCode总线还负责常量加载和调试访问,这些都是在数据传输和访问过程中必须完成的任务。

3.1.3-System总线

        系统总线连接Cortex-M3内核系统总线到总线矩阵,从而连接Cortex-M3内核与外设寄存器,确保CPU能够高效、准确地访问和操作这些外设。通过system系统总线,CPU可以读取外设的状态信息,了解外设的当前工作状况;同时,CPU还可以向外设发送控制指令,实现对外设的精确控制。此外,system系统总线还负责在CPU和外设之间进行数据传输,无论是读取传感器数据还是向执行器发送指令,都需要通过这条总线来完成。

        system系统总线的存在,使得STM32F1系列单片机能够灵活地控制和管理各种外设,实现复杂的系统功能。它是单片机与外设之间通信和数据传输的关键通道,确保了单片机系统的正常运行和高效性能。

3.1.4-总线矩阵

        总线矩阵主要用于连接Cortex-M内核、DMA控制器、外设和存储器,实现这些组件之间的互连和数据传输。

        具体来说,总线矩阵通过协调内核系统总线和DMA主控总线之间的访问仲裁,确保多个总线之间的通信和数据传输能够高效、有序地进行。这种协调功能基于轮换算法实现,确保了即使在多个高速外设同时运行的情况下,系统也能实现并发访问和高效运行。此外,总线矩阵还负责管理控制总线之间的访问优先级。这有助于优化系统性能,确保关键数据和指令能够优先传输和处理。

3.1.5-DMA总线

        DMA(Direct Memory Access,直接内存访问)总线允许外设设备直接与内存进行数据传输,而无需CPU的干预。这使得数据可以在外设与存储器之间或存储器与存储器之间直接传输,大大提高了数据传输的效率和性能。

        DMA传输数据移动过程无需CPU直接操作,从而节省了CPU资源,使其可供其它操作使用。这种数据传输方式不仅提高了CPU的效率,还降低了系统的功耗。

        在STM32F1系列单片机中,DMA控制器被集成在内部总线矩阵中。通过DMA控制器的配置和操作,可以实现外设和内存之间的数据传输。STM32F1系列的DMA控制器可能包含多个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。这些通道可以理解为传输数据的一种管道,通过软件来配置。

3.1.6-AHB/APB总线

        AHB总线通过两个桥接与2个APB总线连接。

        AHB(Advanced High-performance Bus,高级高性能总线) 主要用于挂载基本或者高性能的外设,确保系统的稳定运行,AHB的最大频率是72MHZ。

        APB(Advanced Peripheral Bus,高级外设总线)主要负责连接低速外设,如UART、I2C、I/O接口等。AHB总线注重高性能模块之间的数据交换,而APB总线则更侧重于简单、高效的外设连接。

        其中APB又分为高速的APB2和低速的APB1,APB2连接外设中比较重要的外设,APB1连接次重要的外设,如下图3.1-3所示。很多外设的1号通道都配置在了APB2中。APB2的最大频率和AHB一样是72MHZ,APB1的最大频率只有36MHZ。

图3.1-3 STM32F1系列APB2和APB1总线挂载外设图

3.2.STM32F1x片上资源

图3.2-1 STM32F1系列的外设资源

        如图3.2-1, 是STM32系列的外设资源,需要注意,有些型号可能并不一定有,具体每个芯片有哪些资源,需要查看对应手册。后面我们的教程就是围绕这些外设展开的。

3.3.STM32F103C8T6引脚定义

图3.3-1 STM32F103C8T6主要参数及引脚

        如上图,STM32F103C8T6的引脚排布,左上角一般都会有个标记黑圈等,这个标记左侧的引脚定义为1号引脚,然后按逆时针依次排序。其他型号的芯片一般也都是按这个规则进行引脚定义排布。STM32F103C8T6有48个引脚,各引脚的功能及含义总结如下图: 

图3.3-2 STM32F103C8T6各引脚定义 

        如图3-2.红色标注的是和电源相关的引脚,蓝色是和最小系统有关的引脚,绿色是正常的I/O口,功能口。 引脚的类型以及电平,下图的最下方已经进行了标注,这里不再赘述,下面将一下引脚的这3个功能的含义: 

3.3.1 主功能

         STM32引脚的主功能是其上电后的默认功能。通常,主功能与引脚名称相同,但也可能存在实际功能与引脚名称不符的情况。在这种情况下,引脚的实际功能应被视为其主功能,而不是引脚名称所指示的功能。主功能涵盖了通信、控制、数据传输等单片机常用的操作。

3.3.2 默认复用功能

        在STM32中,GPIO(通用输入输出)引脚具有复用功能,即这些引脚可以被配置为执行除其主要功能之外的其他功能。这种复用功能使得单片机能够在有限的引脚数量上实现更多的外设功能。例如,某些GPIO引脚可以被复用为I2C通信、SPI通信或其他外设的接口。这种复用性是通过软件配置来实现的,使得引脚的功能更加灵活多变。即复用功能就是I/O口上同时连接的外设功能引脚,这个我们可以在配置I/O口的时候选择主功能还是默认复用功能。

3.3.3 重定义功能

        在某些情况下,一个外设的引脚除了具有默认的端口外,还可以重新映射,将外设的功能映射到其他的引脚上。这就是引脚的重定义功能,也被称为重映射。这种功能在引脚被其他外设占用,但仍需要其原始外设功能时非常有用。如果有2个功能同时复用在了一个I/O口上,而我们却又确实需要用到这2个功能,我们就可以把其中一个复用功能映射到其他端口,当然前提是这个重定义功能的表里有对应的端口。

3.4.STM32数据手册及资料资源

        学习单片机一定要学会查看参考手册。同时提供ST中文社区网站:

ST中文社区网:https://www.stmcu.org.cn 

        

参考资料:


        【1】哔站江协科技STM32入门教程

        【2】《STM32单片机原理与项目实战》刘龙、高照玲、田华著

        【3】《ARM Cortex-M3嵌入式原理及应用》黄可亚著

        【4】《STM32嵌入式微控制器快速上手》陈志旺著

        【5】《STM32单片机应用与全案例实践》沈红卫等著

        【6】《野火STM32开发指南》

        【7】《正点原子STM32开发指南》

  • 48
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值