STM32Cube_FW_F2_V1.1.0库(HAL库)SPI通信的HAL_SPI_Transmit函数;HAL_SPI_Receive函数;HAL_SPI_TransmitReceive函数的困惑

小妹困惑已久,请牛人指导!!!!!
HAL_SPI_Transmit函数;HAL_SPI_Receive函数;HAL_SPI_TransmitReceive函数,这三个函数困惑了我很久,看函数名称,HAL_SPI_Transmit函数貌似是用来发送数据的,HAL_SPI_TransmitReceive函数用来接收数据,那HAL_SPI_TransmitReceive函数用在什么时候?而且这个函数的参数既有发送数据也有接收数据,如果调用,发送和接收参数都要赋值了?如果赋值了,等执行完这个函数后,我的发送和接受参数的值如何变化?
已邀请:

admin

赞同来自:

把那边的回答复制过来~~

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。
是一种高速的,全双工,同步的通信总线.
HAL_SPI_TransmitReceive
就是用在了这里,同步传输
即,在主机和从机同时传递数据,依据的都是SCK主机提供的时钟,嗯,就这样

浅浅

赞同来自:

你好,谢谢您给我的解答,SPI的意思和协议什么的,我是知道的,我是想知道SPI通信时候以上这些函数是在什么情况下调用,主要是应用上面的问题,不知道您可否能给予解答,谢谢了
匿名用户

匿名用户

赞同来自:

不知道现在楼主对着三个函数的理解怎么样了?我用HAL_SPI_TransmitReceive()在SPI1和SPI2之间传输数据,发现并没有数据的传输,是不是这个函数的使用有什么启动代码或者什么条件实现调用还是说直接可以用了。。我只是调用了两次HAL_SPI_TransmitReceive函数,一次是SPI1,一次是SPI2,然后用串口输出他们接受的数,结果没有数据输出是错的,一个全是输出00,另一个有时会会输出ff或者其他,也有00
HAL_SPI_Transmit函数 只发送不接收(实际是讲接收到的数据全部抛弃)
HAL_SPI_Receive函数 只接受,不发送(实际是发送0xff)
HAL_SPI_TransmitReceive 发送接收同步进行,这个才符合SPI的工作原理,前两个只能说是SPI首发的一种特殊情况

alloycn

赞同来自:

函数里面有注释:

Transmit an amount of data in blocking mode.

Receive an amount of data in blocking mode.

Transmit and Receive an amount of data in blocking mode.

往事随风1995

赞同来自:

按好心情说的去理解,我这边也有现成的spi主从通信的代码,需要的话发给你

KIC,锡膏测厚仪

赞同来自:

不能理解HAL_SPI_TransmitReceive,从机在没有接收完主机发来的指令,怎么知道返回什么数据呢?怎么同步传输呢?

要回复问题请先登录注册