STM32F103与主控 ILI9341的液晶屏TFT通过SPI1通讯问题

2019-07-21 07:14发布

最近在写一个使用SPI通讯的代码,MCU是原子的STM32F103芯片,LCD_TFT主控是ILI9341,想使用SPI的4线通讯。
我是个小白,遇到有以下几个问题,希望高手能帮忙分析一下
问题1、SPI 4线通讯引脚是CSX(片选)、D/CX(4线的寄存器或数据选择)、SCK(时钟信号)、SDI(MOSI数据输入)、SDO(MISO数据输出)
          这几个引脚都要连接吗?我想获取主控型号(9341)再写入数据,是不是就要接SDO这根线才能获取到主控?
问题2、在画原理图的时候 是不是显示屏的SDI接STM32的MOSI,SDO接STM32的MISO引脚(我认为是这个),
          还是显示屏的SDI接STM32的MISO,SDO接STM32的MOSI引脚?


问题3、我使用的是SPI 4线接口,要看ILI9341的4线时序图,但我在网上看到有人用普通IO口模拟SPI通讯,既然普通的IO口都可以根据时序图去写SPI 4线的函数,
          那就是说LCD的引脚不一定要接到STM32的SPI1接口上,那STM32的SPI1复合引脚又有什么意义呢?普通IO口模拟SPI和STM32的SPI有什么区别呢?






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
yyx112358
2019-07-21 08:47
本帖最后由 yyx112358 于 2016-8-14 19:49 编辑
xia_yangchun 发表于 2016-8-14 17:17
hi,刚看了你的源码,有几个问题,关于写寄存器和写数据有点不明白
//写寄存器函数
//regval:寄存器 ...

这是作了一个速度上的优化。液晶屏的命令都是8位格式,而数据则是16位的。平常一般多数时间都是在写数据(至少99%吧)所以默认为16位,而需要发送命令的时候就先设定成8位发完命令再改成16位
SCK、MISO、MOSI都是STM32的硬件自动管理发送数据(向SPI的DR写数据,然后STM32自动生成相应时序,并且在发送完成后设定相应标志位,如果设置了,还会生成中断),源码里就是调用SPI_ReadWriteByte(SPI1,regval);
这是我参考的程序,没有优化过,不过比较好懂
STM32测试程序.rar (473.51 KB, 下载次数: 3667) 2016-8-14 19:49 上传 点击文件名下载附件

一周热门 更多>