為什么SPI_Read()調(diào)用后,第一次SPI通訊時鐘數(shù)不對,主機發(fā)送的數(shù)據(jù)也不對,第二次才正常,16個clk位,數(shù)據(jù)也正確。
函數(shù)調(diào)用參數(shù)賦值如下:
?ulong length=2;
??CH347SPI_Read(0,0x80,2,ref length,Read_buff)
為什么SPI_Read()調(diào)用后,第一次SPI通訊時鐘數(shù)不對,主機發(fā)送的數(shù)據(jù)也不對,第二次才正常,16個clk位,數(shù)據(jù)也正確。
函數(shù)調(diào)用參數(shù)賦值如下:
?ulong length=2;
??CH347SPI_Read(0,0x80,2,ref length,Read_buff)
就是我做了一個WPF的窗口,想通過此方法去和我的芯片進行SPI通信。輸入adress后轉(zhuǎn)為byte類型賦給read_buffer,點擊read按鈕進入對應的block,SPI初始化后,進行read操作。但是read按鈕第一下點擊,clk數(shù)量不對,點擊第二下,才正常
您好,可將API修改為CH347SPI_Read(0,0x80,0,ref length,Read_buff)來完成只讀操作,該API調(diào)用時,若oLength設置長度,則會先進行寫操作,再進行后續(xù)的讀操作,設置為0則為只讀應用。
OK啦,OK啦。
現(xiàn)在是正確的,我之前把SPI_SetDataBits()寫在SPI_Init后面了,然后SPI_READ估計錯亂了,正確的時序是先調(diào)用Init方法,緊跟著就SPI_read()
SPI_read()函數(shù),指定一個buffer[]數(shù)組,波形都沒問題,就是讀取結(jié)果為FF,然后用SPI_WriteRead()函數(shù),更奇怪了,buffer[0]是后發(fā)送的,buffer[1]先發(fā)送,然后返回值是先讀取的賦給buffer[1]
這些都是什么邏輯?
另外,我buff這么聲明OK的吧
發(fā)送兩個字節(jié),讀取兩個字節(jié)。16個clk,讀取的兩個字節(jié)是前八個和后八個clk對應的MISO信號是吧?問題到底在哪
以及,你所說的寫和讀,是針對從機的嗎?讀取從機對應地址中的數(shù)值,還是說讀取MISO的返回值?官方手冊的內(nèi)容太潦草了。本來很簡單的調(diào)用函數(shù),賦值,手冊上只提供了形參,連調(diào)用都懶得寫。導致使用者一頭霧水
可以啦可以啦。CH347SPI_SetDataBits賦值0x00,設為8bit一次。然后在初始化中把所有間隔設為0
好的,有問題隨時與我們溝通。如遇問題,結(jié)合硬件SPI排查會更快些。
相關(guān)SPI編程參考:https://blog.csdn.net/WCH_TechGroup/article/details/132173785?