STC单片机SPI EEPROM读写问题
我使用STC12C5A60S2单片机去读写SPI的EERPOM (at25F1024。我的寄存器初始化设置如下:SPCTL=0xDC, SPDAT = 0, SPSTAT=0xC0;我的程序就是将一个数组 txt = {0,1,2,3,4,5,6,7,8,9} 写入到AT25F1024这个SPI EEPROM中。 我设STC单片机为主机,首先是擦除EEPROM的片子,然后将数组写入EEPROM中,最后读出数据。 但是我觉得我连擦除都没有成功,如果片子被擦除了,里面的数据就是0xff了。擦除片子后读出的数据为“0”。 我求大家给我提供一个样例关于读写SPI EEPROM的程序。 我的程序代码如下:(如果程序有错, 请高手为我指出)void spi(unsigned char spi_data)
{
SPDAT = spi_data
while(!(SPSTAT&0x80));
SPSTAT = 0xC0;
}
//写数据
void putData(unsigned long addr, unsigned int num, unsigned char* source)
{
//读写状态寄存器
SS = 0; //片选
GetStatusRegister();
WriteCmd(0x06)//写使能
SPDAT = 0x03; //PROGRAM
SPDAT = (addr>>16);
SPDAT = (addr>>8);
SPDAT = (addr&0xFF);
for(i=0;i<num;i++)
{
spi(*source++);
}
SS =1;
}
//读数据
void getData(unsigned long addr, unsigned uint num, unsigned char* des)
{
SS = 0;
GetStatusRegister();
spi(0x03); //transmitt the op_code READ
spi((uchar)(addr>>16)); // Address phase is 3 byte long for SPI flashes
spi((uchar)(addr>>8)); //send MSByte address first
spi((uchar)(addr));
for(i=0;i<num;i++)
{
*(des++) = spi(0x00);
}
SS=1;
}
请帮我看看是否是读写方式错误,造成读写数据部正确。 请大家帮帮忙!回复我一下!! 是连续读写错呢, 还是程序有问题呢????
页:
[1]