我用的是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;//返回数据
}
此帖出自
小平头技术问答
一周热门 更多>