5969|2

4008

帖子

0

TA的资源

版主

2018新版cube之stm32f4 sd卡位图dma方式直写FSMC LCD(2) [复制链接]

本帖最后由 huo_hu 于 2018-3-18 19:03 编辑

此内容由EEWORLD论坛网友huo_hu原创,如需转载或用于商业用途需征得作者同意并注明出处


这部分介绍fsmc驱动的lcd,我这个lcd的驱动芯片是ili9806,其他的ili9XX也都是可以的,硬件连接图
截屏2-1.jpg
上面的是控制信号接线,另外FSMC的0~15接lcd的数据线0~15。
硬件上有几点说明一下,这个ili9XXX芯片本身是可以设置总线宽度的,有的厂家制作的时候把这个设置固定了,有的厂家做的屏有飞线选择,要对着说明看一下,如果用8线也是可以的数据分两次打出去。还有一个是屏的背光电路,其实就是个升压电路,可以配合pwm来调整背光亮度,屏上没有要自己做这部分。
然后cube里配置成使用fsmc总线lcd接口
截屏2-2.jpg



这里面FSMC的控制管脚和数据管脚都是固定的,只有lcd register 的A18可以自己选择一下,用哪个都可以程序地址上有点差别
#define A16BIT   18
#define LCD_DATA_ADDR  (0x60000000+(uint32_t)(1<<(A16BIT+1)))
#define LCD_REGS_ADDR  (0x60000000)
液晶以这条信号线来区分是指令地址或者数据地址。我这里用的是16位数据宽度。
保存更新一下,cube已经帮你把fsmc配置好了,下一步就开始写液晶初始化程序了。这个初始化最开始的部分是对各个寄存器进行配置,因为各个厂家的寄存器值可能不一样,这部分只能找厂家要。类似的程序就是这样
#define A16BIT   18
#define LCD_DATA_ADDR  (0x60000000+(uint32_t)(1<<(A16BIT+1)))
#define LCD_REGS_ADDR  (0x60000000)

#define LCD_WR_REG(ind) { \
*(__IO uint16_t*)(LCD_REGS_ADDR)=ind; \
}

#define LCD_WR_DAT(dat) { \
*(__IO uint16_t *)(LCD_DATA_ADDR)=dat; \
}

#define LCD_RE_DAT (*(__IO uint16_t *)(LCD_DATA_ADDR))

#define write_command   LCD_WR_REG
#define write_data  LCD_WR_DAT
#define delay   HAL_Delay

void ILI9806_800_480_Init(void) {
HAL_Delay(100);
// EXTC Command Set enable register
write_command(0xFF);
write_data(0xFF);  
write_data(0x98);
write_data(0x06);

write_command(0xBA); // SPI Interface Setting
write_data(0x60);

write_command(0xBC); // GIP 1
write_data(0x01);
write_data(0x12);
。。。。。。。 这中间好长好长,我省略了

write_command(0x3A);
write_data(0x55); //55-16BIT,66-18BIT,77-24BIT

write_command(0x11);
delay(120);
write_command(0x29);
delay(25);

编译然后下载,(记得打开背光,不然什么也看不到),这个函数运行到最后部分就是0x29指令是开显示,这个时候如果看到屏幕上有好多花点,那恭喜你成功一大半了,至少硬件没问题了,那些花点是随机的内存数据。剩下的再改程序就行了。那些command的含义在手册里都有,指令很多但是绝大部分都用不到。
ILI9806G-Data Sheet 芯片手册.pdf (6.54 MB, 下载次数: 5)
此帖出自单片机论坛

最新回复

  详情 回复 发表于 2018-3-7 09:29

回复
举报

1903

帖子

0

TA的资源

版主

点个赞
此帖出自单片机论坛

回复

297

帖子

0

TA的资源

一粒金砂(中级)

此帖出自单片机论坛

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表