在TFTLCD的例程中的LCD_RD_DATA(void) 函数中,有这样一段
LCD_RD_CLR; //读取数据(读寄存器时,并不需要读 2 次)
if(lcddev.id==0X8989)delay_us(2);//FOR 8989,延时 2us
t=DATAIN;
LCD_RD_SET;
9341不是在RD上升沿读取数据的吗,为什么这里先读了IO口才把RD拉高的,这样不是读不到数据了吗。
求各位大神指教啊。
完整的函数体如下:
u16 LCD_RD_DATA(void)
{
u16 t;
GPIOB->CRL=0X88888888; //PB0-7 上拉输入
GPIOB->CRH=0X88888888; //PB8-15 上拉输入
GPIOB->ODR=0X0000; //全部输出 0
LCD_RS_SET;
LCD_CS_CLR;
LCD_RD_CLR; //读取数据(读寄存器时,并不需要读 2 次)
if(lcddev.id==0X8989)delay_us(2);//FOR 8989,延时 2us
t=DATAIN;
LCD_RD_SET;
LCD_CS_SET;
GPIOB->CRL=0X33333333; //PB0-7 上拉输出
GPIOB->CRH=0X33333333; //PB8-15 上拉输出
GPIOB->ODR=0XFFFF; //全部输出高
return t;
}
还是不理解9341的写入和读取不都是上升沿的吗。这里先把RD拉低,然后读取IDR的内容,然后再拉高RD。这样上升沿不是发生在单片机读取数据之后吗?怎么能读到正确的数据呢
一周热门 更多>