完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
F1用的官方库,SPI实现单发送驱动LCD,NSS片选不等数据发完就拉高了
GPIO_ResetBits(SPI2PORT, SPI2_NSS); //片选拉低 while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); //若发送寄存器数据未发送完,循环等待 SPI_I2S_SendData(SPI2, Byte); //往发送寄存器写入要发送的数据 // while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); //此句完全没用 GPIO_SetBits(SPI2PORT, SPI2_NSS); //片选拉高 配置的: SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx; //SPI设置为单线发送模式 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //软控 |
|
相关推荐
2个回答
|
|
TEX 发送为空的标志位是表明发送寄存器为空,可以写进新的发送值,但这时之前的数据在总线的移位寄存器上,还没有完全发送出去,因为发送出去需要一定的时间。
因此,楼主可以改为判断BUSY的寄存器,保证总线发送完成后再拉高片选线。 |
|
|
|
可能的原因有以下几种:
1. NSS的引脚配置不正确:确保NSS引脚配置为输出,并使能上拉电阻。 2. SPI的帧大小设置不正确:确保SPI的帧大小与LCD通信协议的要求相匹配。 3. SPI通信模式设置不正确:确保SPI的通信模式配置为主机模式,NSS由主机控制。 4. SPI发送数据的时钟频率过高:降低SPI的时钟频率,确保LCD可以及时接收到数据。 5. SPI发送数据的方式不正确:确认SPI发送数据的方式是连续发送还是使用DMA发送,确保发送完成前NSS保持低电平。 6. 其他硬件或软件问题:可能存在其他硬件或软件问题导致NSS在数据发送完毕前就拉高,如中断处理程序错误、时钟设置问题等等。 |
|
|
|
只有小组成员才能发言,加入小组>>
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
435 浏览 1 评论
285 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
249 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
615 浏览 2 评论
645 浏览 2 评论
1382浏览 9评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
80浏览 3评论
43浏览 3评论
STM32CUBEMX4.22.1在main函数里面添加一行语句就死机的原因?
55浏览 3评论
49浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-2 04:08 , Processed in 0.478083 second(s), Total 42, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号