打印
[技术讨论]

硬件的spi单线怎么读写寄存器

[复制链接]
712|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我是萌新哈哈|  楼主 | 2024-10-12 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位哥哥姐姐们,硬件的spi单线传输怎么使用啊。
最近在用一款屏幕,是单线传输的,想要读取设备的ID或者其他寄存器,但切换spi的收发模式,就会出问题。
while(TFT_SPIx->SR & SPI_I2S_FLAG_BSY) {};                                // 等待SPI空闲
LCD_DC_Clr();                                                                                        // 写命令
TFT_SPIx->DR = 0x0C;                                                                    // 读取寄存器
while(TFT_SPIx->SR & SPI_I2S_FLAG_BSY) {};                                // 等待SPI空闲
LCD_DC_Set();       
                            
TFT_SPIx->CR1 &= ~(1<<14);          //切换到接收状态    B14 -> 0     B15 - >1       
GPIO_Set_Mode(TFT_SDA        , GPIO_TP_IPU);                 //上拉输入

while(TFT_SPIx->SR & SPI_I2S_FLAG_BSY) {};                //读数据  
uData =  SPI_I2S_ReceiveData(TFT_SPIx);
               
while(TFT_SPIx->SR & SPI_I2S_FLAG_BSY) {};
TFT_SPIx->CR1 |=  1 << 14;    //切换回发送状态

使用特权

评论回复

相关帖子

沙发
LcwSwust| | 2024-10-12 16:12 | 只看该作者
先用软件模拟SPI,整通了再来整硬件SPI。
依我之见,MCU作为主机,读从机返回数据时,也应对SPIx->DR写入数据才能产生SCK信号、从而得到返回数据;
也就是说发送与接收是同时进行的;
屏是从机,是不会主动产生SCK的。

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