STM32访问AT93C66,在读设备时,有个默认的0,需要将此位先去除,再取有效数据
由于此位的存在,需要去除,在读函数里进行处理:
unsigned char AT93C66_Read(unsigned int addr)
{
unsigned char i;
AT93C66_EWEN();
AT93C66_CS=1;
delay_us(1);
SPIx_ReadWriteByte(&hspi2,(unsigned char)(0x0C|addr>>8));
SPIx_ReadWriteByte(&hspi2,(unsigned char) addr);
i=SPIx_ReadWriteByte(&hspi2,0xFF);//读取
i=(i<<1)|(SPIx_ReadWriteByte(&hspi2,0xFF)>>7);
AT93C66_CS=0;
delay_us(1);
AT93C66_EWDS();
return i;
}
处理后数据读写正确。