嵌入式开发基础-STM32-总线

前言

通过前面的学习我们已经知道外设是如何挂载在总线上了,可是我们还不认识这些外设和总线,也不知道外设是怎么通过总线和外设进行通信的。根据STM32F03VET6芯片系统结构(下图),我们简单介绍这些外设和总线。

STM32F103芯片系统结构

系统结构

总线

ICode 总线

ICode 中的 I 表示 Instruction,即指令。ICode总线是context-M3与内部闪存FLASH指令接口之间的连接的总线,实现指令的预取功能。

我们写好的程序经过编译器编译后生成汇编文件,汇编文件里是一条条机器指令,存放在FLASH中。内核执行程序时需要通过 ICode 总线读取这些指令。它是专门用来取指的。

DCode 总线

DCode 中的 D 表示 Data,即数据。DCode总线是context-M3与总线矩阵连接的总线,通过总线矩阵连接内部闪存FLASH接口和内部的SRAM,是用来取数据的。

程序运行时,除了一条条指令还有数据。数据分为两种-常量和变量。常量是不变的,存放在内部闪存FLASH。变量是可变的,存放在内部SRAM中。

为啥不直接连接内部闪存FLASH接口和内部SRAM,而要连接到总线矩阵?因为不仅DCode 总线可以取数据,DMA总线(下面会解释)也可以取数据。这样取数据时就有可能发生访问冲突,发生冲突时就需要总线矩阵来仲裁,决定哪个总线来取数。

系统总线

此总线连接Cortex?-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA

的访问。

系统总线又叫外设总线,主要是访问外设的寄存器的。我们通常说的寄存器读写(寄存器编程),都是通过这跟外设总线完成的。

DMA总线

此总线将DMA的AHB主控接口与总线矩阵相连接。

DMA 总线主要是用来传输数据,数据可能在内部闪存FLASH里,可能在SRAM中,可以在FLASH某个外设的数据寄存器里。总线矩阵协调着CPU(内核)的DCode(数据总线)和DMA到SRAM、闪存和外设的访问。

总线矩阵

总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。在此款芯片中(STM32F03VET6)总线矩阵包含4个驱动部件(CPU(内核)的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口(FLITF)、 SRAM、 FSMC和AHB2APB桥)。

AHB外设通过总线矩阵与系统总线相连,允许DMA访问。

AHB/APB桥(APB)(敲黑板)

两个AHB/APB桥(桥接1、桥接2)在AHB和2个APB总线间提供同步连接。 APB1操作速度限于36MHz, APB2操作于全速(最高72MHz)。

从 AHB 总线延伸出来的两条APB2 和 APB1总线通过两个AHB/APB桥(桥接1、桥接2)连接,APB2 和 APB1 两条总线上面挂载着 STM32的各种外设。比如常见的GPIO、串口、 I2C、 SPI这些外设就挂载在这两条总线上,这是我们学习 STM32 的重点,要学会编程使用这些外设去驱动外部的各种设备。

总结

以上我们介绍了芯片内部的各种总线,没想到篇幅略长。每天学一点才容易消化,我们下一篇再介绍片内外设吧。

(后面会开展STM32 103指南者系列编程文章, ,文章中不对的地方,欢迎指正。)

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月3日
下一篇 2019年7月3日

相关推荐