最近在写一个使用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有什么区别呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
hi,刚看了你的源码,有几个问题,关于写寄存器和写数据有点不明白
//写寄存器函数
//regval:寄存器值
void LCD_WR_REG(u8 regval)
{
SPILCD_CS_RESET; //LCD_CS=0
SPILCD_RS_RESET; //命令
SPI1_SET_DATASIZE_8BIT; //该处不是很明白,为什么要设置8bit???
SPI_ReadWriteByte(SPI1,regval);
SPI1_SET_DATASIZE_16BIT; //该处不是很明白,为什么又要设置16bit???
SPILCD_CS_SET; //LCD_CS=1
}
还有一点就是我看了一下,你这个应该是先片选CS,然后在选命令或数据,然后那个8bit没看懂,然后就使用SPI发出命令(同时应该也在读取)然后就是16bit(这个没看懂),然后就把片选至”1“了,我看了一下我上面附的4线时序图,好像你这个只用到了RS(也就是DCX)和CS两个引脚,SCK和SDI、SDO都没用上???不是很懂?请教了,谢谢!
一周热门 更多>