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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版