我用的是AVR单片机控制的W25X16读写的结果不一致,找不到原因,我自认为跟SPI的设置有关系
void SPI_Init(void) { SPI_PORT = (1 << SPI_SS) | (1 << SPI_MISO) | (0 << SPI_SCK);//将SS置位输出拉高,MISO输入带上拉 SPI_DDR = (1 << SPI_SS) | (1 << SPI_MOSI) | (1 << SPI_SCK);//将SS SCK MOSI置为输出 SPI_DDR = (0 << SPI_MISO);//MOSI置为输入 SPCR = (1<<SPIE)|(1<<SPE)| (1<<SPR0);//使能SPI 主机模式,设置时钟速率为fck/16
SPI_Write_Disable(); } char SPI_Write(char cData) { SPCR = (1<<MSTR); SPDR = cData;//启动数据传输 while(!(SPSR & (1 << SPIF))); } char SPI_Read() { while(!(SPSR & (1 << SPIF))); return SPDR;//返回数据 }
|