3、OSDRAM(OSD Display RAM)
OsdRam可以假定为具有FontRAM索引值、调色板索引值和效果值的19*512的内存。显示模块读取OsdRam的值,扩展颜色,增加效果,然后将其发送到OSD显示内存。
3.1、物理OSDRAM内存
3.2、OsdRam 索引
OsdRam是一个19bit*512的存储器,但我们必须认为它是一个512字节大小的存储器,可以在R304[5]和R307[7:0]上使用UP256位进行索引,当用户写入字体索引值时,从寄存器读取MSB上的效果位并将其添加到OsdRam.
3.3、写OsdRam
在FW使用osdRam之前,FW需要将字体图像下载到FontRam,并设置开始Multi_BPP寄存器。
步骤1、选择auto INC模式
步骤2、分配osdRam索引并设置属性(1BPP的bgcolor/fgcolor,或Multi_BPP的颜色表索引的开始位置)
步骤3、再次分配OsdRam索引,然后写入FontRAM 索引编号
步骤4、如果FW有更多的数据要写入下一个OsdRam index,请写下一个数据,OsdRam索引将自动增加,并使用步骤2中编写好的相同属性值
3.4、OsdRam FIFO
OsdRam FIFO有8个字节并在HSync上进行更新。
如果下载的OsdRam数据大于FIFO的大小,请在VSync上将其关闭,然后更新数据。
3.5、Multi_BPP的FontRAM索引值
如果FW要写入Multi_BPP字体,则FW必须为每个Multi_BPP字体写入FontRAM索引的开始。
下面的例子显示了如何显示3BPP数字字符串,假设FW已经将字体图像下载到FontRAM,并且将3BPP数字字体位于0x60 FontRAM索引处,将Multi_BPP的开头指定为正确的数字。
此处仅提供相关函数名:
//---------------------------------
// FontOSD OsdRam
//---------------------------------
void FOsdRamSetFifo(int8u en, int8u Vdelay );
void FOsdRamWriteMode(int8u mode );
void FOsdRamSetAddress(int16u addr );
void FOsdRamSetAttribute(int8u attr );
void FOsdRamSetData(int16u dat );
void FOsdRamSetAddrAttr(int16u OsdRamAddr, int8u attr );
void FOsdRamMemset(int16u addr, int16u dat, int8u attr, int8u len);
void FOsdRamMemsetAttr(int16u addr, int8u color, int8u len);
void FOsdRamMemsetData(int16u addr, int16u dat, int8u len);
void FOsdRamClearAll(int16u dat, int8u attr);
void FOsdInit( void );
void FOsdRamWriteByteStr(int8u *str, int8u len);
void WriteStringToAddr(int16u addr, int8u *str, int8u cnt);
备注:void FOsdRamMemset(int16u addr, int16u dat, int8u attr, int8u len);
此函数指定OSDRAM地址与FontRAM index链接关系
addr:OSDRAM地址
dat:FontRAM index链接地址
attr:OSDRAM字体属性
len:窗口中显示个数