unsigned char read_status_register(void) { unsigned char i;
AT45DB161_CS=0;
input_8bit(OPCOM_READ_STATUS_REGISTER); for(i=0;i<8;i++) { AT45DB161_SO=1; //first setup the output pin AT45DB161_SCK=0; //falling eage to read rdata=rdata<<1; BIT0=AT45DB161_SO; AT45DB161_SCK=1; }
AT45DB161_CS=1; return(rdata); }
unsigned char read_flash(unsigned char opcom,unsigned int page_address,unsigned int in_page_address) { unsigned char i; unsigned char address_byte_1,address_byte_2,address_byte_3; unsigned int address;
address=(page_address<<2)|(in_page_address>>8); //combine 14 bits of page address and highest 2 bits of inner page address address_byte_1=address>>8; address_byte_2=address; address_byte_3=in_page_address;
while(!(read_status_register()&0x80)); AT45DB161_CS=0;
input_8bit(opcom); input_8bit(address_byte_1); input_8bit(address_byte_2); input_8bit(address_byte_3); input_8bit(0x00);//dump byte for(i=0;i<8;i++) { AT45DB161_SO=1; //first setup the output pin AT45DB161_SCK=0; //falling eage to read rdata=rdata<<1; BIT0=AT45DB161_SO; AT45DB161_SCK=1; }
AT45DB161_CS=1; return(rdata); }
void write_flash(unsigned char opcom,unsigned int page_address,unsigned int in_page_address,unsigned char wdata) { unsigned char address_byte_1,address_byte_2,address_byte_3; unsigned int address; address=(page_address<<2)|(in_page_address>>8); //combine 14 bits of page address and highest 2 bits of inner page address address_byte_1=address>>8; address_byte_2=address; address_byte_3=in_page_address;
while(!(read_status_register()&0x80)); AT45DB161_CS=0;
input_8bit(opcom); input_8bit(address_byte_1); input_8bit(address_byte_2); input_8bit(address_byte_3);
input_8bit(wdata);
while(!(read_status_register()&0x80));
AT45DB161_CS=1; }
我调用写函数,往BUFFER1里面的0地址里面写个0XAA,然后再读出来判断,怎么不对啊。?请赐教啊,项目着急啊。
|