你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F0系列SPI问题

[复制链接]
djj3343 提问时间:2013-10-2 16:57 /
刚着手移植STM32F030系列平台上,调SPI时发现个问题,使用SPI_I2S_SendDate16和SPI_I2S_ReceiveData16函数都没问题;但使用SPI_SendDate8和SPI_ReceiveData8收发时会卡在接收非空标志位SPI_I2S_FLAG_RXNE处,去掉检查标志位后会发现每次收到的数据是前一次SPI返回的数据,但程序原先使用的都是8位收发,改成16位有些麻烦,不知道应该如何解决,望指导
收藏 评论2 发布时间:2013-10-2 16:57

举报

2个回答
回答时间:2013-10-8 20:47:30

RE:STM32F0系列SPI问题

发的什么样的数据就用对应什么样的函数吧
fengye5340 回答时间:2013-10-9 11:45:18

回复:STM32F0系列SPI问题

应该是你的SPI配置问题。
这个是以前用在051R8上的SPI读写函数,可以参考一下
/*******************************************************************************
函数名称:SD_Write_Byte()
功    能:向SPI总线发送一个数据
参    数:无
返回值  :无
********************************************************************************/
void SD_Write_Byte(unsigned char dat)
{    
      /* 判断发送缓冲是否为空 */
      while(SPI_I2S_GetFlagStatus(SD_SPI, SPI_I2S_FLAG_TXE) == RESET);
      /* 发送字节 */
      SPI_SendData8(SD_SPI, dat); 
      /* 判断接收缓冲是否为空*/
      while(SPI_I2S_GetFlagStatus(SD_SPI, SPI_I2S_FLAG_RXNE) == RESET);
      /* flush data read during the write */
      SPI_ReceiveData8(SD_SPI);              
}   

/*******************************************************************************
函数名称:SD_Read_Byte()
功    能:从SPI总线读取一个数据
参    数:无
返回值  :无
*******************************************************************************/
unsigned char SD_Read_Byte(void)                    
{
     unsigned char Data = 0;
     /*  判断发送缓冲是否为空 */
     while (SPI_I2S_GetFlagStatus(SD_SPI, SPI_I2S_FLAG_TXE) == RESET)
     {
     }
     /*  发送字节 */
     SPI_SendData8(SD_SPI, 0xFF);

     /* 判断接收缓冲是否为空 */
     while (SPI_I2S_GetFlagStatus(SD_SPI, SPI_I2S_FLAG_RXNE) == RESET)
     {
     }
     /* 获取接收到的数据 */
     Data = SPI_ReceiveData8(SD_SPI);
     return Data;  
}
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版