hpdell 发表于 2016-6-25 21:32:43

使用emwin 显示字符 有黑点 ??

最近在捣鼓 emwin v5.28 OS 的,目前基本能够显示出 字符,但是显示的字符有黑点,

这个显示有黑点是在 rtc 的显示里面,如果初始化后就显示貌似没有,这种情况是神马问题造成的啊 ??

图片1 没有在rtc任务里显示出来的字符效果,还行





下面的图片是在rtc 任务里面显示的,有黑点或者黑条













U8 * aMemory ;   // 数据类型 使用 u32,u8 结果都是一样的
   aMemory =((U8 *) (0x68000000));   // 1这样可以
aMemory =((U8 *) (0x68008000));   // 2这样就不行【或为其他任意一个数值,比如,0x68180000, 0x68001000 等显示都会有黑点或者黑条】,显示就会出现黑点或者黑条的情况, 为什么啊 ???

外部的sram 是 2MByte的,应该最大是可以 到 1024*1024*2 = 0x20 0000 + 0x68000000 = 0x6820 0000,上面的使用应该是没有超出范围的吧 ???

   aMemory =((U8 *) (0x68100000));   //地址从 0x6810 0000 开始,这样的也可以了【显示完全没有问题】。把外部sram 最后 1MByte 分配给emwin 使
用【前面的1MBye 留着解码图片音频等使用】,这是为什么啊 ?????
   GUI_ALLOC_AssignMemory( (void*) aMemory,512*1024UL);   //此处的字节数最大只能够为 512x1024,不是说是按照字节算的嘛,怎么只能是512x1024,不能够 1024x1024 ????

   GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);                //设置存储快的平均尺寸,该区越大,可用的存储快数量越少


emwin 底层显示函数

/*********************************************************************
*
*       Local functions
*
**********************************************************************
*/

static void LcdWriteReg(U16 Data) {

   FMC_LCD->REG = Data;
}

static void LcdWriteData(U16 Data) {
   FMC_LCD->RAM = Data;
}

static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
   while (NumItems--) {
   FMC_LCD->RAM = *pData++;
   }
}

static void LcdReadDataMultiple(U16 * pData, int NumItems) {
   while (NumItems--) {
   *pData++ = FMC_LCD->RAM ;
   }
}






















大林林 发表于 2016-6-28 08:41:40

不上几张纯色的看看??

dsjsjf 发表于 2016-6-28 09:06:47

帮顶一下

wenyangzeng 发表于 2016-6-28 10:51:02

原因应该不在显示驱动部分和存储器分配吧,而是RTC的频繁中断和LCD刷新冲突所致。您至少应该控制RTC需要秒更新时才进入1次RTC中断。

power568 发表于 2016-6-28 11:05:37

是不是两个任务同时去刷同一个地方了?

qscvhu 发表于 2016-6-28 13:02:05

时序不对

yanhaijian 发表于 2016-6-28 13:07:16

可能原因:
1,驱动LCD的时序不对
2,驱动SDRAM的时序有误

欣辰天下 发表于 2016-6-28 16:10:08

路过一下

遗失简单 发表于 2016-6-28 17:55:00

路过,顶一个

o律之o 发表于 2016-6-29 09:11:41

时序原因吧
页: [1] 2
查看完整版本: 使用emwin 显示字符 有黑点 ??