请教:想用AT89S8252的SPI提高速度,SPCR=0x53,选用master,MOSI波形正常,但示波器测SC
本来AT89S8252已经成功驱动128*128的LCD了,因为用的是普通I/O加软件时序,速度较慢,想利用SPI的端口.用89S8252的P1.5(MOSI)和p1.7(SCK),只需改动send_data(),send_command(),这2个地层函数.下面是函数,send_command()和send_data()几乎差不多,就是DC=1改为DC=0;
问题: SCK(P1.7)无输出,当然点不亮LCD;为了排除连接电路的问题,保持连线不动,把这两个函数该为纯I/O软件产生时序,就能正常驱动彩屏了-----忘大家赐教...
void send_data(unsigned char data1)
{
SClk =0;SClk =0; // LCD need SCE fail edge,SCLK must low
CSX =0; // CSX=0,LCD enable
DC=1;DC=1; //LCD need confirm DC=1 is data
ES=0; //set SPI interrupt disable bit
SPCR=0x53; //set SPI control bit,SPIE=0,SPE=1,DORD=0,MSTR=1,
//CPOL=CPHA=0,SPR1=SPR0=1(SCK=F/128),
SPDR=data1; //send data1;
while((SPSR&0x80) == 0);//check finish send data(SPIF=1) or not
CSX =1; //CSX=1,LCD disable
} 请大家给个建议也行!
我再想----不会是芯片的SPI的部分功能模块(clock logic)坏了吧,而且坏的恰当好处,软件控制输出时序能用,SPI的SCK就不行了? 我用的89S8252经常用简易的串行线(就是PC机的并口接4个电阻)来烧录flash,这种有risk吗? 请高手支招! 请高手支招! 自己顶,可能我问的方法不对???
看在我刻苦的份上,大虾帮帮忙吧! (已解决)
原因是SPI的时钟与normal的CLK是与输出方式,前面的第一句赋值0,后面交给SPI时钟用,实际上这样做把SPI时钟禁止了。
解决方法: 加一局 SClk =1; 原因是SPI的时钟与normal的CLK是与输出方式,前面的第一句赋值0,后面交给SPI时钟用,实际上这样做把SPI时钟禁止了。
不大明白,能详细点吗?? 回复--migzan
SCLK交给SPI用,时钟和数据全由硬件控制,但之前不能将SCLK置0,否则0&1=0,0&0=0
页:
[1]