WCH沁恒单片机
直播中

qjqb

8年用户 1272经验值
擅长:5762
私信 关注
[问答]

CH573如果想实现两线SPI,应该如何连接,程序应该如何配置?

想使用ch573替代nrf24le1,发现ch573支持的SPI是四线的。如果想实现两线SPI,应该如何连接,程序应该如何配置?

查了些资料,有的mcu可以配置寄存器来设置。有的需要添加电路来实现。ch573的例程看了下是普通四线方式。看文档没有发现有配置两线的方法
  

回帖(1)

盛珺

2022-9-2 09:25:27
双线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;
举报

更多回帖

发帖
×
20
完善资料,
赚取积分