|
当前给开发板配套的屏基本都是三代屏了,这个屏的字库和图库都是存在一个flash里面了。前面是字库后面是图库
图库是调用的函数:
void RA8875_DispBmpInFlash(uint16_t _usX, uint16_t _usY, uint16_t _usHeight, uint16_t _usWidth,
uint32_t _uiFlashAddr)
================================================
这个函数的最后一个参数是图片的首地址。问题就在这个地址上。这个函数里面的代码:
/* 对于铁框屏,一片 W25Q128,前面2MB是字库。后面14MB是图片 */
if (g_tW25.ChipID == W25Q128)
{
_uiFlashAddr += PIC_OFFSET; /* 前面2MB分配给字库 */ --------------->这里是个问题
#ifdef FLASH_DUAL_SPEED_EN /* 双速模式, MOSI和MISO同时读取数据 */
RA8875_WriteReg(0x05, (0 << 7) | (0 << 6) | (1 << 5) | (0 << 3) | (1 << 2) | (2 << 0));
#else /* 普通模式,仅 MISO 读取数据 */
RA8875_WriteReg(0x05, (0 << 7) | (0 << 6) | (1 << 5) | (0 << 3) | (1 << 2) | (0 << 0));
#endif
}
else /* 增强型屏,1片W25Q64(8MB)做字库,1片W25Q64(8MB)做图库 */
{
#ifdef FLASH_DUAL_SPEED_EN /* 双速模式, MOSI和MISO同时读取数据 */
RA8875_WriteReg(0x05, (1 << 7) | (0 << 6) | (1 << 5) | (0 << 3) | (1 << 2) | (2 << 0));
#else /* 普通模式,仅 MISO 读取数据 */
RA8875_WriteReg(0x05, (1 << 7) | (0 << 6) | (1 << 5) | (0 << 3) | (1 << 2) | (0 << 0));
#endif
}
===================================
如果大家自己弄字库和图库注意这个地址偏移。比如我们自己的出厂程序里面,字库虽然是2MB的,但是经过这个函数,地址偏移已经是4MB了,这点特别注意:
比如你写第一个图片海滩的地址0x0200 0000,实际上是访问的0x0400 0000地址了。
|
|