OpenEdv-开源电子网

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

FSMC对应地址线A0-A24【A1-A25】 是如何定义的 原子哥战舰历程 用的是A10 我想那个结构体 以及LCD_BASE不太理解

[复制链接]

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
发表于 2013-11-26 21:38:51 | 显示全部楼层 |阅读模式

//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)
////////////////////////////////////////////////////////////////////////////////// 
问题1:每一根地址线 对应的空间是多大

问题2:数据地址和寄存器地址如何定义的

问题3:如果换成 NE1  A16 则是如何定义LCD_BASE 呢


 

原子哥 何在啊 求指导

闷鱼闷闷不乐吃焖鱼
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
 楼主| 发表于 2013-11-26 22:23:52 | 显示全部楼层
条件:CS->BANK1/NE1  RS->A16  16位数据模式  

NE1 0x600000000   
NE2 0x640000000   
NE3 0x680000000   
NE4 0x6C0000000  

根据RS接的地址线计算地址:  
16位模式:add=2^16*2=20000(h)  

定义如下:  

typedef struct    
{    
  u16 LCD_REG;    
  u16 LCD_RAM;    
} LCD_TypeDef;    

#define LCD_BASE    ((uint32_t)(0x6001FFFE))    
#define LCD         ((LCD_TypeDef *) LCD_BASE)
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
 楼主| 发表于 2013-11-26 22:30:14 | 显示全部楼层
将代码中的相应FSMC_Bank1->BTCR[6],FSMC_Bank1->BTCR[7]改好,BWTR没有用到
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-26 23:19:20 | 显示全部楼层
你这不是改的挺好么
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
 楼主| 发表于 2013-11-27 09:50:24 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
LCD_BASE 怎么不是 0x60020000
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
 楼主| 发表于 2013-11-27 10:02:10 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
自问自答  是后面加上去的 心里没底
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-11-27 10:08:46 | 显示全部楼层
回复【6楼】闷鱼:
---------------------------------
以前有人回答过这个问题,原子这样写结构 是为了方便 ,但 这个结构 也只能是用在RS接 A10 上,换其他的就行不通了。

其实 主要就是实现 2个 目的 ,//rs =0 写地址,//rs =1 写数据

ypedef struct     
{     
  u16 LCD_REG;     
  u16 LCD_RAM;     
} LCD_TypeDef;     

#define LCD_BASE    ((uint32_t)(0x6001FFFE))     
#define LCD         ((LCD_TypeDef *) LCD_BASE   这结构  刚好能实现 相应 RS位置 1,0功能。但好像是不能通用的

就比如 你现在 RS接在 A16 上就 不行了,所以 正常使用还是 使用这种
#define  LCD_REG (*(__IO u16 *)(0x60000000)) //rs =0 写地址
#define  LCD_RAM (*(__IO u16 *)(0x60020000)) //rs =1 写数据
1-1
回复 支持 反对

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
 楼主| 发表于 2013-11-27 10:28:56 | 显示全部楼层
回复【7楼】mygod:
---------------------------------对了   我之前也有点纠结了 这个问题 
  经你这么一说 稍微懂了一点点了  
  其实问题主要在 一开始我没有理解这些地址线 如何与 NOR存储块对应的
  所以我认为修改 LCD_BASE的值就可以了 
  还请多多指教啊
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
 楼主| 发表于 2013-11-27 10:32:59 | 显示全部楼层
回复【7楼】mygod:
---------------------------------
A10作为数据命令区分线 这个从哪里文件可以看到啊
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-27 10:42:13 | 显示全部楼层
回复【7楼】mygod:
---------------------------------
恩,其他也可以
只是你地址要变一下了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-11-27 11:10:26 | 显示全部楼层
回复【9楼】闷鱼:
---------------------------------
在论坛上搜索下,有详细分析的,还有刚原子说的,如果用这结构体RS 接A16 上 改地址也是不行的,以前测试过。
1-1
回复 支持 反对

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
 楼主| 发表于 2013-11-27 11:42:16 | 显示全部楼层
回复【11楼】mygod:
---------------------------------原子的意思是  用这种结构体 只要 地址变一下还是可以通用的么 ??
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
 楼主| 发表于 2013-11-27 11:46:46 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
原子哥 我那个 基址 用的 A16 片选NE1 用  0x6001FFFE  这个地址正确么 使用战舰版本的结构体
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-27 23:45:09 | 显示全部楼层
回复【13楼】闷鱼:
---------------------------------
是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-12-12
在线时间
14 小时
发表于 2018-12-21 14:58:05 | 显示全部楼层
大佬们,我屏幕用的是9341,RS接的是A16,然后按照7楼大哥说的那样设置了地址,但是读id读到的却是0303,该怎么解决啊
[mw_shl_code=c,true]#define  LCD_REG   (*(__IO u16 *)(0X6C000000))   // 写地址
#define  LCD_RAM   (*(__IO u16 *)(0X6C020000))          //写数据
[/mw_shl_code]
回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2018-4-4
在线时间
40 小时
发表于 2019-7-2 10:49:33 | 显示全部楼层
闷鱼 发表于 2013-11-26 22:23
条件:CS->BANK1/NE1  RS->A16  16位数据模式  

NE1 0x600000000 ...

20000(H)怎样换成的1FFFE
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 17:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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