打印

GD32板卡入门——详解CPU处理器

[复制链接]
1980|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GD32F207  的地址映射
Cortex-M3 有 32 根地址线,寻址空间大小为 4GB。ARM 公司设计时,预先把这 4GB 的
寻址空间大致地分配好了。它把地址从 0x4000 0000 至 0x5FFF FFFF( 512MB )的地址分配给片
上外设。通过把片上外设的寄存器映射到这个地址区,就可以简单地以访问内存的方式,访
问这些外设的寄存器,从而控制外设的工作。

沙发
hanzhen654|  楼主 | 2018-7-28 21:19 | 只看该作者
M3 存储器映射见图 所示:

使用特权

评论回复
板凳
hanzhen654|  楼主 | 2018-7-28 21:20 | 只看该作者
点播这点跟stm32类似,因为ST也是基于Cortex的内核,F103也是M3的内核,这里我们就当是在复习。

使用特权

评论回复
地板
hanzhen654|  楼主 | 2018-7-28 21:25 | 只看该作者
Cortex-M3 分配给片上外设的地址范围是 0x4000 0000 至 0x5FFF FFFF,共 512MB 空间,0x40000000 称为外设基地址。这个基地址很重要,所有的芯片底层映射都是基地址加偏移。

使用特权

评论回复
5
hanzhen654|  楼主 | 2018-7-28 21:30 | 只看该作者
ARM®Cortex ™ -M3 处理器采用哈佛结构,可以使用相互独立的总线来读取指令和加载/存储
数据。指令代码和数据都位于相同的存储器地址空间,但在不同的地址范围。程序存储器,数据
存储器,寄存器和 I / O 端口都在同一个线性的 4 GB 的地址空间之内。这是 Cortex ™- M3 的最大地址范围,因为它的地址总线宽度是 32 位。此外,为了降低不同客户在相同应用时的软件复杂
度,存储映射是按 Cortex ™ -M3 处理器提供的规则预先定义的。ARM ®Cortex™-M3 的自带的系统
外设也占用了一些地址空间。

使用特权

评论回复
6
hanzhen654|  楼主 | 2018-7-28 22:04 | 只看该作者
下图显示了 GD32F207系列设备的存储映射,包括指令代码,SRAM ,
外设和其他预先定义的区域。为了简化了外设的地址译码,每个外设分配的地址空间都是 1KB 。
APB1 外设都位于从 0x4000 0000 到 0x4000 FFFF 的地址空间,而 APB2 外设都位于从 0x4001 0000
到0x40017FFF的地址区域。从0x4002 0000到0x4002 FFFF的地址区域被AHB1外围设备所使用,
从 0x48000000 到 0x4800FFFF 的地址区域被 AHB2 外围设备所使用。


使用特权

评论回复
7
hanzhen654|  楼主 | 2018-7-28 22:05 | 只看该作者
基于 AMBA 3.0 AHB-LITE 的多层总线互联矩阵
使得系统中的多个主机和从机之间的并行通信成为可能。在总线矩阵有四个主机,包括 ICODE 总
线,DCode 总线,Cortex™-M3 内核系统总线和 DMA 的系统总线。ICODE 总线是指令总线,用于
将代码区域(为 0x00000000〜0x1FFF 的 FFFF)的向量取到 Cortex™-M3 内核。DCode 总线用于数据
加载和存储,也用于代码区的调试访问。系统总线用于系统区域的访问,包括取指令,数据加载
和存储,以及调试访问。系统区域包括内部 SRAM 区域和外设区域。总线矩阵包含 5 个从机,
包括闪存控制器的 ICODE 和 DCode 接口,内部 SRAM,AHB1 和 AHB2。AHB2 与 GPIO 端口相连。
AHB1 与 AHB 外设相连。诸多 AHB 外设之中有两个 AHB 到 APB 的桥提供了 AHB1 和两条 APB 总
线之间的完全同步连接。这两条 APB 总线连接所有的 APB 外设。两条 APB 总线都能够按最高频
率 72 MHz 工作。


使用特权

评论回复
8
hanzhen654|  楼主 | 2018-7-28 22:07 | 只看该作者
GD32F207 互联型产品系统框图


使用特权

评论回复
9
hanzhen654|  楼主 | 2018-7-28 22:09 | 只看该作者
GD32F207 芯片设计了一个复杂而功能完善的时钟系统,由于图太大不好贴出来,主要有四种时钟源:

使用特权

评论回复
10
hanzhen654|  楼主 | 2018-7-28 22:11 | 只看该作者
从时钟频率来说,时钟源分为高速时钟和低速时钟,高速时钟是提供给芯片主体的主时,钟,而低速时钟只是提供给芯片中的 RTC(实时时钟)及独立看门狗使用。从芯片角度来说,时钟源分为内部时钟与外部时钟源,内部时钟是在芯片内部 RC 振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号。
所以,GD32F207 有以下 4 个时钟源:
(1) 高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为 4~16MHz,我们一般采用 8MHz 的晶振。
(2) 高速内部时钟(HSI):由内部 RC 振荡器产生,频率为 8MHz,但不如外部时钟稳定。
(3) 低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用 32.768KHz。
(4) 低速内部时钟(LSI):由内部 RC 振荡器产生,也主要提供给实时时钟模块,频率大约为 40KHz。

使用特权

评论回复
11
hanzhen654|  楼主 | 2018-7-28 22:17 | 只看该作者
精炼的总结:
从时钟树可以看到,经过一系列的倍频、分频后得到了几个与我们开发密切相关的时钟。
(1) SYSCLK:系统时钟,GD32F207 大部分器件的时钟来源。主要由 AHB 预分频器分配到各个部件。
(2) HCLK:由 AHB 预分频器直接输出得到,它是高速总线 AHB 的时钟信号,提供给存储器,DMA 及 cortex 内核,是 cortex 内核运行的时钟,cpu 主频就是这个信号,它的大
小与 GD32F207 运算速度,数据存取速度密切相关。
(3) FCLK:同样由 AHB 预分频器输出得到,它不来自时钟 HCLK,因此在 HCLK 时钟停止时 FCLK 也继续运行。它可以保证在处理器休眠时,也能够采样和到中断和跟踪休
眠事件,它与 HCLK 互相同步。
(4) PCLK1:外设时钟,由 APB1 预分频器输出得到,最大频率为 36MHz,提供给挂载在APB1 总线上的外设。
(5) PCLK2:外设时钟,由 APB2 预分频器输出得到,最大频率可为 72MHz,提供给挂载在 APB2 总线上的外设。

使用特权

评论回复
12
ylslib| | 2018-7-30 14:17 | 只看该作者
支持下,谢谢分享!

使用特权

评论回复
13
keaibukelian| | 2018-8-6 12:50 | 只看该作者
很详细 谢谢楼主啦

使用特权

评论回复
14
paotangsan| | 2018-8-8 12:55 | 只看该作者
以前很少关心过这个

使用特权

评论回复
15
renzheshengui| | 2018-8-8 12:58 | 只看该作者
是不是用汇编的时候需要详细了解这个啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

1766

帖子

2

粉丝