OpenEdv-开源电子网

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

LCD裸机实验屏幕不亮问题帮帮忙

[复制链接]

26

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
359
金钱
359
注册时间
2019-6-11
在线时间
52 小时
发表于 2020-2-19 17:09:56 | 显示全部楼层 |阅读模式
1金钱
大佬们想请教一下,问题之前:一般在改变寄存器的相应位值时候,一般会在不改动别的位情况下去改变对应位的值。
那么在lcd实验中复位和时钟的配置时候,直接用赋值的方式这种方式也是可以能理解,但是使用我上面说的不改变其他位的方式,屏幕就不亮,使用的是lcd的实验的源代码15_lcd如图改的地方。
1.jpg
这个是时钟初始化,用上|=方式屏幕就不亮
2.jpg
这是复位对应寄存器是31位,必须得赋值方式屏幕才会亮,位运算就不亮。

以上两种任何一种用位运算屏幕都不会亮,只有在都是赋值方式才会亮。
请问大佬门这是什么情况。我上面说的要改寄存器的值的想法难道不对吗?

最佳答案

查看完整内容[请看2#楼]

你好,找到其中原因了,是取消强制复位时出现了问题。可以看IMX6ULL的参考手册,LCDIF->CTRL 寄存器bit[30]的复位值是1,取消强制复位时,需要清0,否则会被关闭该block的时钟,如图所示: 取消强制复位的寄存器可以这样设置:LCDIF->CTRL &= ~((1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

91

帖子

1

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2016-12-8
在线时间
398 小时
发表于 2020-2-19 17:09:57 | 显示全部楼层
本帖最后由 NANADGUT 于 2020-2-23 13:28 编辑
lvye 发表于 2020-2-22 17:34
大佬你好,我忘记了,我之前加了你说的先清除,,但是还是不行的。

你好,找到其中原因了,是取消强制复位时出现了问题。可以看IMX6ULL的参考手册,LCDIF->CTRL 寄存器bit[30]的复位值是1,取消强制复位时,需要清0,否则会被关闭该block的时钟,如图所示:C:\Users\acer\Desktop\lcdif.png lcdif.png
取消强制复位的寄存器可以这样设置:LCDIF->CTRL &= ~((1<<31)|(1<<30));
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2020-2-19 23:05:01 | 显示全部楼层
帮顶
回复

使用道具 举报

3

主题

91

帖子

1

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2016-12-8
在线时间
398 小时
发表于 2020-2-20 00:37:45 | 显示全部楼层
本帖最后由 NANADGUT 于 2020-2-23 17:20 编辑

前面图1,你用位运算的话,一般是先清0再置位。你上面的用了 |= 运算,是读寄存器然后在相或,就拿bit[20:19]来举例,假如这两个位的复位值是 01,你用2(10)跟它或后的结果不就是11吗?最终就不是你想要的10了。
图1改为:CCM_ANALOG->PLL_VIDEO &= ~((3<<19)|(1<<13)|(0x7F <<0);
                CCM_ANALOG->PLL_VIDEO |= (2<<19)|(1<<13)|(loopDiv<<0);
图2取消强制复位你写的不对吧,31位清0,不是这样写吗?LCDIF->CTRL &= ~(1<<31);
回复

使用道具 举报

26

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
359
金钱
359
注册时间
2019-6-11
在线时间
52 小时
 楼主| 发表于 2020-2-21 09:19:58 | 显示全部楼层
本帖最后由 lvye 于 2020-2-21 09:22 编辑
NANADGUT 发表于 2020-2-20 00:37
前面图1,你用位运算的话,一般是先清0再置位。你上面的用了 |= 运算,是读寄存器然后在相或,就拿bit[20 ...

你好大佬,就算是在|=之前我把寄存器清零了,在|=运算也是现象不正确的呢。不过你说的把之前复位时候的要更改的位清零,我倒是忘记清除了。我试一下谢谢哈。
回复

使用道具 举报

26

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
359
金钱
359
注册时间
2019-6-11
在线时间
52 小时
 楼主| 发表于 2020-2-21 09:21:29 | 显示全部楼层
NANADGUT 发表于 2020-2-20 00:37
前面图1,你用位运算的话,一般是先清0再置位。你上面的用了 |= 运算,是读寄存器然后在相或,就拿bit[20 ...

大佬方便加一个QQ吗?
回复

使用道具 举报

26

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
359
金钱
359
注册时间
2019-6-11
在线时间
52 小时
 楼主| 发表于 2020-2-22 17:34:18 | 显示全部楼层
NANADGUT 发表于 2020-2-20 00:37
前面图1,你用位运算的话,一般是先清0再置位。你上面的用了 |= 运算,是读寄存器然后在相或,就拿bit[20 ...

大佬你好,我忘记了,我之前加了你说的先清除, QQ截图20200222173326.jpg ,但是还是不行的。
回复

使用道具 举报

26

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
359
金钱
359
注册时间
2019-6-11
在线时间
52 小时
 楼主| 发表于 2020-2-27 00:26:11 | 显示全部楼层
NANADGUT 发表于 2020-2-19 17:09
你好,找到其中原因了,是取消强制复位时出现了问题。可以看IMX6ULL的参考手册,LCDIF->CTRL 寄存器bit[3 ...

哦哦,明白了,那么也就是说,除了复位这个,我下面那个时钟的截图的配置也是由于这个第30位的问题导致的。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 05:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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