stm32的总线AMBA、AHB、APB

发布者:Yinyue1314最新更新时间:2018-06-07 来源: eefocus关键字:stm32  总线  AMBA  AHB  APB 手机看文章 扫描二维码
随时随地手机看文章

AMBA

AMBA(Advanced Microprocessor Bus Architecture)是ARM公司提出的一种开放性的SoC总线标准,现在已经广泛的应用于RISC的内核上了。 
AMBA定义了一种多总线系统(multilevel busing system),包括系统总线和等级稍低的外设总线。 
AMBA支持32位、64位、128位的数据总线,和32位的地址总线,同时支持byte和half-word设计。 
它定义了两种总线: AHB(Advanced High-performance Bus)先进的高性能总线,也叫做ASB(Advanced System Bus)。APB(Advanced peripheral Bus)先进的外设总线 
AHB和ASB其实是一个东西,是高速总线,主要负责嵌入式处理器、DMA控制器、Memory等等的接口。 
APB是低速总线,主要负责外设接口 
AHB和APB之间是通过Bridge(桥接器)链接的 

Bus Bridges

总所周知,一个系统中的各个模块之间相互通信是通过总线,总线的作用,就是把数据和地址从设备A搬运到设备B上, 
如果说设备A和设备B具有一致性(原文是under discussion,这里我不知道怎么翻译比较好,暂且翻译为一致性),那么设备A和设备B可以直接挂在同一个总线上,并直接解读总线上的数据。 
但是,如果设备A和设备B不具有一致性,那么设备A和设备B就必须挂在两条不同的总线上,这时候我们就需要一个“翻译”,把设备A上的总线上的数据和地址转换成设备B可以解析的格式,然后放到设备B的总线上,这个“翻译”就是“Bus Bridge”, 
下面这幅图就形象的说明了Bus Bridge在AHB和APB之间的作用。 \AHB链接的设备的数据传输速度是比APB设备传输的速度快很多的,也就是说,这里的这个Bus Beidge所起的作用就是“缓冲”

这里可以看到AHB主要是链接在了系统的内核以及存储管理上面的,APB则主要分布给我外设。 


下面这张图,更容易看出AHB和APB的作用: AHB链接的是系统总线、RAM等等 APB链接的是常用的外设:GPIO、UART等等 \




STM32上的总线结构


首先看一下F103系列的芯片的总线结构 
\


