ST意法半导体
直播中

刘英

7年用户 1063经验值
私信 关注
[问答]

如何使用CubeMX生成的库对STM32H743 MCU进行编码?

我正在使用 CubeMX 生成的库对 STM32H743 MCU 进行编码。
我有 1 个 SPI 主机和 1 个从机。两者均配置为具有 Tx 和 Rx 两条线的完整 SPI。
Master 正在调用阻塞 HAL_SPI_Transmit() 或 HAL_SPI_Receive() 但绝不会同时调用 HAL_SPI_TransmitReceive() 。然而,库会将任何调用转换为 HAL_SPI_TransmitReceive()。从站配置为非阻塞 IT 模式以捕获任何方向的传输。
这是否意味着来自 Master 的单向事务将始终同时触发 Slave 的回调 HAL_SPI_TxCpltCallback() 和 HAL_SPI_RxCpltCallback() ?
换句话说,如果 Master 只发送,那么 Slave 不仅会收到它,还会通过移位环路完成将相同的回传给 Master?那么两个 catchup Callbacks 都是在 Slave 中触发的吗?这意味着 Slave 端无法区分 Master 的 Transmit-only 命令和 Master 的 TransmitReceive 命令?
我错过了什么吗?






回帖(1)

张永强

2022-12-13 13:51:53
回调将基于在从属端执行的调用。
HAL_SPI_Transmit_IT -> HAL_SPI_TxCpltCallback
HAL_SPI_Receive_IT -> HAL_SPI_RxCpltCallback
HAL_SPI_TransmitReceive_IT -> HAL_SPI_TxRxCpltCallback
我建议双方始终使用 TransmitReceive。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分