WCH552内置 SPI 模式驱动NRF24L01问题求大神解惑(同样 579 SPI 模式也无法驱动)

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


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


444.png


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


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


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


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

333.png


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


第二天不知道是什么情况,从其他地方复制了一段代码

 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)也可以了。。。。。。。


j_0016.gif




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