ST意法半导体
直播中

神之小风

12年用户 863经验值
私信 关注
[问答]

为什么我的SPI从机只发送一个字节?

我正在尝试读取绝对旋转编码器 ( AMT22B-V ) 的位置。我将它连接到 Nucleo G474RE 板上。在STM32CubeIDE项目的main.h文件中,我有如下声明:
#define BUFFERSIZE (COUNTOF(aTxBuffer) - 1)
在 main.c 文件中,我有以下代码:
uint8_t aTxBuffer[] = {0x00, 0x00};
uint8_t aRxBuffer[BUFFERSIZE];
HAL_SPI_TransmitReceive(&hspi1, (uint8_t *)aTxBuffer, (uint8_t *)aRxBuffer, BUFFERSIZE, 5000);
我正在 MOSI 上传输 0x00 0x00 读取命令,并希望在 MISO 上接收到描述编码器位置的 2 个字节。然而,当我用示波器的逻辑分析仪功能探测线路时,我发现当我转动编码器时,只有一个字节在变化;另一个没有改变。见下图。另外,我将 SPI 数据大小设置为 16 位。我感觉这个问题与 BUFFERSIZE 参数有关。任何帮助深表感谢。










回帖(1)

谢云生

2023-2-3 14:33:30
查看数据表中的时序图。两个字节之间需要 2.5 µs 的延迟。
发送一个字节,在接收到第一个字节后等待 2.5 µs,然后发送第二个字节,在它们之间不增加 CS#。
还要注意其余的时序参数。
举报

更多回帖

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