需要注意的是,这里有两个APB,它们链接的外设是不一样的,所以在STM32的库文件中会有关于APB1和APB2的定义: 


  1. /** @defgroup APB2_peripheral  

  2.   * @{ 

  3.   */  

  4.   

  5. #define RCC_APB2Periph_AFIO              ((uint32_t)0x00000001)  

  6. #define RCC_APB2Periph_GPIOA             ((uint32_t)0x00000004)  

  7. #define RCC_APB2Periph_GPIOB             ((uint32_t)0x00000008)  

  8. #define RCC_APB2Periph_GPIOC             ((uint32_t)0x00000010)  

  9. #define RCC_APB2Periph_GPIOD             ((uint32_t)0x00000020)  

  10. #define RCC_APB2Periph_GPIOE             ((uint32_t)0x00000040)  

  11. #define RCC_APB2Periph_GPIOF             ((uint32_t)0x00000080)  

  12. #define RCC_APB2Periph_GPIOG             ((uint32_t)0x00000100)  

  13. #define RCC_APB2Periph_ADC1              ((uint32_t)0x00000200)  

  14. #define RCC_APB2Periph_ADC2              ((uint32_t)0x00000400)  

  15. #define RCC_APB2Periph_TIM1              ((uint32_t)0x00000800)  

  16. #define RCC_APB2Periph_SPI1              ((uint32_t)0x00001000)  

  17. #define RCC_APB2Periph_TIM8              ((uint32_t)0x00002000)  

  18. #define RCC_APB2Periph_USART1            ((uint32_t)0x00004000)  

  19. #define RCC_APB2Periph_ADC3              ((uint32_t)0x00008000)  

  20. #define RCC_APB2Periph_TIM15             ((uint32_t)0x00010000)  

  21. #define RCC_APB2Periph_TIM16             ((uint32_t)0x00020000)  

  22. #define RCC_APB2Periph_TIM17             ((uint32_t)0x00040000)  

  23. #define RCC_APB2Periph_TIM9              ((uint32_t)0x00080000)  

  24. #define RCC_APB2Periph_TIM10             ((uint32_t)0x00100000)  

  25. #define RCC_APB2Periph_TIM11             ((uint32_t)0x00200000)  

  26.   

  27. #define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))  

  28. /** 

  29.   * @} 

  30.   */   

  31.   

  32. /** @defgroup APB1_peripheral  

  33.   * @{ 

  34.   */  

  35.   

  36. #define RCC_APB1Periph_TIM2              ((uint32_t)0x00000001)  

  37. #define RCC_APB1Periph_TIM3              ((uint32_t)0x00000002)  

  38. #define RCC_APB1Periph_TIM4              ((uint32_t)0x00000004)  

  39. #define RCC_APB1Periph_TIM5              ((uint32_t)0x00000008)  

  40. #define RCC_APB1Periph_TIM6              ((uint32_t)0x00000010)  

  41. #define RCC_APB1Periph_TIM7              ((uint32_t)0x00000020)  

  42. #define RCC_APB1Periph_TIM12             ((uint32_t)0x00000040)  

  43. #define RCC_APB1Periph_TIM13             ((uint32_t)0x00000080)  

  44. #define RCC_APB1Periph_TIM14             ((uint32_t)0x00000100)  

  45. #define RCC_APB1Periph_WWDG              ((uint32_t)0x00000800)  

  46. #define RCC_APB1Periph_SPI2              ((uint32_t)0x00004000)  

  47. #define RCC_APB1Periph_SPI3              ((uint32_t)0x00008000)  

  48. #define RCC_APB1Periph_USART2            ((uint32_t)0x00020000)  

  49. #define RCC_APB1Periph_USART3            ((uint32_t)0x00040000)  

  50. #define RCC_APB1Periph_UART4             ((uint32_t)0x00080000)  

  51. #define RCC_APB1Periph_UART5             ((uint32_t)0x00100000)  

  52. #define RCC_APB1Periph_I2C1              ((uint32_t)0x00200000)  

  53. #define RCC_APB1Periph_I2C2              ((uint32_t)0x00400000)  

  54. #define RCC_APB1Periph_USB               ((uint32_t)0x00800000)  

  55. #define RCC_APB1Periph_CAN1              ((uint32_t)0x02000000)  

  56. #define RCC_APB1Periph_CAN2              ((uint32_t)0x04000000)  

  57. #define RCC_APB1Periph_BKP               ((uint32_t)0x08000000)  

  58. #define RCC_APB1Periph_PWR               ((uint32_t)0x10000000)  

  59. #define RCC_APB1Periph_DAC               ((uint32_t)0x20000000)  

  60. #define RCC_APB1Periph_CEC               ((uint32_t)0x40000000)  

  61.    

  62. #define IS_RCC_APB1_PERIPH(PERIPH) ((((PERIPH) & 0x81013600) == 0x00) && ((PERIPH) != 0x00))  

  63.   

  64. /** 

  65.   * @} 

  66.   */  




APB的速率见下面说明: \

APB1限制在了36MHz,APB2也可以达到全速72MHz 




下面是F105和F107的总线构架: 
\







STM32上APB1和APB2的地址映射

\


关键字:stm32  总线  AMBA  AHB  APB 引用地址:stm32的总线AMBA、AHB、APB

上一篇:STM32F的几种串行通信总线总结
下一篇:stm32的can总线理解及应用

推荐阅读最新更新时间:2024-03-16 16:05

