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

SPI看懵了,求解啊

[复制链接]
数码小叶 提问时间:2015-7-9 10:14 /
如图所示:
捕获11.PNG
1:为什么SPI在写的时候最后要去判断接收缓冲区呢?

捕获12.PNG

2:同样,接收数据的时候要往发送缓冲区写入0xFF
收藏 评论11 发布时间:2015-7-9 10:14

举报

11个回答
星辰一方 回答时间:2015-7-9 10:22:36
大概是SPI这个通讯协议本质就是:移位操作,接收一位同时发一位……
个人理解,仅供参考
creep 回答时间:2015-7-9 10:46:54
1、SPI在写的时候可以不用判断接收缓冲区。
2、SPI在接收的时候因为是主模式所以要向从设备写数据提供时钟,这个时候写的数据具体是什么应该关系不大。

建议调用库函数处理发送接收数据。
  1. HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
复制代码

moyanming2013 回答时间:2015-7-9 10:56:30
creep 发表于 2015-7-9 10:46
1、SPI在写的时候可以不用判断接收缓冲区。
2、SPI在接收的时候因为是主模式所以要向从设备写数据提供时钟 ...

学习了。。。
支持使用库
stary666 回答时间:2015-7-9 11:13:00
自己写就行了
lkl0305 回答时间:2015-7-9 11:36:01
这个建议楼主找个spi的基础知识看看先,然后再看程序
魅影迷踪 回答时间:2015-7-9 12:30:39
时序要求吧
jcx0324 回答时间:2015-7-9 13:06:27
读的时候也是需要发数据过去的
风子 回答时间:2015-7-9 16:12:32
SPI是环形移位寄存器的数据交换,你得给从机发数据(一般发0),才能读得需要的从机数据,同时发数据也提供时钟
watershade 回答时间:2015-7-9 20:40:01
SPI只有一个sbuf,不想UART收发各有一个缓存。当你接受的时候,向缓存里面写入0xff(其实别的也可以,只要另一个设备忽略你发送的信息即可。)

假设你是从机,如果主机没有刻意向SBUF里面写东西,那当你读数据时将读会status。

SPI收发

SPI收发

这张图是官方的图。收发各有一个buf。当sck发送心跳时,一个心跳移动一位,这其实就是个串行移位寄存器。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版