本帖最后由 huarana 于 2018-9-21 18:18 编辑
最近在调stm32L011的 lcd刷屏, 采用硬件spi
hal库配合寄存器的写法。 在读取ID的时候复位第一次读取正确为 009325 (舍掉高位00就是正确的的id),第二次以后读出来就成了 250093了,
逻辑分析仪抓取发现数据一致都是正确的 009325 ,特来求教。
程序是参考HAL库写的,简化版。
- LCD_CS_LOW();
- __HAL_LOCK(&hspi1);
- SPI_1LINE_RX(&hspi1);
- __HAL_SPI_ENABLE(&hspi1);
- for(i=0;i<3;i++)
- {
- while(__HAL_SPI_GET_FLAG(&hspi1,SPI_SR_RXNE) == RESET);
- temp1[i] = SPI1 -> DR;
- while(__HAL_SPI_GET_FLAG(&hspi1,SPI_SR_BSY) == SET);
- }
- __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
- __HAL_SPI_DISABLE(&hspi1);
- __HAL_UNLOCK(&hspi1);
- LCD_CS_HIG();
- t = temp1[1];
- t <<= 8;
- t |= temp1[2];
- return t;
复制代码
如下图:
QQ图片20180921091959.png (8.01 KB, 下载次数: 0)
下载附件
2018-9-21 18:14 上传
明显,上一次返回的0x25被算作了第一个数据
一周热门 更多>