使用stm32f103的SPI接口連接CH376評估板,原來測試時使用stm32f103的SPI1口曾經(jīng)完成了讀寫u盤,現(xiàn)因需要改用了SPI2口與CH376評估板連接,接線和程序都做了相應(yīng)的改動,但卻無法讀寫u盤了,設(shè)置斷點檢查,發(fā)現(xiàn)CH376初始化無法通過,返回錯誤代碼0XFA,用示波器查看CH376的SCK,DI,DO都有對應(yīng)的波形出現(xiàn),SCK是時鐘波形,DI的波形數(shù)據(jù)是0X06,0X65兩個字節(jié), DO的波形數(shù)據(jù)是0XB0,0X87,0X67三個字節(jié),不知什么地方出錯誤了.能通過CH376返回的 0XB0,0X87,0X67三個字節(jié)進行判斷嗎?請大家給予幫助,謝謝!
從你示波器抓到的數(shù)據(jù)看,你的測試命令沒有通過。正確的DO上的波形數(shù)據(jù)是0X9A,主要檢查你SPI2的接線和配置是否正確?
謝謝!我再查查看.
我試了多種方法都不能使用stm32f103的SPI2口讀寫u盤,感覺stm32f103的SPI2的設(shè)置應(yīng)該沒有問題,接線也沒有問題,因為使用示波器既可以在ch376的DI上看到stm32發(fā)給它的輸入數(shù)據(jù)(0X06,0X65),也可以在ch376的DO上看到它發(fā)給stm32的輸出數(shù)據(jù).時鐘波形也正常.就是CH376初始化無法通過.設(shè)置斷點檢查,發(fā)現(xiàn)初始化時DO輸出的數(shù)據(jù)經(jīng)常變化,大多為0X65,0X67,0XE5等內(nèi)容有時也有0X9A出現(xiàn),多數(shù)在對CH376斷電復(fù)位后首次進行初始化時出現(xiàn)0X9A,即使出現(xiàn)0X9A,也不能建立文件和讀寫u盤.CH376評估板的指示燈有時可以點亮,有時不能點亮.為驗證ch376是否正常,我又在同一塊板子,使用同一個程序(把配置和接線都改回SPI1接口)運行程序,SPI1口讀寫u盤建立文件正常.說明CH376評估板沒有問題.真不知該如何處理才好.請大家給予幫助,謝謝!
這個時候建議你看下載你發(fā)送測試命令的時候,也就是在CS拉低之后到發(fā)送測試命令的時間是多少?還有單片機上電之后是否做了50MS以上的延時?
好的,我試試
在CS拉低之后到發(fā)送測試命令的時間是1.26us
上電之后的延時時間應(yīng)該是足夠,我一直在使用MDK進行復(fù)位,運行測試.ch376沒有斷電.
對不起,我看錯了,應(yīng)該是cs一直是高電平,初始化時cs先拉低17us后,又置高3us,再拉低1.26us后時鐘脈沖出現(xiàn).如果按第一次拉低算起,應(yīng)該是21.26us后時鐘脈沖出現(xiàn). 我比較了一下spi1和spi2兩個口的波形基本一致,spi2只是在cs脈沖第二次拉低后,1.26us左右出現(xiàn)時鐘脈沖,而spi1口在cs脈沖第二次拉低后,0.9us左右就出現(xiàn)時鐘脈沖.這點差距應(yīng)該不會有影響吧.
好了,原因找到了,stm32的spi1和spi2的時鐘頻率不同,我沒有修改spi2的時鐘配置,這樣雖然接線正確,時鐘波形和輸出數(shù)據(jù)都有,但ch376的初始化就是無法通過.修改spi2的時鐘配置后,初始化通過,讀寫u盤正常.謝謝大家的幫忙!
在嗎?? 聯(lián)系我? 加我QQ 994099840
你好:
TO ZHANGKAI:
看你好像有376的問題需要問,你可以單獨發(fā)個帖子,將你的問題貼出來。