IO模拟SPI时序问题

cgenghui 2008-05-24 02:21:29
最近用IO口模拟SPI来初始化一液晶屏,但是一直没有初始化成功(成功的标志是液晶屏出现花屏),自己已经检查过了所写的spi函数,没有发现问题,下面是我程序和液晶屏spi时序图,希望大家来共同讨论一下,谢谢!

程序如下:
#define SCLK(a) rGPDDAT = (rGPDDAT & ~(1 << 9)) | (a << 9) /*BUF_VD17 GPD9*/
#define SDI(a) rGPDDAT = (rGPDDAT & ~(1 << 10)) | (a << 10) /*BUF_VD18 GPD10*/ #define CS(a) rGPDDAT = (rGPDDAT & ~(1 <<8 )) | (a << 8) /*BUF_VD16 GPD8 */
#define CS(a) rGPDDAT = (rGPDDAT & ~(1 <<8 )) | (a << 8) /*GPD8 */

#define LCD_Command 1 /*Write Register*/
#define LCD_Data 0 /*Write Data */

void Lcd_Port_Init(void) //lcd所有信号线配置
{
/*
Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND
VD0,1,2 output
bit31 ***************************************** 0
10 10 10 10 10 01 01 01 01 00 00 10 10 10 10 00
a a 9 5 5 6 a 9
*/
rGPCCON=0xaa9542a8;
rGPCUP=0xffffffff; /* Disable Pull-up register */

/*
Initialize VD[15:8],VD8,9,16,17,18 OUTPUT
bit31 ***************************************** 0
10 10 10 10 10 01 01 01 10 10 10 10 10 10 01 01
a a 9 5 a a a 5
*/
rGPDCON=0xaa95aaa5;
rGPDUP=0xffffffff; /* Disable Pull-up register */
}


void Lcd_SPI_Process(U8 type, U16 datas)
{
unsigned char i;
unsigned char orders;


CS(0);
DelayNo(1000);

if(type == 1)
{
orders = 0x74; //写命令
}
else
{
orders = 0x76; //写数据
}

for(i = 0; i < 8; i++) //写8为命令
{
SCLK(0);
DelayNo(1000); //延时这么长时间是为了能在示波器上看见,示波器是模拟20mhz的
if(orders & 0x80)
{
SDI(1);
}
else
{
SDI(0);
}

DelayNo(1000);
SCLK(1);
DelayNo(1000);

orders = orders << 1;
}

for(i = 0; i <16; i++) //写对应数据
{
SCLK(0);
DelayNo(1000);

if(datas & 0x8000)
{
SDI(1);
}
else
{
SDI(0);
}

DelayNo(1000);
SCLK(1);
DelayNo(1000);
datas = datas << 1;
}
CS(1);
}


void DelayNo(U32 i)
{
for(;i>0;i--);
}


void LCD_CtrlWrite_ILI9320(unsigned char reg, U16 datas)
{
Lcd_SPI_Process(LCD_Command,reg);
Lcd_SPI_Process(LCD_Data,datas);
}
...全文
962 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubin23 2009-09-09
  • 打赏
  • 举报
回复
ding!!!!!!!!!!!
sherlock_lai 2008-05-24
  • 打赏
  • 举报
回复
没有初始化成功不一定是你的时序有问题,可能是写入液晶寄存器的参数有问题

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