硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5368|回复: 7
收起左侧

[emWin] SSD1289移植emwin的问题,有遇到过的朋友来看看,持续更新

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2014-12-26 16:49:53 | 显示全部楼层 |阅读模式
现象:程序可以运行,但是输出GUI_DispString()的是乱码
IMG_20141226_164255_副本.jpg
芯片:STM32F207ZGT
液晶:3.2英寸 芯片SSD1289(id=0x8989)
emwin版本5.22

1.液晶的驱动应该是对的,已经实现了BMP图片的显示和外挂中文字库
2.官方文档说SSD1289的驱动应当配置GUIDRV_CompactColor_16,但是搜索了5.22整个包后没有发现这个文件,
并且在网上找到有人(见4博客)用GUIDRV_FLEXCOLOR,成功驱动SSD1289,故下面的程序都是GUIDRV_FLEXCOLOR。
3.参照野火的教程,移植了emwin,出现乱码
4.参照这篇的博客  http://blog.sina.com.cn/s/blog_6e230f020102v3aq.html
  修改官方模板STM322xG-EVAL,结果同3

5.源码修改
修改部后面我都加了                //modify

#define GUI_NUMBYTES  1024*50   //modify
#define GUI_BLOCKSIZE  0x80     //modify
void GUI_X_Config(void) {
  //
  // 32 bit aligned memory area
  //
  static U32 aMemory[GUI_NUMBYTES / 4];
  //
  // Assign memory to emWin
  //
  GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
  //
  // Set default font
  //
  GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);      //modfiy
  GUI_SetDefaultFont(GUI_FONT_6X8);
}

#define LCD_BASE            ((u32)(0x60000000 | 0x0C000000))       //modfiy
#define LCD                     ((LCD_TypeDef *) LCD_BASE)             //modfiy        
#define LCD_REG_ADDRESS   (*(volatile u16*)LCD_BASE)           //modfiy
#define LCD_DATA_ADDRESS  (*(volatile u16*)(LCD_BASE + 2))       //modfiy
LCD读写操作就不贴了,因为有显示BMP图片程序验证过了


void LCD_X_Config(void) {
  GUI_DEVICE * pDevice;
  CONFIG_FLEXCOLOR Config = {0};
  GUI_PORT_API PortAPI = {0};
  //
  // Set display driver and color conversion
  //
  pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
  //
  // Display driver configuration, required for Lin-driver
  //
  LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
  LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
  //
  // Orientation
  //            
  Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;            //modify      
  Config.NumDummyReads = 2;                                  //modify  
  GUIDRV_FlexColor_Config(pDevice, &Config);
  //
  // Set controller and operation mode
  //
  PortAPI.pfWrite16_A0  = LcdWriteReg;
  PortAPI.pfWrite16_A1  = LcdWriteData;
  PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
  PortAPI.pfReadM16_A1  = LcdReadDataMultiple;
GUIDRV_FlexColor_SetFunc(pDevice, &amportAPI, GUIDRV_FLEXCOLOR_F66702, GUIDRV_FLEXCOLOR_M16C0B16);    //modify
}


int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData)
这个驱动也不贴了,正常的,初始化后2次刷屏操作,都可以实现


CRC时钟肯定也是开了
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);


emwin时钟源,用的ucos iii,直接加在了系统时钟中断里~~~
emwin自带的ucos的接口文件也试过了,同样效果无区别
图片1.png




现在不知道怎么办好了,没有思路,有哪位兄台有经验的,还望赐教,不胜感激!



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2014-12-26 18:02:04 | 显示全部楼层
如果你用的是emWin支持的那种通用驱动方法,我可以帮你,官方支持的这种驱动方式我还没有用过。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2014-12-26 18:04:14 | 显示全部楼层
这里有个例子,你可以试试:http://www.armbbs.cn/forum.php?mod=viewthread&tid=3499
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2014-12-31 22:29:08 | 显示全部楼层
测试了一DOME发现可行运行

但是有闪屏和花屏,录了一段视频
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2014-12-31 22:30:00 | 显示全部楼层
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2015-1-3 21:58:31 | 显示全部楼层
楼主,你的这个问题现在解决了没有。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2015-1-4 09:32:50 | 显示全部楼层

回 eric2013 的帖子

eric2013:楼主,你的这个问题现在解决了没有。 (2015-01-03 21:58) 
没有,放假没搞。放假前,发现可以运行DOME,会花屏,可见视频
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106749
QQ
发表于 2015-1-4 10:57:22 | 显示全部楼层

回 bbddoop 的帖子

bbddoop:没有,放假没搞。放假前,发现可以运行DOME,会花屏,可见视频 (2015-01-04 09:32) 
这个里面的尝试没有,这个是老外搞的:http://www.armbbs.cn/forum.php?mod=viewthread&tid=3499
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 03:08 , Processed in 0.243137 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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