当前位置: 代码网 > 科技>人工智能 > 玩转STM32-F1系列单片机结构(详细-慢工出细活)

玩转STM32-F1系列单片机结构(详细-慢工出细活)

2024年08月01日 人工智能 我要评论
102—ARM Cortex-M3内核,USB基本型;(5)Flash容量:B— 128KB(中容量),4—16KB(小容量),6—32KB(小容量),8—64KB(中容量),C—256KB(大容量),D—384KB(大容量),E—512KB(大容量),F—768KB(大容量),G—1MKB(大容量)。(4)引脚数目:R—64引脚,F—20引脚,G—28引脚,K—32引脚,T—36引脚,H—40引脚,C—48引脚,U—63引脚,O—90引脚,V—100引脚,Q—132引脚,Z—144引脚,I—176引脚。

        上一章我们讲到,stm32f10x系列处理器基于arm cortex-m3内核,按性能分为四个不同系列:基本型stm32f101系列,usb基本型stm32f102系列,增强型stm32f103系列,互联网型st32f105,stm32f107系列,统称为stm32f10x。以下我们以stm32f103系列为主,详细讲述一下其结构特点。

一、stm32f103微控制器外部结构

        stm32f103系列芯片包含从36~144脚不同封装形式,不同的封装和丰富的资源使得stm32f103系列适用于多种场合,如医疗、pc外设,变频器等工业设备。 stm32系列命名遵循一定的规则,通过名字可以确定该引脚、封装、flash大小等信息。stm32命名规则如下所示,我们以市面上常见的stm32f103c8t6为主进行讲解:

        (1)芯片系列:stm32代表st品牌cortex-mx系列内核(arm)的32位mcu。

        (2)芯片类型:f-通用快闪,l-低电压(1.65~3.6v),w-无线系统芯片。

        (3)芯片子系列:103—arm cortex - m3内核,增强型;050—arm cortex -m0内核;101—arm cortex-m3内核,基本型;102—arm cortex-m3内核,usb基本型;105—arm cortex-m3内核,usb互联网型;107—arm cortex-m3内核,usb互联网型、以太网型;215/217—arm cortex-m3内核,加密模块;405/407—arm cortex-m4内核,不加密模块等。

        (4)引脚数目:r—64引脚,f—20引脚,g—28引脚,k—32引脚,t—36引脚,h—40引脚,c—48引脚,u—63引脚,o—90引脚,v—100引脚,q—132引脚,z—144引脚,i—176引脚。

        (5)flash容量:b— 128kb(中容量),4—16kb(小容量),6—32kb(小容量),8—64kb(中容量),c—256kb(大容量),d—384kb(大容量),e—512kb(大容量),f—768kb(大容量),g—1mkb(大容量)。

        (6)封装信息:t—lqfp,h—bga,u—vfqfpn,y—wlcsp。

        (7)工作温度范围:6—-40°~85°(工业级),7—-40°~105°(工业级)

        (8)可选项:此部分可以没有。

二、 stm32f103总线和存储器结构

2.1 总线结构

        根据指令和数据所用的存储空间与总线形式的不同,可以把处理器分为冯·诺伊曼结构和哈弗结构。诺依曼结构的微处理器 指令和数据共用一个存储空间一条总线,这样内核在取时不能进行数据读写,反之亦然。哈弗结构的微处理器指令和数据存储在不同的存储空间,采用独立的指令总线和数据总线,可以同时进行取地址和数据读写操作,从而提高了处理器的运行性能。arm处理器采用的是哈弗结构。

        stm32f103的总线系统由驱动单元、被动单元和总线矩阵三部分组成,stm32f103总线系统如下图所示:

        1. 驱动单元

        (1)指令总线(icode):将cortex-m3内核的指令总线与flash指令接口相连接。取指操作在该总线上进行。

        (2)数据总线(dcode):将cortex-m3内核的数据总线与flash数据接口相连接,用于常量加载和调试访问。

        (3)系统总线(system):将cortex-m3内核的系统总线连接到总线矩阵,总线矩阵协调着内核和dma间的访问。

        (4)直接内存访问总线(dma):将dma的ahb主机接口连接到总线矩阵,总线矩阵协调着cpu的dcode和dma到sram、闪存和外设的访问。

        2. 被动单元

        被动单元有3个,即内部sram、内部flash、ahb到apb桥。2个ahb/apb桥在ahb和2个apb总线之间提供完全同步的连接,apb1工作速度被限制在36mhz,apb2工作在全速72mhz。

        3. 总线矩阵

        dcode总线、system总线和通用dma总线通过总线矩阵与被动单元连接,总线矩阵分时轮换协调内核中数据总线、系统总线和dam总线之间的访问。为了允许dam访问,ahb外设通过总线矩阵连接到系统总线。

2.2 存储器结构和映射

        stm32f103的程序存储器、数据存储器、寄存器和io端口被组织到一个4gb的线性地址空间。数据自己以小段模式存放在存储器中。(小端格式:即低地址中存放的是数据的低字节,高地址中存放的是数据的高字节。)以stm32f103内存映射为例,其地址空间被分为8块,每块512mb。如下图所示:

2.3 位带

     在stm32中,外设寄存器和sram都被映射到一个位带区中,使用下列术语来表示位带存储的相关地址:

        (1)位带区:支持位带操作的地址区

        (2)位带别名:位带区中位的别名,对别名的访问最终映射到位带区中位的访问上。

        在位带区中,每一个比特(即每一位)都映射到别名地址区的一个字。该字只有最低位有效。当一个别名地址被访问时,会先把该地址变换成位带地址。对于读操作,读取位带地址中的一个字,再把需要的位右移到最低为并把最低为返回;对于写操作,把需要写的位左移至对应的位序号处,然后执行一个原子的“读-改-写”过程。

        支持位带操作的两个内存区的范围是:

        (1)0x20000000 ~ 0x200fffff(内部sram区中的最低1mb)。

        (2)0x40000000 ~ 0x400fffff(片内外设区中的最低1mb).。

        对于内部sram位带区的某个比特,记它所在字节地址为a,位序号为n(0≤n≤7),则该比特在别名区的地址为:

0x22000000 +((a-0x20000000)*8 +n)*4 = 0x2200000 +(a-0x20000000)*32+n*4

       对于片内外设位带区的某个比特,记它所在字节的地址为a,序号为n(0≤n≤7),则该比特在别名区的地址为:

0x42000000 +((a-0x40000000)*8 +n)*4 = 0x4200000 +(a-0x40000000)*32+n*4

式中:4表示的是4个字节,8表示一个字节有8位。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com