搜索
bottom↓
回复: 66

为STemWin写LCD驱动成功了

  [复制链接]

出0入0汤圆

发表于 2013-11-24 11:49:31 | 显示全部楼层 |阅读模式
发一个视频
http://you.video.sina.com.cn/api/sinawebApi/outplayrefer.php/vid=120106287_2408901642_Ohq8TCM6WTHK+l1lHz2stqlF+6xCpv2xhGiwu1qtJQ9fUQ6YJMXNb9wF4CjWBs1K9noLHcwydPwm1h0raqJf/s.swf

用STM32F103VET6,驱动HX8352C的TFT(来自fq1888的福利http://www.amobbs.com/forum.php? ... &extra=page%3D2)
软件使用了ST官方的STemWin(就是emWin 5.22),自己写了驱动程序。

原本想用FSMC,后来考虑成本想换RBT6,于是改用GPIO驱动。目前RBT6核心板在路上,先用VET6的GPIO测试。

目前正在整理代码,加注释。即将开源请关注。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-11-24 12:07:08 | 显示全部楼层
+1024                                                                                

出100入101汤圆

发表于 2013-11-24 13:27:45 | 显示全部楼层
不用FSMC,速度上不去。

出0入0汤圆

 楼主| 发表于 2013-11-24 14:08:30 | 显示全部楼层
本帖最后由 bart 于 2013-11-24 14:18 编辑
fengyunyu 发表于 2013-11-24 13:27
不用FSMC,速度上不去。


内行,说的对。为此关键部分我用汇编写。这个屏的写最小周期是100ns,我的写速度为111ns,还是加了延时的。所以结果并不慢。
但是运行emWin,RAM不够是硬伤




8761000 / (240x400) = 91FPS

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-11-24 15:02:12 | 显示全部楼层
这个比FSMC要快哪。

出0入0汤圆

发表于 2013-11-24 15:37:38 | 显示全部楼层
bart 发表于 2013-11-24 14:08
内行,说的对。为此关键部分我用汇编写。这个屏的写最小周期是100ns,我的写速度为111ns,还是加了延时的 ...

屏幕看起来真不错!!应该没有91fps吧???还有那个RAM占用了多少???可以说说么??

出0入0汤圆

 楼主| 发表于 2013-11-24 16:10:17 来自手机 | 显示全部楼层
Nexus 发表于 2013-11-24 15:37
屏幕看起来真不错!!应该没有91fps吧???还有那个RAM占用了多少???可以说说么?? ...

如果不断用同一颜色刷屏,达到91fps是可以的。实际的操作因为要处理GUI, 加载位图,就一定会慢下来,但显示瓶颈是LCD, 绝对不是Gpio.
我开了53k给emwin, 那个bargraph 才能用运行,其他的好象16K就可以。

出0入0汤圆

发表于 2013-11-24 16:13:36 | 显示全部楼层
很不错的样子,期待开源。原来仅用GPIO也可以去到这个速度,赞一个

出0入0汤圆

发表于 2013-11-24 16:16:49 | 显示全部楼层
bart 发表于 2013-11-24 16:10
如果不断用同一颜色刷屏,达到91fps是可以的。实际的操作因为要处理GUI, 加载位图,就一定会慢下来,但显 ...

支持下!!显示效果也不错!!

出0入0汤圆

发表于 2013-11-25 01:36:53 | 显示全部楼层
酷,IPS显示效果相当赞!

出0入0汤圆

发表于 2013-11-25 08:36:32 | 显示全部楼层
都来顶吧

出0入0汤圆

发表于 2013-11-25 08:58:16 | 显示全部楼层
bart 发表于 2013-11-24 14:08
内行,说的对。为此关键部分我用汇编写。这个屏的写最小周期是100ns,我的写速度为111ns,还是加了延时的 ...

请问,这个91FPS,也不是很慢了···弄动画,放个视频啥的,大概需要多少?40FPS?  图中,你自己刷的 单色块。那刷视频,就算降到30pfs,在stmf10上,也不慢了。那所谓的瓶颈在哪里咧···?内存不够可以外扩嘛····所以说gpio口控制没啥不好是吧····

出0入0汤圆

发表于 2013-11-25 09:16:34 | 显示全部楼层
不错。

等F429,439.

出0入0汤圆

 楼主| 发表于 2013-11-25 12:05:19 | 显示全部楼层
本帖最后由 bart 于 2013-11-25 13:28 编辑
kalo425 发表于 2013-11-25 08:58
请问,这个91FPS,也不是很慢了···弄动画,放个视频啥的,大概需要多少?40FPS?  图中,你自己刷的  ...


用单色刷屏,只要把颜色写到databus上,然后不断翻转WR就可以了。F1的端口翻转最大18Mhz,一个周期55ns, 小于LCD要求的100ns写周期,所以瓶颈在LCD上, CPU要加延时。
但是要显示位图就不同了,这个牵涉到从flash或者内存读数据,写databus, 然后再翻转WR,我目前能做到的从ram读然后写LCD一个写周期200ns左右。所以如果内存够,每帧图像能够及时载入内存,达到40fps也是可能的。

如果要括ram, 就应该考虑fsmc了。我此作的目的是给没有fsmc的芯片驱动lcd找个办法

出0入0汤圆

发表于 2013-11-26 22:48:08 | 显示全部楼层
再发福利!全新2.6寸信利IPS高清240X400坛友特惠19元!抢!

坛友特惠价格:
裸屏:原价31元,坛友特惠福利价格19元一片。
裸屏+PCB模块底板:原价39,坛友特惠25元一套。
本次活动仅限阿莫论坛网友,机会难得!


购买地址:
点击购买
另外请关注论坛另一福利贴:
3.5寸高清320X480,4.0寸高清320X480坛友特惠!
http://www.amobbs.com/thread-5555104-1-1.html

出0入0汤圆

发表于 2013-11-26 23:12:22 | 显示全部楼层
bart 发表于 2013-11-24 14:08
内行,说的对。为此关键部分我用汇编写。这个屏的写最小周期是100ns,我的写速度为111ns,还是加了延时的 ...

不需要汇编...KEIL MDK,stm32f103c8t6  驱动SSD1289的240*320 @16bit GPIO模拟8080时序 TFT,
O3级别优化,  
测试我写的代码 (含颜色配置, 窗口设置等代码)
Lcd_BackColor(RGB(255,0,0));
Lcd_Clear();
耗时是 4.80701ms,即 208fps

理论最高速度, 不算颜色配置, 窗口配置这些的话是
240*320/18MHz = 4.2667ms

即 234 fps(理论最高而已, 事实上达不到)


我用的纯C代码, 已经很接近理论上限了...
TFT屏本身显示都根不上了...三色混一起条纹滚动显示...
汇编不是必须的...关键在于 BSRR/BSRR的使用, 以及达夫设备

=================================================
;;;226    void Lcd_WriteGRAM(COLOR color, s32 size)
000000  b5f0              PUSH     {r4-r7,lr}
;;;227    {
;;;228        LCD_SEND_CMD(0x22);     // Prepare to write GRAM
000002  4d18              LDR      r5,|L11.100|
000004  f44f4600          MOV      r6,#0x8000
000008  616e              STR      r6,[r5,#0x14]
00000a  f44f4c80          MOV      r12,#0x4000
00000e  f8c5c014          STR      r12,[r5,#0x14]
000012  4b15              LDR      r3,|L11.104|
000014  14ea              ASRS     r2,r5,#19
000016  601a              STR      r2,[r3,#0]
000018  4f14              LDR      r7,|L11.108|
00001a  2422              MOVS     r4,#0x22
00001c  603c              STR      r4,[r7,#0]
00001e  1f1c              SUBS     r4,r3,#4
000020  6022              STR      r2,[r4,#0]
;;;229        LCD_RS_OUT(1);
000022  612e              STR      r6,[r5,#0x10]
;;;230        LCD_DAT_OUT(color);
000024  6038              STR      r0,[r7,#0]
;;;231        switch(size&7)
000026  f0010007          AND      r0,r1,#7
00002a  2808              CMP      r0,#8
00002c  d215              BCS      |L11.90|
00002e  e8dff000          TBB      [pc,r0]
000032  1412              DCB      0x14,0x12
000034  100e0c0a          DCB      0x10,0x0e,0x0c,0x0a
000038  0806              DCB      0x08,0x06
                  |L11.58|
;;;232        {
;;;233            default:
;;;234                while((size-=8)>=0)
;;;235                {
;;;236                    LCD_WR_OUT(0);  LCD_WR_OUT(1);
00003a  601a              STR      r2,[r3,#0]
00003c  6022              STR      r2,[r4,#0]
;;;237            case 7: LCD_WR_OUT(0);  LCD_WR_OUT(1);
00003e  601a              STR      r2,[r3,#0]
000040  6022              STR      r2,[r4,#0]
;;;238            case 6: LCD_WR_OUT(0);  LCD_WR_OUT(1);
000042  601a              STR      r2,[r3,#0]
000044  6022              STR      r2,[r4,#0]
;;;239            case 5: LCD_WR_OUT(0);  LCD_WR_OUT(1);
000046  601a              STR      r2,[r3,#0]
000048  6022              STR      r2,[r4,#0]
;;;240            case 4: LCD_WR_OUT(0);  LCD_WR_OUT(1);
00004a  601a              STR      r2,[r3,#0]
00004c  6022              STR      r2,[r4,#0]
;;;241            case 3: LCD_WR_OUT(0);  LCD_WR_OUT(1);
00004e  601a              STR      r2,[r3,#0]
000050  6022              STR      r2,[r4,#0]
;;;242            case 2: LCD_WR_OUT(0);  LCD_WR_OUT(1);
000052  601a              STR      r2,[r3,#0]
000054  6022              STR      r2,[r4,#0]
;;;243            case 1: LCD_WR_OUT(0);  LCD_WR_OUT(1);
000056  601a              STR      r2,[r3,#0]
000058  6022              STR      r2,[r4,#0]
                  |L11.90|
00005a  3908              SUBS     r1,r1,#8              ;234
00005c  d5ed              BPL      |L11.58|
;;;244                }

;;;245        }
;;;246        LCD_CS_OUT(1);
00005e  f8c5c010          STR      r12,[r5,#0x10]
;;;247    }
000062  bdf0              POP      {r4-r7,pc}
;;;248   
                          ENDP





出0入0汤圆

发表于 2013-11-27 14:46:38 | 显示全部楼层
刷屏速度够快吗?我之前用IO刷屏,速度跟不上

出0入0汤圆

 楼主| 发表于 2013-11-28 08:50:58 | 显示全部楼层
snoopyzz 发表于 2013-11-26 23:12
不需要汇编...KEIL MDK,stm32f103c8t6  驱动SSD1289的240*320 @16bit GPIO模拟8080时序 TFT,
O3级别优化, ...

憋了一天邮件验证,终于又可以发言了。说不了话果然比说不出话难过。
说的不错。这段优化的代码的确效率很高。
从你的 4.80701ms看,每个象素的写周期62.59ns,这个已经小过我的HX8352C的最小写周期要求了。SSD1289应该本身就比较快
之所以用汇编,是因为汇编不受编译器优化等级影响。这样程序的其他部分可以-O0编译,方便调试,而LCD驱动部分仍旧用最快速度运行。
我先贴一段汇编部分的代码,其实我的汇编学习经历只有1天。大家砸砖。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-11-28 08:59:11 | 显示全部楼层
1024,

出0入0汤圆

发表于 2013-11-28 09:46:28 | 显示全部楼层
bart 发表于 2013-11-28 08:50
憋了一天邮件验证,终于又可以发言了。说不了话果然比说不出话难过。
说的不错。这段优化的代码的确效率 ...

赞,GPIO达到这效果很不容易了,lz还开源,造福大家

出0入0汤圆

 楼主| 发表于 2013-11-28 10:22:30 | 显示全部楼层
sf49ers 发表于 2013-11-28 09:46
赞,GPIO达到这效果很不容易了,lz还开源,造福大家

谢谢。
GPIO只是一部分,主要的工作是看懂emWin的驱动,然后自己为emWin不支持的显示芯片写驱动。这部分代码有些凌乱,正在整理。

出0入0汤圆

发表于 2013-11-28 10:33:30 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2013-12-14 11:14:25 | 显示全部楼层
整理不玩了,项目代码我先发上来。

几个说明:
1. 用不起IAR和MDK,开发环境是arm-gcc+eclipse,Makefile管理工程。需要的库的路径都在Makefile里面。环境的搭建看我的博文http://www.ba0sh1.com/opensource-stm32-development/
2. 用的芯片是STM32F103RCT6,由于需要16-bit的GPIO,看了下只有PortB可以用,但是PB3,PB4被JTAG占用,需要SWD来debug。为此用的卡发板来自http://item.taobao.com/item.htm?id=35595258574,不是广告,我和店主不认识。
3. TFT模块来自http://www.amobbs.com/forum.php? ... &extra=page%3D2,也不是广告。
4. 程序中大部分我做了注释,不明白的地方可以问。过几天我会更新我的博客写一个专题。
5. GUIDRV_HX8352C.c还没完全优化完,几个_DrawBitmapxxx的函数还可以重写。
6. 欢迎拍砖,欢迎移植到其它卡发板,欢迎移植到其它开发环境,请保留CC BY-SA 3.0授权。







本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-12-18 13:13:06 | 显示全部楼层
楼主强人啊,正在搞STEMWIN,学习啦

出0入14汤圆

发表于 2013-12-18 13:32:31 | 显示全部楼层
顶正准备玩玩STEMWIN

出0入0汤圆

发表于 2013-12-31 10:55:46 | 显示全部楼层
bart 发表于 2013-12-14 11:14
整理不玩了,项目代码我先发上来。

几个说明:

兄弟真不错 整的视频很炫啊  
我看到你的例程中驱动是自己移植的,请问 你移植的时候有模板吗  我看到mdk473的模板,怎么和你的驱动中有些东西不一样啊
基本的画点画线是一样的 ,就是如何把自定义的驱动注册到emwin里这部分,我看好多驱动都有自己的一套,你的那一套是怎么来的

出0入0汤圆

发表于 2014-1-1 11:05:48 | 显示全部楼层
收藏了,先

出0入0汤圆

 楼主| 发表于 2014-1-1 16:50:09 | 显示全部楼层
myxiaonia 发表于 2013-12-31 10:55
兄弟真不错 整的视频很炫啊  
我看到你的例程中驱动是自己移植的,请问 你移植的时候有模板吗  我看到mdk ...

从最新版的MDK-ARM里面取GUIDRV_Template.c,在这个基础上改。
光写画点读点函数效率是很低的,要重写其他函数才能提高效率,比如画线,画矩形,画位图,都要重写。
程序整理完了,在https://github.com/baoshi/HX8352C-GPIO-emWin 可以下载。

出0入0汤圆

发表于 2014-1-1 19:18:08 | 显示全部楼层
bart 发表于 2014-1-1 16:50
从最新版的MDK-ARM里面取GUIDRV_Template.c,在这个基础上改。
光写画点读点函数效率是很低的,要重写其 ...

兄弟 你的博客是英文滴。。。

出0入0汤圆

发表于 2014-1-1 19:27:54 | 显示全部楼层
很好很强大……

出0入0汤圆

发表于 2014-1-1 21:00:09 | 显示全部楼层
bart 发表于 2014-1-1 16:50
从最新版的MDK-ARM里面取GUIDRV_Template.c,在这个基础上改。
光写画点读点函数效率是很低的,要重写其 ...

话说你的io读写虽然用的汇编,我用的c,但是我看反汇编比你的还少的,是因为我把a0,cs,rd/wr的操作都合并在一起的,然后用一个rd/wr上升沿来读写数据的 而且还用静态内联  因此io应该是比你快

结果却是 我的像素填充率:1703000,和你的比  相差8倍啊   看来自带驱动确实不行啊

出0入0汤圆

发表于 2014-1-1 21:36:37 | 显示全部楼层
感谢楼主的贡献

出0入0汤圆

 楼主| 发表于 2014-1-1 21:53:45 | 显示全部楼层
myxiaonia 发表于 2014-1-1 21:00
话说你的io读写虽然用的汇编,我用的c,但是我看反汇编比你的还少的,是因为我把a0,cs,rd/wr的操作都合 ...

我作弊,CS直接接地 :D
我的填充快,是因为lcdWriteRepeatingData这个函数。我把16位数据写到PortB上就不改了,而是直接toggle WR。为了满足LCD时序还加了延时,不加太快了。

出0入0汤圆

发表于 2014-1-1 22:43:11 | 显示全部楼层
bart 发表于 2014-1-1 21:53
我作弊,CS直接接地 :D
我的填充快,是因为lcdWriteRepeatingData这个函数。我把16位数据写到PortB上就不 ...

你这么一说  看来我还得再仔细看看你移植的驱动了   这么神奇

出0入0汤圆

发表于 2014-1-1 23:06:17 | 显示全部楼层
bart 发表于 2014-1-1 21:53
我作弊,CS直接接地 :D
我的填充快,是因为lcdWriteRepeatingData这个函数。我把16位数据写到PortB上就不 ...

刚去lz博客看了下lz的自我介绍  原来lz玩电子的时候我都还没出生呢  原来比我大20岁啊 我还妄称兄弟  失敬啦。。。。

出0入0汤圆

 楼主| 发表于 2014-1-2 15:50:54 | 显示全部楼层
myxiaonia 发表于 2014-1-1 23:06
刚去lz博客看了下lz的自我介绍  原来lz玩电子的时候我都还没出生呢  原来比我大20岁啊 我还妄称兄弟  失 ...

入行早,但中间20来年给软件耽误了,还算初学

出0入0汤圆

发表于 2014-1-2 15:51:53 | 显示全部楼层
111111111111111111111111111111111111111111111

出0入0汤圆

发表于 2014-1-2 22:10:25 | 显示全部楼层
bart 发表于 2014-1-2 15:50
入行早,但中间20来年给软件耽误了,还算初学

我正在对照着lz的驱动改写 我的驱动   我有预感肯定能写好   哈哈  lz写的很有水平

出0入0汤圆

发表于 2014-1-2 23:39:58 | 显示全部楼层
原来GPIO能刷得这么快啊

出0入0汤圆

发表于 2014-1-3 08:39:40 | 显示全部楼层
bart 发表于 2014-1-2 15:50
入行早,但中间20来年给软件耽误了,还算初学

lz你好  这是你的驱动文件中有关显示方式设置的宏
#if (!LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY)
    // Rotate 0
    #define LCD_XSIZE XSIZE_PHYS
    #define LCD_YSIZE YSIZE_PHYS
    #define LOG2PHYS_X(x, y) x
    #define LOG2PHYS_Y(x, y) y
#elif (!LCD_MIRROR_X && !LCD_MIRROR_Y && LCD_SWAP_XY)
    #define LCD_XSIZE YSIZE_PHYS
    #define LCD_YSIZE XSIZE_PHYS
    #define LOG2PHYS_X(x, y) x
    #define LOG2PHYS_Y(x, y) y
#elif (!LCD_MIRROR_X && LCD_MIRROR_Y && !LCD_SWAP_XY)
    #define LCD_XSIZE XSIZE_PHYS
    #define LCD_YSIZE YSIZE_PHYS
    #define LOG2PHYS_X(x, y) x
    #define LOG2PHYS_Y(x, y) 32 + (y)
#elif (!LCD_MIRROR_X && LCD_MIRROR_Y && LCD_SWAP_XY)
    // Rotate 270
    #define LCD_XSIZE YSIZE_PHYS
    #define LCD_YSIZE XSIZE_PHYS
    #define LOG2PHYS_X(x, y) 32 + (x)
    #define LOG2PHYS_Y(x, y) y
#elif (LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY)
    #define LCD_XSIZE XSIZE_PHYS
    #define LCD_YSIZE YSIZE_PHYS
    #define LOG2PHYS_X(x, y) x
    #define LOG2PHYS_Y(x, y) y
#elif (LCD_MIRROR_X && !LCD_MIRROR_Y && LCD_SWAP_XY)
    // Rotate 90
    #define LCD_XSIZE YSIZE_PHYS
    #define LCD_YSIZE XSIZE_PHYS
    #define LOG2PHYS_X(x, y) x
    #define LOG2PHYS_Y(x, y) y
#elif (LCD_MIRROR_X && LCD_MIRROR_Y && !LCD_SWAP_XY)
    // Rotate 180
    #define LCD_XSIZE XSIZE_PHYS
    #define LCD_YSIZE YSIZE_PHYS
    #define LOG2PHYS_X(x, y) x
    #define LOG2PHYS_Y(x, y) 32 + (y)
#elif (LCD_MIRROR_X &&  LCD_MIRROR_Y &&  LCD_SWAP_XY)
    #define LCD_XSIZE YSIZE_PHYS
    #define LCD_YSIZE XSIZE_PHYS
    #define LOG2PHYS_X(x, y) 32 + (x)
    #define LOG2PHYS_Y(x, y) y
#endif

请问类似这些  是你加上去的吗  我想也是要加上的,否则运算后坐标就和物理的不对应了
    #define LCD_XSIZE XSIZE_PHYS
    #define LCD_YSIZE YSIZE_PHYS

出0入0汤圆

 楼主| 发表于 2014-1-3 09:59:10 | 显示全部楼层
myxiaonia 发表于 2014-1-3 08:39
lz你好  这是你的驱动文件中有关显示方式设置的宏
#if (!LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY ...

这个处理比较特殊。因为我的屏是400x240的,而控制器GRAM是400x272,所以在某些旋转或翻转情况下我要考虑32个像素的偏差。
你要看你的芯片的实际情况,如果是ILI类型的,基本照原始模版的处理,我这个是HX芯片,行列的映射不大一样

出0入0汤圆

发表于 2014-1-3 12:17:36 | 显示全部楼层
bart 发表于 2014-1-3 09:59
这个处理比较特殊。因为我的屏是400x240的,而控制器GRAM是400x272,所以在某些旋转或翻转情况下我要考虑 ...

其实我想问的是XSIZE_PHYS和YSIZE_PHYS是实际的屏分辨率没问题

如果显示有旋转的话,LCD_XSIZE和LCD_YSIZE就应该按照实际来确定,而不是LCD_XSIZE恒等于XSIZE_PHYS,LCD_YSIZE恒等于YSIZE_PHYS

因为 你写的这两个交换的宏  我在模板文件上没看到  你写上肯定是有理由的   而且我觉得你这样做是对的  否则画像素这个函数就可能遇上坐标不对应的问题


不知道为何模板中没有指出你写的这一点,这样就很容易就忽略了  像这位兄弟的帖子Eric2013  【不断更新】emWin5.xx移植手册、规范代码,传说中emWin破解版    emwin用的也很赞的  好像就忽略了这个问题

出0入0汤圆

 楼主| 发表于 2014-1-3 13:00:51 | 显示全部楼层
myxiaonia 发表于 2014-1-3 12:17
其实我想问的是XSIZE_PHYS和YSIZE_PHYS是实际的屏分辨率没问题

如果显示有旋转的话,LCD_XSIZE和LCD_YSI ...

模板里的LCD_XSIZE和LCD_YSIZE是可以用户定义的吧,然后通过用户自己call SetSize来设置。这样做的好处是可以封闭驱动部分的代码而同时适用不同分辨率的屏幕。
我想既然开源了,就不需要再这么处理了,直接#define吧。也不让用户自定义分辨率,直接hardcode了。

出0入0汤圆

 楼主| 发表于 2014-1-3 13:10:41 来自手机 | 显示全部楼层
其实那个模版也是很乱,我看了很久才弄清楚到底怎么个执行过程,最后才尽量简化了

出0入0汤圆

发表于 2014-1-3 13:17:11 | 显示全部楼层

出0入0汤圆

发表于 2014-1-3 16:05:54 | 显示全部楼层
这个牛,留个爪印

出0入0汤圆

发表于 2014-1-4 16:00:26 | 显示全部楼层
bart 发表于 2014-1-3 13:10
其实那个模版也是很乱,我看了很久才弄清楚到底怎么个执行过程,最后才尽量简化了 ...

_DrawBitmap8BPPOpaque  这是你的移植驱动中的优化函数


你是用了驱动器的窗口操作,不过显示方向改变过后,两个顶点坐标就不一定保证一个是左上一个是右下了  而且行列也可能颠倒  不知道你的驱动器不会受影响吗

出0入0汤圆

 楼主| 发表于 2014-1-4 16:10:49 来自手机 | 显示全部楼层
emWin上层保证逻辑坐标不会颠倒或越界。通过那些宏转换到物理座标我测试也没问题

出0入0汤圆

发表于 2014-1-4 21:41:54 | 显示全部楼层
bart 发表于 2014-1-4 16:10
emWin上层保证逻辑坐标不会颠倒或越界。通过那些宏转换到物理座标我测试也没问题 ...

可能是我想多了  把简单问题搞复杂了  


本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-1-8 17:05:28 | 显示全部楼层
myxiaonia 发表于 2014-1-4 21:41
可能是我想多了  把简单问题搞复杂了

这个因控制器而异。
我测试的HX8352C就不用坐标变换,其实它根本没有设置坐标的功能,只能设置窗口,结果这种地方就反而比较好处理。
而ILI系列的有设置坐标功能,就需要变换坐标了。

出0入0汤圆

发表于 2014-1-8 17:10:01 | 显示全部楼层
eclipse环境,牛人,学习一下

出0入0汤圆

发表于 2014-1-8 18:50:00 | 显示全部楼层
gcc 加eclipse的话,其实装个插件就不需要写makefile了。。。。。方便很多。。。

出0入0汤圆

发表于 2014-1-8 19:49:50 | 显示全部楼层
路过帮顶

出0入0汤圆

 楼主| 发表于 2014-1-8 23:51:44 | 显示全部楼层
jisaowang2 发表于 2014-1-8 18:50
gcc 加eclipse的话,其实装个插件就不需要写makefile了。。。。。方便很多。。。 ...

同意。但是工程移植性能就差。
写了Makefile的框架,增加减少文件也是很方便。

出0入0汤圆

发表于 2014-4-12 23:21:24 | 显示全部楼层
前辈GUI.H文件在压缩包里吗?

出50入0汤圆

发表于 2014-4-15 15:05:46 | 显示全部楼层
mark   STEMWIN

出0入0汤圆

发表于 2014-4-22 15:15:45 | 显示全部楼层
不错不错,再顶

出0入0汤圆

发表于 2014-7-28 11:22:52 | 显示全部楼层
学习了,谢谢!

出0入0汤圆

发表于 2014-9-24 01:37:57 来自手机 | 显示全部楼层
同样的hx8352c,我用emwin自带驱动,fsmc 16bit,运行speed demo得分950万左右,stm32f103zet6

出0入0汤圆

 楼主| 发表于 2014-9-24 21:14:21 | 显示全部楼层
feezai 发表于 2014-9-24 01:37
同样的hx8352c,我用emwin自带驱动,fsmc 16bit,运行speed demo得分950万左右,stm32f103zet6 ...

emwin哪个版本?支持hx8352c了?

出0入0汤圆

发表于 2014-9-24 21:24:43 | 显示全部楼层
本帖最后由 feezai 于 2014-9-24 21:26 编辑
bart 发表于 2014-9-24 21:14
emwin哪个版本?支持hx8352c了?


开始看手册也以为不支持,后来测试了下,按HX8352的设置,竟然支持的很好。

用的是STemWin 5.22

  1. GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66712, GUIDRV_FLEXCOLOR_M16C0B16);
复制代码



出0入0汤圆

发表于 2015-8-28 19:35:00 来自手机 | 显示全部楼层
我也去试了下我ILI3925, 1219万是极限了,FSMC频率再高就会数据出错…

出0入0汤圆

发表于 2016-9-22 11:18:54 | 显示全部楼层
写一个EMWIN自己的驱动

出0入0汤圆

发表于 2016-9-22 12:47:34 | 显示全部楼层
牛,这要很好的汇编基础吧

出0入0汤圆

发表于 2017-9-12 18:16:48 | 显示全部楼层
hx8352与ssd1289不是兼容的?

出0入0汤圆

发表于 2017-12-25 09:49:31 | 显示全部楼层
Mark一下,模拟有用。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-6-17 14:35

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

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