STM32L4 SPI读数据,前3个字节永远是0

2019-07-14 15:19发布

以前用NXP的LPC系列,最近第一次用STM32就面对HAL库,操作一个SPI接口的A/D芯片和SPI Flash,用了HAL_SPI_Receive和HAL_SPI_TransmitReceive。之前先操作SPI的A/D芯片,奇怪的是每次读取数据前3个字节都是0,然后才能读到正确数据。 今天用HAL_SPI_Receive读SPI Flash的ID,读出来两个字节是0,后来觉得奇怪就多读了3个字节,发现正确的ID是3个0后的第4和5字节。
请问是不是HAL库的问题?哪位兄弟遇到过?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
子虚道人
1楼-- · 2019-07-14 22:45
刚才跟踪了一下,发现打了断点后能看到数据是正确的,但是不知道为什么就读不到。
吔屎蛋拉雷
2楼-- · 2019-07-15 02:19
一个字节一个字节读取数据试试看,不要两字节的读取数据。
子虚道人
3楼-- · 2019-07-15 04:13
 精彩回答 2  元偷偷看……
子虚道人
4楼-- · 2019-07-15 09:44
没有找到问题之前只能先这样改代码:
        HAL_SPI_Transmit(&hspi3, cmd, 4, W25Qx_TIMEOUT_VALUE);       
        HAL_SPI_Receive(&hspi3, odd, 3, W25Qx_TIMEOUT_VALUE);//先读不知道哪里来的3个0
        HAL_SPI_Receive(&hspi3,ID, 2, W25Qx_TIMEOUT_VALUE);
HELLOKITTYNEW
5楼-- · 2019-07-15 15:43
以前遇到类似问题,是AD未完成就开始读取数据。可以尝试AD完全完成后再读取传输。
子虚道人
6楼-- · 2019-07-15 18:59
jkklsd 发表于 1970-1-1 08:00

读SPI Flash的ID也是这样,必须先读3个空数据

一周热门 更多>