搜索
bottom↓
回复: 33

让我来告诉你如何解决SSD1963屏,移植emWim时出现的鼠标拖影

[复制链接]

出0入0汤圆

发表于 2015-6-19 16:36:40 | 显示全部楼层 |阅读模式
本帖最后由 zhuisuoji 于 2015-6-19 18:28 编辑

红牛板已经好几年了,很少玩,最近看到emWin比较火,于是也尝试一下,结果很失望,功力不够!
就一个鼠标拖尾问题搞了将近1个星期,也硬着头皮去啃了N遍英文版本的emWin.PDF及ssd1963.PDF文件,当然也少不了坛里高手的杰作,但问题依旧.
问度娘也没有了办法,关键最烦的还是要忍受无数次的MDK罢工.
但我移植其它液晶驱动没有这个现象.
问坛里也没几个理哟,这是之前我发的求助帖子:http://www.amobbs.com/forum.php?mod=viewthread&tid=5625212&pid=8633423&page=1&extra=#pid8633423
功夫不负有心人,昨晚终于搞定了.
本来想搞搞气氛犒劳一下自己,顶到100楼才公布答案的,也不知道坛友是否支持?





http://v.youku.com/v_show/id_XMTI2NTg0NjQwMA==.html

以下是方法:
用的模板是LCDConf_FlexColor_Template.c

下面是代码,在关键部分都作了说明:


  1. /********************************************************************
  2. *
  3. *       LcdWriteData
  4. *
  5. * Function description:
  6. *   Writes a value to a display register
  7. */
  8. static void LcdWriteData(U16 Data) {
  9.   // ... TBD by user
  10.         LCD_RAM        = Data;
  11. }

  12. /********************************************************************
  13. *
  14. *       LcdWriteDataMultiple
  15. *
  16. * Function description:
  17. *   Writes multiple values to a display register.
  18. */
  19. static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
  20.   while (NumItems--) {
  21.     // ... TBD by user
  22.                 LCD_RAM        = * pData++;
  23.   }
  24. }

  25. /********************************************************************
  26. *
  27. *       LcdReadDataMultiple
  28. *
  29. * Function description:
  30. *   Reads multiple values from a display register.
  31. */
  32. static void LcdReadDataMultiple(U16 * pData, int NumItems) {
  33.                 while (NumItems--) {
  34.                                 LcdWriteReg(CMD_RD_MEMSTART);//--每次都需要发送读取命令(0x2E),这里会影响读取速度,但目前只有这样了
  35.                         * pData++ = LCD_RAM;
  36.                 }
  37. }

  38. /*********************************************************************
  39. *
  40. *       Public functions
  41. *
  42. **********************************************************************
  43. */
  44. /*********************************************************************
  45. *
  46. *       LCD_X_Config
  47. *
  48. * Function description:
  49. *   Called during the initialization process in order to set up the
  50. *   display driver configuration.
  51. *
  52. */
  53. void LCD_X_Config(void) {
  54.   GUI_DEVICE * pDevice;
  55.   CONFIG_FLEXCOLOR Config = {0};
  56.   GUI_PORT_API PortAPI = {0};
  57.         unsigned TouchOrientation;
  58.   //
  59.   // Set display driver and color conversion
  60.   //
  61.   pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_M565, 0, 0);
  62.         GUIDRV_FlexColor_SetReadFunc66720_B16(pDevice, GUIDRV_FLEXCOLOR_READ_FUNC_II);//--这个很重要,空读1次,第2次接收GUICC_M565数据
  63.   //
  64.   // Display driver configuration, required for Lin-driver
  65.   //
  66.   LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
  67.   LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
  68.         //
  69.         // Set orientation of touch screen (only required when using
  70.         //
  71.         TouchOrientation = GUI_SWAP_XY ;
  72.        
  73.         GUI_TOUCH_SetOrientation(TouchOrientation);
  74.        
  75.         GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 239, GUI_TOUCH_AD_TOP, GUI_TOUCH_AD_BOTTOM);
  76.         GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 319, GUI_TOUCH_AD_LEFT,GUI_TOUCH_AD_RIGHT);       
  77.   //
  78.   // Orientation
  79.   //
  80.   Config.Orientation = 0;//GUI_SWAP_XY | GUI_MIRROR_Y
  81.         //Config.NumDummyReads = 0;         //--读第2次才开始数据的读取,这里起不到作用注释掉,改用上面来设置
  82.   GUIDRV_FlexColor_Config(pDevice, &Config);
  83.   //
  84.   // Set controller and operation mode
  85.   //
  86.   PortAPI.pfWrite16_A0  = LcdWriteReg;
  87.   PortAPI.pfWrite16_A1  = LcdWriteData;
  88.   PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
  89.   PortAPI.pfReadM16_A1  = LcdReadDataMultiple;
  90.         GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66720, GUIDRV_FLEXCOLOR_M16C0B16);
  91. }

  92. /*********************************************************************
  93. *
  94. *       LCD_X_DisplayDriver
  95. *
  96. * Function description:
  97. *   This function is called by the display driver for several purposes.
  98. *   To support the according task the routine needs to be adapted to
  99. *   the display controller. Please note that the commands marked with
  100. *   'optional' are not cogently required and should only be adapted if
  101. *   the display controller supports these features.
  102. *
  103. * Parameter:
  104. *   LayerIndex - Index of layer to be configured
  105. *   Cmd        - Please refer to the details in the switch statement below
  106. *   pData      - Pointer to a LCD_X_DATA structure
  107. *
  108. * Return Value:
  109. *   < -1 - Error
  110. *     -1 - Command not handled
  111. *      0 - Ok
  112. */
  113. int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
  114.   int r;
  115.   (void) LayerIndex;
  116.   (void) pData;
  117.   
  118.   switch (Cmd) {
  119.   case LCD_X_INITCONTROLLER: {
  120.     //
  121.     // Called during the initialization process in order to set up the
  122.     // display controller and put it into operation. If the display
  123.     // controller is not initialized by any external routine this needs
  124.     // to be adapted by the customer...
  125.     //
  126.     // ...
  127.                 LCD_Initializtion();
  128.     return 0;
  129.   }
  130.   default:
  131.     r = -1;
  132.   }
  133.   return r;
  134. }

  135. /*************************** End of file ****************************/
