WCH沁恒单片机
直播中

母猪会上树

9年用户 767经验值
擅长:电源/新能源
私信 关注
[问答]

WCH552内置SPI模式驱动NRF24L01检测失败如何解决?

想用CH559的SPI驱动NRF24L01 检测失败以后,换为WCH552, 因为552能百度到历程


用CH552 的SPI0 驱动NRF24L01  ,历程代码应该是基于51 GPIO直接操作SCK=0,SCK=1,一个一个位传输的.





貌似并没有用SPI0的功能,于是我想测试配置SPI0 配置 模式0(空闲低电平)来驱动,但是始终不行。


SPI复位值 SPI0_CTRL是 02, 我加了 圈起来的  设置成 模式0 怎么反而会不行了



MISO 和MOSI  SCK 设置0是禁止输出,看模式3是MISO 禁止,其他两个应该是可以输出

SCK和MOSI不是应该可以输出么,为啥设置了反而不行



  

回帖(2)

李腈

2022-5-24 10:29:32
驱动失败可能有很多情况,主机没有输出波形、SPI操作流程不对等等
可以用逻辑分析仪直接对SPI总线进行监控。CH552和CH559SPI较为相似,CH579 SPI使用上稍有不同。
举报

陈存楼

2022-5-24 10:29:40
第二天不知道是什么情况,从其他地方复制了一段代码
SPI0_SETUP &= ~(bS0_MODE_SLV | bS0_BIT_ORDER);              // Master模式, 高位在前
SPI0_CTRL = bS0_SCK_OE | bS0_MOSI_OE;                       // 模式0
SPI0_CK_SE = 0x04;                                          // 4分频
P1_MOD_OC |= (bMOSI | bMISO | bSCK | bSCS);
P1_DIR_PU |= (bMOSI | bMISO | bSCK | bSCS);
竟然可以了!
然后改回 SPI0_CTRL = 0x60;    就保留这一行,也可以,改回之前552 SPI0官方代码里的SPIMasterModeSet(0)也可以了。。。。。。。
举报

更多回帖

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