打印

关于s08qg8spi读93c46问题

[复制链接]
1989|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuhuadong|  楼主 | 2007-6-29 13:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用qg8的内部spi模块读取spi接口的93c46eeprom时16位时,采用查询方式,发现输出波形正常,

但是接受寄存器会把93c46发出的第一个零位放入spid中,请教高手如何解释。

需要接受3个字节一位后才能是正确的数据。并且,无论在发送或接受spid一放数,就会置位SPIS_SPRF

unsigned char rebuff1,rebuff2,rebuff3;


 b_cs=1;     //93c46使能
     
     yanshi();   //延时
      
     SPID=0X01;  //高7位补齐脉冲
     
     while(!SPIS_SPTEF);
     
     rebuff1=SPID; //清除标志
     
     SPID=0X80;    // 低六位为读取9346的地址 
     
     while(!SPIS_SPTEF);      
     
     SPID=0X00;    //产生时钟 
     
     while(!SPIS_SPTEF);
     
     rebuff1=SPID;   //
     
     while(!SPIS_SPRF) ;
     
     rebuff1=SPID;    
     
     
     SPID=0X00;     //产生时钟 
     
     while(!SPIS_SPTEF);
     
     rebuff1=SPID;   //读取高字节,????最高位为0,实际为1
     
     
     while(!SPIS_SPRF) ;
     
     rebuff2=SPID;
     
        
     SPID=0X00;     //产生时钟
     
     while(!SPIS_SPTEF);
     
     rebuff2=SPID;   //读取低字节,????最高位为高字节零位,
     
     while(!SPIS_SPRF);
     
     rebuff3=SPID;
         
     
     SPID=0X00;      //产生时钟
     
    while(!SPIS_SPTEF);
    
     rebuff3=SPID;    // ????最高位为低字节零位
     
          
    SPIC1=0X00;
    
    
     yanshi(); 
     yanshi();
     yanshi();
     yanshi(); 
     yanshi();
     b_cs=0;
     yanshi();

}

 void yanshi(void){
unsigned char i;

for(i=0;i<10;i++)__RESET_WATCHDOG();
}

相关帖子

沙发
FREETECH_S| | 2007-7-4 17:00 | 只看该作者

spi总线有四种工作方式,

spi总线有四种工作方式,这个现象就是没有设对工作方式,93c46应该是设置成spi1方式

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

134

帖子

0

粉丝