其实提问很简单。就是一个spi的发送的问题。 我用spi写flash,具体的spi发送函数如下。 u8 SPIx_ReadWriteByte(u8 data) { u8 retry=0; /* Loop while DR register in not emplty */ //while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) while (SPI1->SR & SPI_I2S_FLAG_TXE == RESET) { retry++; if(retry>200)return 0; } // SPI_I2S_SendData(SPI1,data);//дÈëÒª·¢Ë͵ÄÊý¾Ý SPI1->DR = data; /* Wait to receive a byte */ //while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) //¼ì²éÖ¸¶¨µÄSPI±ê־λÉèÖÃÓë·ñ:½ÓÊÜ»º´æ·Ç¿Õ±ê־λ retry = 0; while( SPI1->SR & SPI_I2S_FLAG_RXNE == RESET ) { retry++; if(retry>200)return 0; } /* Return the byte read from the SPI bus */ return (uint16_t)SPI1->DR; //SPI_I2S_ReceiveData(SPI1); //·µ»Øͨ¹ýSPIx×î½ü½ÓÊÕµÄÊý¾Ý //**********µÈ´ý½ÓÊռĴæÆ÷¾ÍÊÕµ½Êý¾Ý******************* } 把最后的return语句改成 return SPI1->DR; 总是写不了flash,总是卡住。但是改成SPI_I2S_ReceiveData(SPI1);就可以读写了。 但是SPI_I2S_ReceiveData(SPI1);里面的实现也是 return SPIx->DR啊,为什么会有这样的差别。 |
RE:关于STM32的SPI发送的问题
RE:关于STM32的SPI发送的问题
RE:关于STM32的SPI发送的问题
a= SPI1->DR;
return a;
u8 SPIx_ReadWriteByte 这个和返回的不相符。
回复:关于STM32的SPI发送的问题
现读取,后返回。
a= SPI1->DR;
return a;
u8 SPIx_ReadWriteByte 这个和返回的不相符。
Re:刚刚试了下你的方法还是不行。 还有我用的是IAR。不是用的MDK
RE:关于STM32的SPI发送的问题
{
u8 retry=0;
/* Loop while DR register in not emplty */
//while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //¼ì²éÖ¸¶¨µÄSPI±ê־λÉèÖÃÓë·ñ:·¢ËÍ»º´æ¿Õ±ê־λ
while (SPI1->SR & SPI_I2S_FLAG_TXE == RESET)
{
retry++;
if(retry>200)return 0;
}
// SPI_I2S_SendData(SPI1,data);//дÈëÒª·¢Ë͵ÄÊý¾Ý
SPI1->DR = data;
/* Wait to receive a byte */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) {//改用库函数。
//retry = 0;
//while( SPI1->SR & SPI_I2S_FLAG_RXNE == RESET ) { //原来的操作寄存器
retry++;
if(retry>200)return 0;
}
/* Return the byte read from the SPI bus */
//u8 a;
//a = SPI1->DR;
return SPI1->DR; //SPI_I2S_ReceiveData(SPI1); //·µ»Øͨ¹ýSPIx×î½ü½ÓÊÕµÄÊý¾Ý
}
后来我又改了一点代码,发现就可以直接return SPI1->DR了。就是把之前判断接收缓冲器为空用库函数实现,然后就可以了。 为什么
RE:关于STM32的SPI发送的问题
RE:关于STM32的SPI发送的问题
RE:关于STM32的SPI发送的问题 【悬赏问答】
RE:关于STM32的SPI发送的问题 【悬赏问答】
SPI FLASH å®éª.rar
2012-11-27 12:51 上传
点击文件名下载附件
4.11 MB, 下载次数: 116