1.例程里要用的SPI2,但是只有一个从机选择信号SPI2_NSS是怎么片选多个从机的?我看原理图的SPI FLSAH接在这个信号上,其它几个从机比如无线模块接在STM32的其它IO上,为什么能实现SPI2的从机选择?
2.库函数版里有个函数u8 SPI2_ReadWriteByte(u8 TxData)为什么这里入口参数是8位,函数里调用的SPI收发函数却是16位的?
void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data)
uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx)
u8 SPI2_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
retry++;
if(retry>200)return 0;
}
SPI_I2S_SendData(SPI2, TxData); //通过外设SPIx发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) //检查指定的SPI标志位设置与否:接受缓存非空标志位
{
retry++;
if(retry>200)return 0;
}
return SPI_I2S_ReceiveData(SPI2); //返回通过SPIx最近接收的数据
}
3.SPI写数据是扇区写,这里的计算怎么理解?
secpos=WriteAddr/4096;//扇区地址 0~511 for w25x16 secoff=WriteAddr%4096;//在扇区内的偏移
secremain=4096-secoff;//扇区剩余空间大小
问题有点多。。麻烦了,谢谢
|