硬汉嵌入式论坛

 找回密码
 立即注册
查看: 10986|回复: 9
收起左侧

[客户分享] STM32F407的FSMC的的地址计算方法,以TFT为例

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2015-9-29 23:41:07 | 显示全部楼层 |阅读模式
TFT的地址由FSMC_NE4 + A20 + A21 + A18共同决定
原理图:
1.png

=========================
FSMC_NE片选地址分配:
1.png

5.png
========================================================
然后我们再计算译码器的地址,注意,这里地址的计算都是按照FSMC的16bit访问模式计算的,
FSMC的16bit访问模式和8bit访问模式的区别就在这里:
========================================================
4.png

===================================================================
16bit模式下,我们计算A20和A21的时候,实际上需要按HADDR21和HADDR22计算
如果来算NE4 + HADDR21 + HADDR22的四种组合地址就是如下:
4.png
=========================================================
A18用于TFT的RS引脚了,16bit模式下,我们计算A18的时候,实际上需要按HADDR19计算
#define RA8875_BASE        ((uint32_t)(0x6C000000 | 0x00000000))
#define RA8875_REG        *(__IO uint16_t *)(RA8875_BASE +  (1 << (18 + 1)))    /* FSMC 16位总线模式下,FSMC_A18口线对应物理地址A19 */
define RA8875_RAM        *(__IO uint16_t *)(RA8875_BASE)
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2015-9-30 08:11:22 | 显示全部楼层
[s:152] [s:152] [s:152]
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

610

主题

3052

回帖

4902

积分

至尊会员

积分
4902
发表于 2015-9-30 11:52:38 | 显示全部楼层
[s:141] [s:141] [s:141] [s:151]
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2016-7-24 17:46:12 | 显示全部楼层
[s:151] [s:141] [s:141] [s:151]
回复

使用道具 举报

4

主题

41

回帖

53

积分

初级会员

积分
53
发表于 2017-4-14 15:35:19 | 显示全部楼层
mark 一下啊
回复

使用道具 举报

0

主题

2

回帖

0

积分

新手上路

积分
0
发表于 2017-7-29 16:16:08 | 显示全部楼层
好厉害[s:151] [s:151] [s:151]
回复

使用道具 举报

73

主题

1193

回帖

1412

积分

至尊会员

积分
1412
发表于 2020-2-22 13:13:09 | 显示全部楼层
谢谢硬汉哥,最近正好弄sram fsmc
回复

使用道具 举报

0

主题

31

回帖

31

积分

新手上路

积分
31
发表于 2021-2-20 20:14:01 | 显示全部楼层
这个真牛
回复

使用道具 举报

5

主题

81

回帖

96

积分

初级会员

积分
96
发表于 2023-7-22 15:38:01 | 显示全部楼层
你好,能否出一个如何计算时序参数的帖子? DM9000里面的初始化时序是怎么算出来的?
   /* FMC使用的HCLK,主频168MHz,1个FMC时钟周期就是5.95ns */
        SRAM_Timing.AddressSetupTime       = 3;  /* 3*5.95ns=17.85ns,地址建立时间,范围0 -15个FMC时钟周期个数 */
        SRAM_Timing.AddressHoldTime        = 0;  /* 地址保持时间,配置为模式A时,用不到此参数 范围1 -15个时钟周期个数 */
        SRAM_Timing.DataSetupTime          = 6;  /* 6*5.95ns=35.7ns,数据保持时间,范围1 -255个时钟周期个数 */
        SRAM_Timing.BusTurnAroundDuration  = 8;  /* 两次连续数据之间的时间间隔,范围1 -15个时钟周期个数 */
        SRAM_Timing.CLKDivision            = 0;  /* 此配置用不到这个参数 */
        SRAM_Timing.DataLatency            = 0;  /* 此配置用不到这个参数 */
        SRAM_Timing.AccessMode             = FSMC_ACCESS_MODE_A; /* 配置为模式A */
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
 楼主| 发表于 2023-7-23 00:26:10 | 显示全部楼层
流型 发表于 2023-7-22 15:38
你好,能否出一个如何计算时序参数的帖子? DM9000里面的初始化时序是怎么算出来的?
   /* FMC使用的HCLK ...

DM9000手册末尾有个时序表的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 12:18 , Processed in 0.202838 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表