TonyCai 发表于 2007-3-7 22:05:37

请教:想用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

}

TonyCai 发表于 2007-3-7 22:37:39

请大家给个建议也行!

我再想----不会是芯片的SPI的部分功能模块(clock logic)坏了吧,而且坏的恰当好处,软件控制输出时序能用,SPI的SCK就不行了? 我用的89S8252经常用简易的串行线(就是PC机的并口接4个电阻)来烧录flash,这种有risk吗?

TonyCai 发表于 2007-3-8 19:57:01

请高手支招!

TonyCai 发表于 2007-3-9 01:55:49

请高手支招!

TonyCai 发表于 2007-3-9 22:00:58

自己顶,可能我问的方法不对???

看在我刻苦的份上,大虾帮帮忙吧!

TonyCai 发表于 2007-3-13 21:11:59

(已解决)

原因是SPI的时钟与normal的CLK是与输出方式,前面的第一句赋值0,后面交给SPI时钟用,实际上这样做把SPI时钟禁止了。

解决方法: 加一局 SClk =1;

migzan 发表于 2007-3-13 23:58:21

原因是SPI的时钟与normal的CLK是与输出方式,前面的第一句赋值0,后面交给SPI时钟用,实际上这样做把SPI时钟禁止了。



不大明白,能详细点吗??

wuwu 发表于 2007-4-9 19:46:38

回复--migzan

SCLK交给SPI用,时钟和数据全由硬件控制,但之前不能将SCLK置0,否则0&1=0,0&0=0
页: [1]
查看完整版本: 请教:想用AT89S8252的SPI提高速度,SPCR=0x53,选用master,MOSI波形正常,但示波器测SC