【求助】CH573使用双线SPI

想使用ch573替代nrf24le1,发现ch573支持的SPI是四线的。如果想实现两线SPI,应该如何连接,程序应该如何配置?Snipaste_2021-05-19_11-59-50.jpg查了些资料,有的mcu可以配置寄存器来设置。有的需要添加电路来实现。ch573的例程看了下是普通四线方式。看文档没有发现有配置两线的方法

又仔细查看了文档。

Snipaste_2021-05-19_13-46-22.jpg


双线SPI, 是只有sck, sdio 模式吗

在ch57x 系列的soc上可以按照下面方式来实现:

//初始化
//sck0 初始化
GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_5mA);
//MISO 作为sdio初始化
GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_PD);

SPI0_MasterDefInit( );
//32 分频,主频32M 时候, 这里为1M,半双工下不建议速度太快,因为是软件控制,太快可能出现sdio PP输出打架的现象
R8_SPI0_CLOCK_DIV = 32;



//发送一个byte
R32_PA_DIR |= GPIO_Pin_15;
R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR;
R8_SPI0_CTRL_MOD |= RB_SPI_MISO_OE; 
//R8_SPI0_CTRL_MOD = 0X34;
R8_SPI0_BUFFER = data_tx;
while( !(R8_SPI0_INT_FLAG & RB_SPI_FREE) );
 
 
 
 
//接收一个byte        
R32_PA_DIR    &= ~GPIO_Pin_15;
R8_SPI0_CTRL_MOD &= ~RB_SPI_MISO_OE; 
R8_SPI0_CTRL_MOD |= RB_SPI_FIFO_DIR;
R8_SPI0_BUFFER = 0xFF;           // 启动传输
while( !(R8_SPI0_INT_FLAG & RB_SPI_FREE) );  
data_rx= R8_SPI0_BUFFER;



顶一下


顶一下


感谢3楼的例程。太清晰详尽了。


只有登录才能回复,可以选择微信账号登录