免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3402 | 回复: 0
打印 上一主题 下一主题

stm spi 主机不能接收从机发送的数据问题 集 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:41 |只看该作者 |倒序浏览

1. stm32的spi双机通信问题我的stm32 spi全双工通信,主机可以发送数据,从机可以接收数据,但是主机接受不到从机发送的数据,请大家帮帮忙

stmsky 发表于 2010-4-29 08:54

主机接收从机发来的数据的时候,要主动发送DUMMY字节提供时钟
http://www.stmsky.com/bbs/archiver/tid-4048.html

2. http://zhangyang.ip8.jspcn.net/posts/list/476.htm
  1. static u8 SPI_Read_Byte(void)
  2. {
  3.   //等待发送信号寄存器为非空,然后发送一个字节到spi总线上
  4.   while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
  5.   SPI_I2S_SendData(SPI1, 0x00);

  6.   //等待接收信号寄存器为非空,然后从spi总线上接收一个字节
  7.   while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) /* Wait to receive a byte */;
  8.   return SPI_I2S_ReceiveData(SPI1) /* Return the byte read from the SPI bus */;
  9. }

  10. //spi 写一个字节
  11. static void SPI_Write_Byte(u8 byte)
  12. {
  13.   //时序同发生字节一样,只是不返回读取的字节
  14.   while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) /* Loop while DR register in not emplty */;
  15.   SPI_I2S_SendData(SPI1, byte)/* Send byte through the SPI2 peripheral */;

  16.   while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) /* Wait to receive a byte */;
  17.   SPI_I2S_ReceiveData(SPI1) /* Return the byte read from the SPI bus */;
  18. }















您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP