CPLD扩展12864的编程问题
我们公司有一块DSP5509开发板。因为5509通用IO口少,所以用CPLD扩展IO口,扩展后接了个12864.可是编程与单片机不同。我看不懂,贴出部分代码
。。。。。。。。。。。。。
#define CESECT1 0x200000
#define CESECT2 0x400000
#define CESECT3 0x600000
。。。。。。。。。。。。。。。。。
addr =(int *)CESECT2;
LCDCOM =(int *)CESECT3;
LCDOUT =(int *)CESECT3;
LCDIN=(int *)CESECT2;
。。。。。。。。。。。。。。。。。。。。。
/*----------------LCD忙检测----------------*/
void chk_busy()
{
unsigned int temp;
*addr = 0x00ef;
*LCDCOM = 0x0005;//RS=0(comm), RW=1(read), RST=1
temp = 0x0080;
while((temp&0x0080)!=0)
{
*LCDCOM = 0x000d;//EN=1
*addr = 0x00f7;
delay(10);
temp = *LCDIN;
*addr = 0x00ef;
*LCDCOM = 0x0005;//EN=0
}
*addr = 0x00ff;
//while((LCD_DAT&0x80)!=0);
}
/*------------------写LCD------------------*/
voidwr_lcd(unsigned char dat_comm, unsigned int content)
{
chk_busy();
if(dat_comm)
{
*addr = 0x00ef;
*LCDCOM = 0x0003;//RS=1(data), RW=0(write), RST=1
*addr = 0x00d7;
*LCDOUT = content;
*addr = 0x00cf;
*LCDCOM = 0x000b;//EN=1
delay(30);
*LCDCOM = 0x0003;//EN=0
*addr = 0x00ff;
}
else
{
*addr = 0x00ef;
*LCDCOM = 0x0001;//RS=0(data), RW=0(write), RST=1
*addr = 0x00d7;
*LCDOUT = content;
*addr = 0x00cf;
*LCDCOM = 0x0009;//EN=1
delay(30);
*LCDCOM = 0x0001;//EN=0
*addr = 0x00ff;
}
}
/*----------------清DDRAM------------------*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
}
/*------------------初始化-----------------*/
voidlcd_init(void)
{
*addr = 0x00ef;
delay(10);
*LCDCOM = 0x0000; //RESET
delay(1000);
*LCDCOM = 1;
wr_lcd (comm,0x30);/*30---基本指令动作*/
wr_lcd (comm,0x01);/*清屏,地址指针指向00H*/
wr_lcd (comm,0x06);/*光标的移动方向*/
wr_lcd (comm,0x0c);/*开显示,关游标*/
}
这里的addr,LCDCOM,LCDOUT,LCDIN都是什么意思啊?谢谢!
这就是映射 0x200000是CE10x400000是CE2 0x600000是CE3
你先看看5509的存储区 其实地址肯定是这些注意了这个分字地址和字节地址
还有你应该看看cpld里面的代码怎么写的
比如说你的cpld被映射到了CE2和CE3两个区 DSP里面对CE2基地址+偏移地址发数据
这个偏移地址是12864的LCDCOM 数据过来后cpld根据读到的地址就会译码到LCDCOM的相关指令
说的不是很清楚其实很简单 主要是你要看看cpld里面的译码怎么写的
谢谢!我不懂CPLD。请问版主,搞5509必须要学CPLD吗?
页:
[1]