这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » at45db021a 有关at45db021a

共2条 1/1 1 跳转至

at45db021a 有关at45db021a

院士
2006-09-17 18:14:16     打赏
at45db021a 有关at45db021a



关键词: at45db021a     有关    

院士
2006-12-22 22:43:00     打赏
2楼
问 哪位用过at45db021a,我写的程序运行总有错误(读状态位总是0xFF,写入数据读出来也是0xFF,怀疑没有写进去),很长时间了,不知道为什么,向高手请教。我看到过AVRfreaks上的例程,我得跟他的差不多,但是不行,很奇怪。lyc@tdmarco.com 1: 程序#include <stdio.h>
#include <90s8515.h>
#include <delay.h>

char at45STA;
void initSPI()
{   
    DDRB.4=1;//SHDN?
    PORTB.4=1;
    DDRB.5=1;//MOSI
    DDRB.6=0;//MISO?
    DDRB.7=1;//sck
    SPCR=0x50;
}
void initAT45()
{
    DDRC.3=1;//at45d021的cs
    PORTC.3=1;
    PORTB.6=1;
    DDRB.7=1;//sck
    PORTB.7=0;
    DDRB.1=0;//rdy/busy
    PORTB.1=1;
}
char rwSPI(char outdata)
{
    char indata;
    SPDR=outdata;
    while(!(SPSR&0x80));
    indata=SPDR;
    return indata;
}
/*
Store Data
90s4414<--->at45d021
pb0<--->/reset
pb1<--->rdy/busy
pb5(mosi)<--->SI
pb6(miso)<--->SO
pb7<--->SCK
pc3<--->/CS
*/
void retAT45()
{
    DDRB.0=1;//reset
     PORTC.3=0;
    PORTB.0=0;
    delay_us(5);
    PORTB.0=1;
    PORTC.3=1;

}
void  at45sta()               
{      
      PORTC.3=1;
    PORTC.3=0;//cs
     while(!PINB.1);
    at45STA=rwSPI(0x00);
    PORTC.3=1;
}
void main()
{
    initSPI();
    initAT45();
    retAT45();
    at45sta();
    while(1);
}
2: SPI好像发不出数据,怎么回事呢?

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]