WCH552內(nèi)置 SPI 模式驅(qū)動(dòng)NRF24L01問(wèn)題求大神解惑(同樣 579 SPI 模式也無(wú)法驅(qū)動(dòng))

?想用CH559的SPI驅(qū)動(dòng)NRF24L01 檢測(cè)失敗以后,換為WCH552, 因?yàn)?52能百度到歷程


?用CH552 的SPI0 驅(qū)動(dòng)NRF24L01? ,歷程代碼應(yīng)該是基于51 GPIO直接操作SCK=0,SCK=1,一個(gè)一個(gè)位傳輸?shù)?


444.png


貌似并沒(méi)有用SPI0的功能,于是我想測(cè)試配置SPI0 配置 模式0(空閑低電平)來(lái)驅(qū)動(dòng),但是始終不行。


111.pngSPI復(fù)位值?SPI0_CTRL是?02,?我加了?圈起來(lái)的??設(shè)置成?模式0?怎么反而會(huì)不行了?


222.png
MISO?和MOSI??SCK?設(shè)置0是禁止輸出,看模式3是MISO?禁止,其他兩個(gè)應(yīng)該是可以輸出?


SCK和MOSI不是應(yīng)該可以輸出么,為啥設(shè)置了反而不行

333.png


驅(qū)動(dòng)失敗可能有很多情況,主機(jī)沒(méi)有輸出波形、SPI操作流程不對(duì)等等
可以用邏輯分析儀直接對(duì)SPI總線進(jìn)行監(jiān)控。CH552和CH559SPI較為相似,CH579 SPI使用上稍有不同。


第二天不知道是什么情況,從其他地方復(fù)制了一段代碼

?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




只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频