xiaoziwen 发表于 2013-1-3 10:33:30

tft刷屏速度带来一个问题 希望大家给点儿思路 谢谢

问题是这样的:

tft刷屏在百毫秒级(使用atmega32a)

这样的话 我在实现屏幕切换时 也就是要把屏幕内容全部更新时 MCU就要全力为tft服务

这时候 MCU就无法从sd卡提取数据再发送给vs1053进行解码 音乐就会中断

这个问题如何解决 难道一定要使用时间片的方式 例如每个任务最多运行3ms

刷屏没结束 挂起 然后取sd卡数据发给vs1053 再刷屏 如此类推???????

还是有别的方式可以解决 希望大家提供一个思路 谢谢

xiaodao35 发表于 2013-1-3 10:42:20

vs1003有个数据请求呀,可以在中断中给数据吧!

xiaoziwen 发表于 2013-1-3 10:44:57

xiaodao35 发表于 2013-1-3 10:42 static/image/common/back.gif
vs1003有个数据请求呀,可以在中断中给数据吧!

是DREQ吧 那个好像不是中断吧 是在发数据的时候要检测这个引脚电平 来确定什么时候可以发送或者不能发送 具体不行我再看一下

xiaoziwen 发表于 2013-1-3 10:48:04

xiaodao35 发表于 2013-1-3 10:42 static/image/common/back.gif
vs1003有个数据请求呀,可以在中断中给数据吧!

哦 我明白了 确实是个数据请求 只是我没当中断来用 我明白了

我试一试 谢谢啦

xiaoziwen 发表于 2013-1-3 10:58:26

xiaodao35 发表于 2013-1-3 10:42 static/image/common/back.gif
vs1003有个数据请求呀,可以在中断中给数据吧!

老哥这样试过吗

怎么感觉都不对劲儿啊

还是觉得 在发送数据时检查这个DREQ好一些

当做中断来用的话 感觉有问题啊

数据在发送过程中 DREQ是有可能跳变的 这样会产生好多中断

或者说 程序运行貌似没有章法了

tiancaigao7 发表于 2013-1-3 11:03:48

尽量不要全部更新屏幕,需要更新那块就更新那块,全部更新是效率最低的。就算是现在的主流PC,如果配上现在的高分辨率的屏幕全部更新也受不了。

wye11083 发表于 2013-1-3 11:36:41

tiancaigao7 发表于 2013-1-3 11:03 static/image/common/back.gif
尽量不要全部更新屏幕,需要更新那块就更新那块,全部更新是效率最低的。就算是现在的主流PC,如果配上现在 ...

这你就有点错了。PC刷屏是硬件完成的,挤占的是显存带宽。至于其它操作,则必须是更新指定的一块。所以,分辨率越高,性能越差。

xiaoziwen 发表于 2013-1-3 11:41:11

tiancaigao7 发表于 2013-1-3 11:03 static/image/common/back.gif
尽量不要全部更新屏幕,需要更新那块就更新那块,全部更新是效率最低的。就算是现在的主流PC,如果配上现在 ...

这个确实是

在刷新MP3播放时间的时候 只用刷新一个数字就成了

但是现在是 这样的

主界面->MP3播放界面 这个没问题 应为MP3没有开始播放呢

MP3播放界面->主界面 这就是问题的部分 基本上要刷新全屏了

就是说 这个问题只有两个解决思路吗:1.尽量减少刷屏的大小 2.加入时间片,任务分片处理

xiaoziwen 发表于 2013-1-3 12:17:46

wye11083 发表于 2013-1-3 11:36 static/image/common/back.gif
这你就有点错了。PC刷屏是硬件完成的,挤占的是显存带宽。至于其它操作,则必须是更新指定的一块。所以, ...

老哥 咱别讨论PC啦

帮我出个主意啊

wye11083 发表于 2013-1-3 12:45:54

xiaoziwen 发表于 2013-1-3 12:17 static/image/common/back.gif
老哥 咱别讨论PC啦

帮我出个主意啊

我纳闷你用的MCU没有声音缓冲?要知道,PC的声卡都有几十ms的声音缓冲的。再一个,你为什么不考虑用现成的带TFT控制器的MCU?RK2608,===,SDK之类的都能在网上找到了。要不然你就加个串并转换的CPLD,把刷屏变成并行的,让CPLD负责并转串,这样刷屏速度不就快了N倍了?

xiaoziwen 发表于 2013-1-3 13:06:47

wye11083 发表于 2013-1-3 12:45 static/image/common/back.gif
我纳闷你用的MCU没有声音缓冲?要知道,PC的声卡都有几十ms的声音缓冲的。再一个,你为什么不考虑用现成 ...

呵呵

我用的是avr单片机

缓冲区是个很好的思路 利用双缓冲区 音频解码器能等待tft刷新的时间就能增加一倍

按我之前的实验 可以有15ms左右了

现在想想真应该用stm32做 内存大 可以实现多缓冲

老哥说的瑞芯微的片子 还是再等等吧 能力不足

最后问一句

老哥说 瑞芯微的片子带有tft控制器

我自己买的也有啊 ili9341 之类的

这不是一个概念吗???

wye11083 发表于 2013-1-3 17:16:27

xiaoziwen 发表于 2013-1-3 13:06 static/image/common/back.gif
呵呵

我用的是avr单片机


当然不一样。芯片内带的控制器,是有专门的DMA来处理的,你不需要关注怎样写屏,只需要写内存就OK了。

xiaoziwen 发表于 2013-1-3 22:49:48

wye11083 发表于 2013-1-3 17:16
当然不一样。芯片内带的控制器,是有专门的DMA来处理的,你不需要关注怎样写屏,只需要写内存就OK了。 ...

那就是和stm32的fsmc一个概念?

wye11083 发表于 2013-1-3 23:33:42

xiaoziwen 发表于 2013-1-3 22:49 static/image/common/back.gif
那就是和stm32的fsmc一个概念?

不是。FSMC你得操心,然而LCD控制器你不用管它,配置好之后它自己就会从内存中读数据刷屏。即LCD控制器用的是FrameBuffer驱动,而FSMC你还得花功夫写屏。

cheungman 发表于 2013-1-4 00:08:23

分时刷屏, 不要刷全屏, 比如第一个时间片刷第一行, 下一个时间片刷第二行.

xiaoziwen 发表于 2013-1-4 00:15:24

wye11083 发表于 2013-1-3 23:33 不是。FSMC你得操心,然而LCD控制器你不用管它,配置好之后它自己就会从内存中读数据刷屏。即LCD控制器用 ...

差不多明白了 lcd控制器 只用给指定内存写数据 根据配置他就自动将数据发送给tft了

xiaoziwen 发表于 2013-1-4 00:17:16

cheungman 发表于 2013-1-4 00:08 分时刷屏, 不要刷全屏, 比如第一个时间片刷第一行, 下一个时间片刷第二行.

恩 这是好主意 只有分屏分的足够多 刷屏再慢也不是问题 谢谢啦
页: [1]
查看完整版本: tft刷屏速度带来一个问题 希望大家给点儿思路 谢谢