OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5883|回复: 1

H7系列SPI:HAL_SPI_Transmit和HAL_SPI_Receive和HAL_SPI_TransmitReceive的区别

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-9-6
在线时间
1 小时
发表于 2021-4-8 23:46:23 | 显示全部楼层 |阅读模式
最近在调H745的SPI通信,通过SPI通信读取编码器值作为电机驱动的角度值。采用 HAL_SPI_TransmitReceive()函数能准确的读到编码器的值,发送0xA6,回传收4个字节,编码器的值在后3个字节中。如果先用HAL_SPI_Transmit()发送0xA6,再调用HAL_SPI_Receive()收取3给字节。发现数据不对。用示波器抓了一下波形,发现HAL_SPI_Transmit()发送完一个字节后,中间又等了一段时间时钟(时间有点长,比8个时钟周期还要长),数据线电平恢复为高,然后才进入到HAL_SPI_Receive()收的3给字节的数据。
我感觉是不是H7系列SPI的HAL_SPI_Transmit()和HAL_SPI_Receive()这两个库函数实现的有问题。


PS:SPI配置的是软件拉高拉低,8bit,10MHZ时钟,时钟极性是0,相位为0,MSB
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
656
金钱
656
注册时间
2019-7-28
在线时间
60 小时
发表于 2021-10-4 18:07:19 | 显示全部楼层
我也发现:HAL_SPI_TransmitReceive()、HAL_SPI_Transmit()和HAL_SPI_Receive()是3个功能不同的函数,不能相互组装使用。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 19:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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