打印
[STM32F3]

SPI单线双向与ILI9342通信,只能写不能读

[复制链接]
1799|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yangwc|  楼主 | 2017-12-27 09:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

采用STM32F373的SPI与ILI9342单线双向通信,可以往ILI9342写显示数据。由于用到了STemWin,要从ILI9342读显示数据,应该是将数据传输方向由SPI_Direction_1Line_Tx设置为SPI_Direction_1Line_Rx就可以了。但是实测不成功,而且只要往ILI9342发送了0x2e指令(Memory Read),再往ILI9342发指令就无效。
沙发
Cjy_JDxy| | 2017-12-27 09:17 | 只看该作者
怎么叫单线双向通信,SPI不是有收的线和发的线吗

使用特权

评论回复
板凳
yangwc|  楼主 | 2017-12-27 10:06 | 只看该作者
Cjy_JDxy 发表于 2017-12-27 09:17
怎么叫单线双向通信,SPI不是有收的线和发的线吗

半双工

SPI单线双向通信.png (36.32 KB )

SPI单线双向通信.png

使用特权

评论回复
地板
Cjy_JDxy| | 2017-12-27 10:09 | 只看该作者

奥,我想错了

使用特权

评论回复
5
幸福小强| | 2017-12-27 18:52 | 只看该作者
应该可以和吧,写的时候就只写,读的时候就只读。

使用特权

评论回复
6
yangwc|  楼主 | 2018-1-3 15:28 | 只看该作者

接收数据之前将将数据传输方向由SPI_Direction_1Line_Tx设置为SPI_Direction_1Line_Rx,
数据接收完毕后,又将数据传输方向由SPI_Direction_1Line_Rx设置为SPI_Direction_1Line_Tx,
目前可以成功读取一个点的像素值。但是读取完毕后就不能向ILI9342写数据。

使用特权

评论回复
7
yangwc|  楼主 | 2018-1-5 09:50 | 只看该作者
ILI9342的数据手册上给出了4线SPI模式下18bit时读出数据的格式。但是没有给出16bit时读出数据的格式。尝试过如下图所示的两种方式,当SPI波特率设置为36MHz时,方式一可以正确读出一次RAM内的显示数据,当SPI波特率设置为18MHz及以上时,通过方式二可正确读出RAM内的数据。但是由于读数据时发送了0X2E(Read memory RAM command),后续向ILI9342发送指令、数据无效,无法继续控制ILI9342。另外,ILI9342的数据手册中4-line SPI时序图中的Output Disable time 要求的范围是90ns-95ns。怎么会限制得这么死?

Access time & Output Disable time.png (307.27 KB )

Access time & Output Disable time.png

Read RAM data through 4-line SPI mode.png (82.24 KB )

Read RAM data through 4-line SPI mode.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

32

帖子

0

粉丝