[技术讨论] 硬件的spi单线怎么读写寄存器

[复制链接]
1293|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

粉丝
快速回复 在线客服 返回列表 返回顶部