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条回答
HELLOKITTYNEW
1楼-- · 2019-07-15 19:21
我是采用mbed,还没有测试hal工程,具体也无法细讨论。在用mbed的过程中,从来买有遇到过不顺心的事。我以后试试hal工程吧。Sorry
子虚道人
2楼-- · 2019-07-15 22:25
 精彩回答 2  元偷偷看……
子虚道人
3楼-- · 2019-07-16 03:57
没辙了,把代码改成直接操作寄存器也不行,先不管了。
unsigned char spi_send (unsigned short outb) {
   /* Write and Read a byte on SPI interface. */

  SPI3->DR = outb;
  while (!(SPI3->SR & 0x02));                 /* Wait for transfer to finish */
//        while (!(SPI3->SR & 0x01));
  return (SPI3->DR);                      /* Return received value */

}

一周热门 更多>