复制代码


下面是有关emWin的设置摘要说明:












本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-6-19 16:46:12 | 显示全部楼层
本帖最后由 styleno1 于 2015-6-19 16:54 编辑

我认为是读点。那么楼主,是别的原因吗?
————————————————
补充:从链接里的图来看,是RGB565-RGB888的排线连接问题。

出0入0汤圆

发表于 2015-6-19 16:51:06 | 显示全部楼层
支持一下

出0入22汤圆

发表于 2015-6-19 16:58:03 | 显示全部楼层
好嘛,关注一个。

出0入10汤圆

发表于 2015-6-19 17:06:18 | 显示全部楼层
顶!!!!!!!!!!!

出0入0汤圆

 楼主| 发表于 2015-6-19 17:07:18 | 显示全部楼层
styleno1 发表于 2015-6-19 16:46
我认为是读点。那么楼主,是别的原因吗?
————————————————
补充:从链接里的图来看,是RG ...

是读点问题,但还有一个关键的设置问题,拜读过坛里坛外的,都没有提到过的,所以才觉得有必要跟坛友分享一下~~~

出0入17汤圆

发表于 2015-6-19 17:09:15 | 显示全部楼层
zhuisuoji 发表于 2015-6-19 17:07
是读点问题,但还有一个关键的设置问题,拜读过坛里坛外的,都没有提到过的,所以才觉得有必要跟坛友分享一下 ...

你看的不细致;
很多教程都说了要配置缓存

出0入0汤圆

 楼主| 发表于 2015-6-19 17:20:11 | 显示全部楼层
hhxb 发表于 2015-6-19 17:09
你看的不细致;
很多教程都说了要配置缓存

缓存当然要开呀,如果小于40K(具体小到多少没认真去试),编译的时候海豚是不会出来的,

出0入0汤圆

 楼主| 发表于 2015-6-19 17:38:11 | 显示全部楼层
zxq6 发表于 2015-6-19 16:58
好嘛,关注一个。

谢谢关注~~~我也想看看到底有多少坛友遇到过这个问题,少走弯路.

出0入17汤圆

发表于 2015-6-19 17:50:21 | 显示全部楼层
本帖最后由 hhxb 于 2015-6-19 17:52 编辑
zhuisuoji 发表于 2015-6-19 17:38
谢谢关注~~~我也想看看到底有多少坛友遇到过这个问题,少走弯路.


本来想搞搞气氛犒劳一下自己,顶到100楼才公布答案的,也不知道坛友是否支持?

我不支持。你这种就属于恶意灌水。浪费大家的时间。

出0入0汤圆

发表于 2015-6-19 17:59:01 | 显示全部楼层
呵呵,支持一下

出0入0汤圆

 楼主| 发表于 2015-6-19 18:07:11 | 显示全部楼层
本帖最后由 zhuisuoji 于 2015-6-19 18:23 编辑
hhxb 发表于 2015-6-19 17:50
本来想搞搞气氛犒劳一下自己,顶到100楼才公布答案的,也不知道坛友是否支持?

我不支持。你这种就属于恶意 ...


呵呵~~~没关系,不用等了,我已经公布答案了,我一直在编辑中...

出0入0汤圆

 楼主| 发表于 2015-6-19 18:26:21 | 显示全部楼层
本帖最后由 zhuisuoji 于 2015-6-19 19:07 编辑

上面的图片已经刷出来了


总结一下上面的方法,目前我所采用的方法也不知道是本身ssd1963的原因还是emWin驱动的原因?
因为读取像素命令发过一次后应该可以连读的,但不知为什么要每次读取都要发一次命令才行?这样会严重影响刷屏速度.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-6-19 19:21:48 | 显示全部楼层
感谢楼主发布,我用R68090的屏也有类似问题,回头试试。

出0入0汤圆