PROFIBUS总线实现工业网络
前言   PROFIBUS现场总线可实现现场设备层到车间级监控的分散式数字控制和现场通信网络,为实现工厂综合自动化和现场设备智能化提供了可行的解决方案。   网络是企业综合自动化的基础,在整个企业的网络体系结构中,现场总线处于基础地位,因此构建完整的现场总线控制网络模型具有重要的意义。这种模型延伸到控 制领域的最高层,即管理决策层,因此要求控制网络和信息网络紧密结合,保证从底层现场设备到顶层生产管理之间,正确的数据传输和数据转发。OPC规范以 OLE/DCOM为技术基础,而OLE/DCOM支持TCP/IP等网络协议,因此可以将各个子系统从物理上分开,分布于网络的不同节点上。OPC标准保 证了自动化系统之间及商业系统之间可以经
[工业控制]
PROFIBUS<font color='red'>总线</font>实现工业网络
51单片机与ARINC429航空总线接口设计
1 DEI1016的主要功能 DEI1016是Device Engineering Incorporated 生产的一种可支持ARINC429航空总线协议的串行接收、发送器件。该器件的主要功能如下: ●串行数据字长为32或25位; ●串行数据速率为100kbps或12.5kbps; ●具有独立的收、发电路; ●两个独立的接收器可直接与ARINC429总线接口; ●具有串/并接收数据转换,和并/串发送数据转换功能; ●对接收的数据可进行奇偶状态校验;并可对发送数据奇偶状态进行设置; ●可自动产生字与字之间的间隔; ●采用单一+5V供电。 2 DEI1016的工作原理 DEI1016的引脚功能及特点以前已有介
[单片机]
51单片机与ARINC429航空<font color='red'>总线</font>接口设计
基于STM32芯片和TFT-LCD的便携式心电图仪设计
便携式心电图设备的出现使心电信号能够在更多场合进行采集,它既可以实现可移动化,又可以实时的对心电信号进行分析。通过内置大容量存储器件能够对患者进行长时间的实时监护,并记录患者的心电数据,通过USB接口与PC机进行数据传输,以提交到专业医疗机构做进一步分析和诊断。 1、系统整体设计概述 系统原理框图可以用图1表示。心电信号由电极获取,送入心电采集电路,经前置放大、主放大、高低通滤波、电平抬升后,得到符合要求的心电信号,并送入到STM32的ADC进行AD转换。为了更好地抑制干扰信号,在电路中还引入了右腿驱动电路。系统控制芯片采用STM32,TFT-LCD的触摸功能加上少量按键可以建立良好的人机交互环境,可以通过LCD实时显示和回放
[单片机]
基于<font color='red'>STM32</font>芯片和TFT-LCD的便携式心电图仪设计
STM32入门学习笔记之外置FLASH读写实验
15.1 FLASH Flash,全名叫做Flash EEPROM Memory,即平时所说的“闪存”,它结合了ROM和RAM的长处,不仅可以反复擦除,还可以快速读取数据,STM32运行的程序其实就是存放在Flash当中,但是由于STM32的Flash一般1M左右,只能存储程序大小的数据,所以往往需要外扩Flash来存储数据,比如LCD界面当中的汉字字库,以及文件系统中读取的文件内容。 但是一般Flash的擦除次数有限制,STM32F1系列最新的文档指出,片内的FLASH擦写次数大约在1W次左右,所以一般Flash用于擦除次数不多,但是数据量很大的场合。 这个Flash读写实验我们用到的芯片是W25Q128,这是一款采用S
[单片机]
<font color='red'>STM32</font>入门学习笔记之外置FLASH读写实验
STM32单片机寄存器的位置是如何定义的
一直都是用STM32做项目中的主控芯片,在编程的时候,之前一直忽视了一个问题,那就是寄存器的位置是如何定义的,为什么用一个USART1-》CR操作就能够给这个CR寄存器赋值?其实这是一个比较底层的问题,不懂这方面的知识也并不影响使用STM32,因为底层的定义工作,厂家一般都会做好,但是多了解一点原理性的东西,对自己还是很有帮助的。 这里我就以STM32F407的USART寄存器为例,介绍一下ST厂家是如何做寄存器定义的。 首先在stm32f4xx.h中 typedefstruct { __IOuint16_tSR;/*! uint16_tRESERVED0;/*! __IOuint16_tDR;/*! uint16_tRESE
[单片机]
STM32引脚模式GPIOMode_TypeDef
① 浮空输入_IN_FLOATING //串口输入 ② 带上拉输入_IPU ③ 带下拉输入_IPD ④ 模拟输入_AIN ⑤ 开漏输出_OUT_OD ⑥ 推挽输出_OUT_PP //置位 ⑦ 复用功能的推挽输出_AF_PP //串口输出 ⑧ 复用功能的开漏输出_AF_OD 推挽输出与开漏输出的区别 推挽输出:可以输出高,低电平,连接数字器件; 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止
[单片机]
STM32外部中断配置步骤
1.使能SYSCFG时钟 系统配置时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE) 2.初始化IO口为输入 GPIO_INIT 3.设置IO口与中断线之间的关系 所谓IO口与中短线 f4中有16个IO中断线,PXn 连接的是 EXITn的中断线 比如现在我要想把 PF9的中断线进行连接,只可以连接EXIT9这个中断 使用函数SYSYCFG_EXTLineConfig() 4.初始化线上中断,设置触发条件(上升沿还是下降沿,是事件还是中断,关于事件和模中断直接的差别请参考我转载的另一篇博客,事件是中断的一个起源) EXTI_Init() 5.配置中断分组,并且使能中断 N
[单片机]
STM32电源管理系统浅谈
电源对电子设备的重要性不言而喻,它是保证系统稳定运行的基础,而保证系统能稳定运行后,又有低功耗的要求。在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从控制功耗入手,提高设备的续行时间。 STM32的电源管理系统主要分为: 1、备份域 2、调压器供电电路 3、ADC电源电路 备份域电路 STM32的备份域包括LSE振荡器、RTC、备份寄存器及备份SRAM这些器件,这部分的电路可以通过STM32的VBAT引脚获取供电电源,在实际应用中一般会使用3V的钮扣电
[单片机]
<font color='red'>STM32</font>电源管理系统浅谈
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved