stm32L011, spi读ili9325出问题了,只在第一次正确,求教

2019-12-18 18:47发布

本帖最后由 huarana 于 2018-9-21 18:18 编辑

最近在调stm32L011的 lcd刷屏,  采用硬件spi

hal库配合寄存器的写法。  在读取ID的时候复位第一次读取正确为 009325 (舍掉高位00就是正确的的id),第二次以后读出来就成了 250093了,

逻辑分析仪抓取发现数据一致都是正确的  009325  ,特来求教。
程序是参考HAL库写的,简化版。
  1.                 LCD_CS_LOW();
  2.                         __HAL_LOCK(&hspi1);
  3.                         SPI_1LINE_RX(&hspi1);
  4.                         __HAL_SPI_ENABLE(&hspi1);
  5.                         for(i=0;i<3;i++)
  6.                                         {
  7.                                         while(__HAL_SPI_GET_FLAG(&hspi1,SPI_SR_RXNE) == RESET);       
  8.                                               temp1[i] = SPI1 -> DR;
  9.                                         while(__HAL_SPI_GET_FLAG(&hspi1,SPI_SR_BSY) == SET);
  10.                                         }               
  11.                         __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
  12.                         __HAL_SPI_DISABLE(&hspi1);
  13.                         __HAL_UNLOCK(&hspi1);
  14.                 LCD_CS_HIG();
  15.                 t = temp1[1];
  16.                 t <<= 8;
  17.                 t |= temp1[2];
  18.         return t;  
复制代码

如下图:
QQ图片20180921091959.png (8.01 KB, 下载次数: 0) 下载附件 2018-9-21 18:14 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。