SPI傳輸問題

我們最近使用CH32V305的SPI遇到一點問題,請教一下如何解決。

一、CH32V305作為Master

1.?NSS設(shè)為硬件模式,主循環(huán)中查詢發(fā)送,NSS無電平變化;

image.png

image.png

主循環(huán)查詢收發(fā)

image.png

主機連續(xù)發(fā)送0xA5,從機發(fā)送0x5A,多次發(fā)送后數(shù)據(jù)出錯

從機收到的數(shù)據(jù):

image.png

主機收到的數(shù)據(jù):

image.png

示波器抓信號,NSS無電平變化,一直是低電平:

image.png

2.?NSS腳設(shè)為IO口,發(fā)送時拉低,收到數(shù)據(jù)后拉高:

image.png

image.png

現(xiàn)象和1一樣,但是NSS有反應(yīng),但是沒有持續(xù)拉低,見下圖:

image.png

放中斷里也是類似的現(xiàn)象

3.?主循環(huán)查詢發(fā)送,中斷接收,NSS波形正常,收發(fā)數(shù)據(jù)正常

image.png

image.png

image.png

CH32V305作為主機,雖然這個狀態(tài)OK,但是實際上還是有點問題的,從機的CPHA0,主機要設(shè)置成1才能正常收到數(shù)據(jù),但是主機無論CPHA0還是1收數(shù)據(jù)都是OK的,而且目前最高速度只能設(shè)置成32分頻,再快傳輸就會出錯。

image.png

從下圖波形中可以看出,從機是在下降沿,即第一個邊沿去拉MISO,但是主機這邊按照第一個邊沿去讀就始終是錯誤的數(shù)據(jù),沒辦法只能從第二個邊沿去讀數(shù)據(jù)才正常。

image.png

CH32V305作為主機有極性問題和傳輸速率問題,那如果設(shè)置成從機會不會有問題呢?

二、?CH32V305作為Slave

CLK3.3MHz,也是查詢發(fā)送,中斷接收,主機連續(xù)發(fā)送256個字節(jié)的數(shù)據(jù),數(shù)據(jù)詳見下圖,從機一直發(fā)送0xA5

image.png

第一包數(shù)據(jù)主從機收到的前面幾個字節(jié)是錯誤的。

image.png

image.png

第二包數(shù)據(jù)開始正常,但是連續(xù)發(fā)送多包數(shù)據(jù)之后數(shù)據(jù)又出錯了

主機接收數(shù)據(jù):

image.png

從機接收數(shù)據(jù):

image.png

代碼配置見下圖:

image.png

image.png

image.png

image.png

傳輸時,隔一段就會出錯一次

image.png

主機在傳送連續(xù)數(shù)據(jù)是,NSS是一直拉低狀態(tài),比如一次性傳輸256個字節(jié),這256個字節(jié)的傳輸期間,NSS都是低電平,CH32V305是否不支持這種連續(xù)數(shù)據(jù)傳輸?

三、問題求解

CH32V305作為從機更符合我們的使用場景,所以麻煩幫忙解答一下以下問題:

1.機在傳送連續(xù)數(shù)據(jù)是,NSS是一直拉低狀態(tài),比如一次性傳輸256個字節(jié),這256個字節(jié)的傳輸期間,NSS都是低電平,CH32V305是否不支持這種連續(xù)數(shù)據(jù)傳輸?

2.傳輸出錯可能是什么原因?qū)е碌??我們的軟件配置有沒有問題?如何解決出錯的問題?

3.目前高速率傳輸時,數(shù)據(jù)傳輸不穩(wěn)定,高速率SPI傳輸下,需要注意哪些地方?



補充一個問題:

4.作為從機,開機第一次傳輸數(shù)據(jù),前面幾個字節(jié)總是錯誤的,這個是什么問題導(dǎo)致的?如何解決?


您好,關(guān)于你的問題:

1、關(guān)于硬件SPI使用硬件NSS片選引腳時,當(dāng)選擇設(shè)備拉低之后,無法自動拉高恢復(fù)高電平。即數(shù)據(jù)發(fā)送完成后,NSS引腳不會自動拉高,需要通過SPI_SSOutputCmd(?SPI1,?DISABLE?)函數(shù)或SPI_Cmd(?SPI1,?DISABLE?)函數(shù)關(guān)于SPI模塊來恢復(fù)高電平,如下圖,SPI工作過程中一直是低電平的,DISABLE之后拉高。

注意,關(guān)閉SPI模塊后,NSS引腳也就失去了內(nèi)部輸出控制,此時輸出處于懸空狀態(tài),引腳電平未知。建議可以加一個上拉電阻,NSS引腳在被釋放后會拉高。

當(dāng)你使用軟件片選時,在輪詢中拉高拉低,片選拉高拉低是根據(jù)程序執(zhí)行時間來的,根據(jù)你截圖時間這應(yīng)該是差不多的。在中斷中,這個需要緩沖區(qū)為空才進(jìn)相應(yīng)的中斷,加上數(shù)據(jù)傳輸?shù)臅r間,所以波形查看是在數(shù)據(jù)完成之后拉高。

關(guān)于那個模式問題,正常主從模式配置一致是沒有問題的,你可以用附件例程測試一下,或你可主從都設(shè)置在模式0或模式2試一下

image.png?

2、根據(jù)你截圖配置,我測試輪詢收發(fā)是沒有問題的,如下圖,主從發(fā)的都是A5,具體可參考附件例程。注意保持主從設(shè)備之間接線的穩(wěn)定;

image.png?

3、高速率傳輸時,主從之間的接線要保持穩(wěn)定,CLK線之間可并兩根地線,主從設(shè)備之間可多連幾根地線試一下;

4、作為從機,時鐘是由主機提供的,可以開機上電同時上電試一下,可能是上電主從不一致導(dǎo)致的,比如從機已開始,但主機還沒給從機時鐘信號,導(dǎo)致前幾個字節(jié)傳輸出錯。

附件是我針對上述問題的一個測試驗證例程,你可以參考一下,后續(xù)問題溝通可通過郵箱(lzs@wch.cn)和我溝通。

icon_rar.gifCH32V305 SPI.zip



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

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