硬汉嵌入式论坛

 找回密码
 立即注册
查看: 814|回复: 5
收起左侧

[HAL] HAL_SPI_TransmitReceive函数里面的数据收发问题

[复制链接]

5

主题

12

回帖

27

积分

新手上路

积分
27
发表于 2022-12-14 17:07:48 | 显示全部楼层 |阅读模式
各位大佬下午好。
我看HAL_SPI_TransmitReceive函数,发现该函数是发一次数据,接收一次数据,通过txallowed这个变量进行切换的。那万一如果收不到数据,没有将txallowed设置回1,那不是一直不能发数据了吗?
没太看懂这时怎么回事,有大佬帮忙解释一下吗?万分感谢。

image.png
image.png
回复

使用道具 举报

3

主题

66

回帖

75

积分

初级会员

积分
75
发表于 2022-12-14 17:23:47 | 显示全部楼层
SPI不会没有数据,有时钟就有采样,有采样就有数据,至于是不是从机发的,就不归SPI管的了
回复

使用道具 举报

5

主题

12

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2022-12-14 17:46:16 | 显示全部楼层
kingdjh 发表于 2022-12-14 17:23
SPI不会没有数据,有时钟就有采样,有采样就有数据,至于是不是从机发的,就不归SPI管的了

感觉你回答的和我问的不是一个事情
回复

使用道具 举报

4

主题

46

回帖

58

积分

初级会员

积分
58
发表于 2022-12-15 11:59:25 | 显示全部楼层
二楼其实说明白了,你没有理解SPI的传输信号规则,SPI主机发送数据的时候,产生SCK,发出一个数据MO,采集一次SO,所以单次发五个数据就能采样到五个数据,这个你可以看看模拟SPI的实现方式.
回复

使用道具 举报

5

主题

12

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2022-12-15 14:35:39 | 显示全部楼层
dengxiaojundink 发表于 2022-12-15 11:59
二楼其实说明白了,你没有理解SPI的传输信号规则,SPI主机发送数据的时候,产生SCK,发出一个数据MO,采集一次SO ...

谢谢大佬解答。我其实不太明白的是发送数据的同时,如果接受信号上面没有数据的话,会设置接收缓冲器非空吗?再退一步讲,如果把接收那条信号线断开的话,会设置接收缓冲器非空吗?
回复

使用道具 举报

4

主题

46

回帖

58

积分

初级会员

积分
58
发表于 2022-12-15 19:07:34 | 显示全部楼层
凉粉 发表于 2022-12-15 14:35
谢谢大佬解答。我其实不太明白的是发送数据的同时,如果接受信号上面没有数据的话,会设置接收缓冲器非空 ...

你得理解一下什么是数字电路的信号,就是一个电平,哪怕是悬空,总也得有个电平吧
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 20:34 , Processed in 0.294396 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表