打印

stm32f10x用FSMC方式驱动LCD管脚复用问题

[复制链接]
5872|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sundetao|  楼主 | 2009-11-19 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
驱动液晶用到8位数据,和1位地址线,请问剩余的数据线和地址线还可以用作其他的IO口吗?如可以如何设置?
沙发
sundetao|  楼主 | 2009-11-20 09:32 | 只看该作者
有人帮忙回答一下吗 ?

使用特权

评论回复
板凳
香水城| | 2009-11-20 10:08 | 只看该作者
不用的数据线和地址线配置为普通I/O口即可。

使用特权

评论回复
地板
sundetao|  楼主 | 2009-11-20 13:38 | 只看该作者
3# 香水城

根据文档Interfacing an LCD with the FSMC of a High-density STM32F10xxx device offered in a 100-pin package将A23与液晶RS相连,LCD_BASE地址应为0x60000000|0x007fffff吗?读写液晶时其他地址线会随读写的地址变化而变化吗?比如说RS由0变为1时,设为普通口的A0-A22会变化吗?

使用特权

评论回复
5
香水城| | 2009-11-20 14:04 | 只看该作者
所有地址线的变化都是你的程序控制的。

使用特权

评论回复
6
sundetao|  楼主 | 2009-11-20 14:40 | 只看该作者
用端口输出值进行与和或计算后再作为地址进行数据读写吗?

使用特权

评论回复
7
香水城| | 2009-11-20 14:45 | 只看该作者
不明白6楼的意思。

使用特权

评论回复
8
sundetao|  楼主 | 2009-11-20 15:13 | 只看该作者
用3楼所说的接法,当需要向LCD模块读写显示数据或控制命令时,要控制A23(LCD的RS)高或者低,实现方法是向一个25位地址中A23位置为1的地址如0x800000或者是A23位置为0的地址如0x7fffff写需要的数据数据。当写地址0x800000时,位A0-A22输出为0,写地址0x7fffff时位A0-A22为1.是这样吗?如果是,有没有方法控制A0-A22保持原输出,而不随地址的变化而变化吗?

使用特权

评论回复
9
aozima| | 2009-11-20 15:31 | 只看该作者
当写地址0x800000时,位A0-A22输出为0,写地址0x7fffff时位A0-A22为1.是这样吗?

是的.
如果是,有没有方法控制A0-A22保持原输出,而不随地址的变化而变化吗?

1.把A0-A22的IO配置成GPIO,这样,IO不随你的地址而变化(没测试过)
2.既然只要用一个地址线即可,你用A23做什么?  我都是用A2,A3的,(用A1也可以的,当时没搞明白STM32的16位下地址线是如何输出的,为保险就是用了A2)

使用特权

评论回复
10
sundetao|  楼主 | 2009-11-20 15:35 | 只看该作者
呵呵,看了文档Interfacing an LCD with the FSMC of a High-density STM32F10xxx device offered in a 100-pin package,说Ax where x can be 16 to 23,好像只能是16-23.就选了A23。

使用特权

评论回复
11
sundetao|  楼主 | 2009-11-20 15:41 | 只看该作者
另外,是用端口控制位CNF1控制吗?

使用特权

评论回复
12
香水城| | 2009-11-20 16:20 | 只看该作者
我在3楼不是已经说了吗,“不用的数据线和地址线配置为普通I/O口即可”,这样这些引脚就不再受FSMC控制,而是作为普通I/O脚,通过控制I/O脚的方式操作。

使用特权

评论回复
13
sundetao|  楼主 | 2009-11-20 16:22 | 只看该作者
看了看STM的例程好像是这样控制的。目前先这样理解,将控制LCD用到的端口通过IO口配置寄存器配置为复用功能(AFIO),将没有用到的数据端口和地址端口配置为通用IO功能(GPIO)。先结贴,去试验,如不成再发贴。

使用特权

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

本版积分规则

2

主题

15

帖子

0

粉丝