2008年12月18日星期四

LPC2214+RA8835(SED13305)单色液晶显示

最近做一个LPC2214+RA8835(SED13305)单色液晶显示的东西,今天调试突然发现,LPC2214的主频升到48MHZ,液晶初始化就失败了!我的液晶控制器
RA8835挂在外部总线BANK2上。BCFG3的设置如下:
//#define RA8835_IDCY ((uint32)19) //the min system cycle time for RA8835 = 550ns 550 - 180 = 370ns 19*20 = 380ns
//#define RA8835_WST1 ((uint32)6 << 5) //read cycle time = WST1 + 3 = 9 9×20=180ns
//#define RA8835_WST2 ((uint32)7 << 11) //write cyle time Tcp(WE low time)=WST2 + 1 = 8 8*20 = 160 n
下降到36MHZ就可以了,很是诡异!因为根据数据手册,这样设置是可以的。而且每两次操作之间加延时也不行!

最后发现,IDCY位只有4位,最大为15,所以#define RA8835_IDCY ((uint32)19) 是不正确的,再一个是我的延时函数被KEIL默认的优化等级优化了!
IDCY设为最大15,延时函数里的变量加上volatile,问题解决。

延时函数:
static void Nop(void)
{
#if SED_CONFIG_DELAY
volatile INT8U i;
for(i=0;i<SED_DELAY_CYCLES_NUM;i++);

没有评论: