OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4746|回复: 3

FSMC疑惑

[复制链接]

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
发表于 2013-6-8 15:35:42 | 显示全部楼层 |阅读模式

FSMC数据地址为RS确定

当RS=0写命令,当RS=1写数据

根据RS接线计算地址

16位模式   ADD=2的N次方×2  为什么是这样我也不清楚抄来的  可以的话解释一下

8位模式 ADD=(1<<N)

而战舰是接A10 算出来是0X800     地址是0X6C000800

//LCD地址结构体
typedef struct
{
 u16 LCD_REG;
 u16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A10作为数据命令区分线
//注意设置时STM32内部会右移一位对其! 111110=0X3E      
#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))
#define LCD             ((LCD_TypeDef *) LCD_BASE)

这个为什么是0X000007FE怎么算来的

虽然LCD_RAM地址是0X6C000800但是  LCD_REG地址是0x6c0007fe.是不是这个地址随便都行?只要在这个区域中 看到有的是0X6C000000


 

//在指定地址开始,连续写入n个字节.
//pBuffer:字节指针
//WriteAddr:要写入的地址
//n:要写入的字节数
void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 n)
{
 for(;n!=0;n--) 
 {             
  *(vu8*)(Bank1_SRAM3_ADDR+WriteAddr)=*pBuffer;  
  WriteAddr+=2;//这里需要加2,是因为STM32的FSMC地址右移一位对其.加2相当于加1.
  pBuffer++;
 }  
}    

WriteAddr+=2;//这里需要加2,是因为STM32的FSMC地址右移一位对其.加2相当于加1.怎么解释?

存储器是存放单字节,而SRAM是16位的。这个地址变换加二是不是这样解释比较好

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-8 15:59:11 | 显示全部楼层
ADD,没遇到过,不知何物.
关于7FE的由来,<stm32开发指南>的液晶显示部分已经说了,请看此部分教程.
就是因为地址线右移一位对齐,等于说最低位没用到,最小加10(0没用到),那么就是2了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
 楼主| 发表于 2013-6-8 16:43:27 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
16位数据 HADDR[0]不用 相当HADDR[25:1]对应FSMC[24:0]
那么FSMC的第十位A10 相当对应HADDR的第十一位
那么A10=1   HADDR地址是   
27  26  25  24 23  22  21  20 19 18 17 16 15 14 13  12 11 10 9  8  7  6  5  4  3  2  1  0
 1    0    0   0    0    0   0    0   0   0   0   0   0  0   0   0   1   0  0  0  0  0  0  0  0  0  0  0

=0X60000000+0X08000000+0X00000800=0X68000800
那么A10=0  HADDR地址应该是=0X68000000

LCD_REG地址是0x6c0007fe 这个也可以?
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-6-8 18:11:00 | 显示全部楼层
可以,反正你的GPIO又没初始化。不会输出。只要RS我记得好像是A[16]。不要变动就没事
一直努力就很好。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 22:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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