第二篇---血肉之躯STM32

来源:互联网 发布:人工智能股龙头杜闵梁 编辑:程序博客网 时间:2024/04/29 14:25

       又迎来了周末,这个周是单周,只休一天,下午睡了一会儿,本来昏昏沉沉的状态好多了,那就开始干活吧,第一篇学习了CM3的架构,到此还只是理论,那么这第二篇就算正式进入实战了,因为我们开始接触真实的CM3架构的芯片了---STM32,意法半导体官方推出了STM32的开发库,如果用库开发的话,可能主要工作就是读库函数,调用库函数,当然得理清库的组织结构。这里,我想不采用库的方式开发,因为如果当你换用其它半导体厂商提供的片子时就不一定有库了,于是,认真研读STM32的datasheet就显得比较重要和不可或缺,当然,库也有一定的好处,可以作为我们写代码的参考。这么说来,选择STM32作为CM3开发的入门,是很明智的选择。

       进入正题,开始读芯片手册,首先是STM32的系统结构,如下图:

      

      ● 五个驱动单元:

         ─ Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)

         ─ 通用DMA1和通用DMA2

         ─ 以太网DMA

      ● 三个被动单元

         ─ 内部SRAM

         ─ 内部闪存存储器

         ─ AHB到APB的桥(AHB2APBx),它连接所有的APB设备

         对着构架图,梳理梳理它们之间的连接关系,这有利于宏观上方向的把握,下一步要写的程序只是在这基础上的实现细节。

         1、ICode总线:该总线将CM3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。

         2、DCode总线:该总线将CM3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。

         3、系统总线:此总线连接CM3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。

         4、DMA总线:此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到 SRAM、闪存和外设的访问。

         5、总线矩阵:总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。在互联型产品中,总线矩阵包含5个驱动部件(CPU的DCode、系统总线、以太网DMA、DMA1总线和DMA2总线)和3个从部件(闪存存储器接口(FLITF)、SRAM和AHB2APB桥)。在其它产品中总线矩阵包含4个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口(FLITF)、SRAM、FSMC和AHB2APB桥)。 AHB外设通过总线矩阵与系统总线相连,允许DMA访问。

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

         注:在每一次复位以后,所有除SRAM和FLITF以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟。

         然后,是系统的存储器组织,这非常重要,因为很多基本的功能都是通过寄存器的配置来实现的,要访问和读写寄存器需要获得寄存器的物理地址,那么,我们就必须知道这些存储器的映象。程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内(详见上篇)。 数据字节以小端格式存放在存储器中。一个字里的最低地址字节被认为是该字的最低有效字节,而最高地址字节是最高有效字节。可访问的存储器空间被分成8个主要块,每个块为512MB。理解会用,之后,各存储器的细节再去查数据手册就可以了。

         以上,参考STM32的官方数据手册(主要是翻译~),介绍了STM32的大概,及数据手册的使用方法,下篇就要开始编程之旅了,努力中~

    

 

     

      

原创粉丝点击