发表于 2015-9-5 22:17:53 | 显示全部楼层
继续顶啊!希望能把原理图和程序全部开源

出0入0汤圆

发表于 2015-9-6 16:43:22 | 显示全部楼层
无非是读写点的问题吧,没用过1963。8875移植的没问题

出0入0汤圆

发表于 2015-9-6 16:53:13 | 显示全部楼层
非常感谢楼主,哈哈,我一直头疼这个问题,只不过能力有限,一直没找到问题在哪

出0入0汤圆

发表于 2015-11-4 15:21:11 | 显示全部楼层
lz没有给demo,可以给大家参考哈

出0入0汤圆

 楼主| 发表于 2015-11-5 00:23:38 | 显示全部楼层
baonng 发表于 2015-11-4 15:21
lz没有给demo,可以给大家参考哈

我已经把问题的关键说出来了,难道这样还不清楚么?
如果你是一步步自己移植的应该看得明白才对呀.

出0入0汤圆

发表于 2015-11-6 14:53:23 | 显示全部楼层
zhuisuoji 发表于 2015-11-5 00:23
我已经把问题的关键说出来了,难道这样还不清楚么?
如果你是一步步自己移植的应该看得明白才对呀. ...

我的也移植了的,不过和你的不一样,SSD1963对应的不是GUIDRV_FLEXCOLOR_F66709吗?

出0入0汤圆

 楼主| 发表于 2015-11-6 19:37:42 | 显示全部楼层
本帖最后由 zhuisuoji 于 2015-11-6 19:39 编辑
baonng 发表于 2015-11-6 14:53
我的也移植了的,不过和你的不一样,SSD1963对应的不是GUIDRV_FLEXCOLOR_F66709吗? ...

你肯定看的是中文资料吧?其实我都试过,最后确定是我这个GUIDRV_FLEXCOLOR_F66720







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-11-9 08:53:40 | 显示全部楼层
zhuisuoji 发表于 2015-11-6 19:37
你肯定看的是中文资料吧?其实我都试过,最后确定是我这个GUIDRV_FLEXCOLOR_F66720

你说的对,英文手册与中文手册有区别。不过奇怪竟然都能用

出0入0汤圆

 楼主| 发表于 2015-11-9 20:34:16 | 显示全部楼层
baonng 发表于 2015-11-9 08:53
你说的对,英文手册与中文手册有区别。不过奇怪竟然都能用

你有没有试过中文输出?记得好像如果选择不对输出中文会乱码,还有绘制图形时也会乱码,由于没有做笔记,现在不太记得是不是这个原因了.

出0入0汤圆

发表于 2015-11-10 11:38:35 | 显示全部楼层
zhuisuoji 发表于 2015-11-9 20:34
你有没有试过中文输出?记得好像如果选择不对输出中文会乱码,还有绘制图形时也会乱码,由于没有做笔记,现在 ...

中文也没有问题啊

出0入0汤圆

发表于 2016-9-9 11:34:32 | 显示全部楼层
楼主的方法完美解决海豚拖影以及鼠标拖影,

出0入0汤圆

 楼主| 发表于 2016-9-10 13:59:22 | 显示全部楼层
STM_FPGA 发表于 2016-9-9 11:34
楼主的方法完美解决海豚拖影以及鼠标拖影,

很高兴能帮到你~~~

出0入0汤圆

发表于 2016-9-10 14:06:12 | 显示全部楼层
谢谢,顶一个。正在准备用gui设计界面

出0入0汤圆

发表于 2016-9-10 14:56:10 | 显示全部楼层
正好我也一直在纠结这个问题,照你方法试一下

出0入0汤圆

发表于 2017-5-12 09:56:29 | 显示全部楼层
stm32_xiaocai 发表于 2015-9-6 16:43
无非是读写点的问题吧,没用过1963。8875移植的没问题

8875确实要稳定很多

出0入0汤圆

发表于 2020-6-10 23:01:25 | 显示全部楼层
按照LZ的方法该了一下,还是无效啊,指针经过的地方还是黑色的。

出0入0汤圆

发表于 2020-6-11 00:42:33 | 显示全部楼层
cannot wait for your tricks.

出0入0汤圆

 楼主| 发表于 2020-6-11 01:07:57 | 显示全部楼层
hbzxx 发表于 2020-6-10 23:01
按照LZ的方法该了一下,还是无效啊,指针经过的地方还是黑色的。


尴尬了,这帖子很多年了,我也忘记的差不多了,总之,我的是搞定了的.
要不你将我上面提到的程序贴出来吧,看看还能不能帮得上...

出0入0汤圆

发表于 2020-6-11 05:30:31 来自手机 | 显示全部楼层
Config.NumDummyReads = -1;折腾了好几天,才找出问题,在segger的论坛里找到了官方的驱动。

出0入0汤圆

 楼主| 发表于 2020-6-11 08:53:16 | 显示全部楼层
hbzxx 发表于 2020-6-11 05:30
Config.NumDummyReads = -1;折腾了好几天,才找出问题,在segger的论坛里找到了官方的驱动。 ...

原来如此,这个问题也是够让人折腾的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 15:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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