主題:EM9280-SPI通信問題 共有97799人關注過本帖 |
---|
yy |
1樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-11-4 9:08:00 [顯示全部帖子]
例程里是8bit的,你可能需要改成16bit的。
定義 private const int SSP_WORD_LENGTH_16BITS = 0xF; 然后后面 spiinit.eLength = SSP_WORD_LENGTH_16BITS; 而sSPI.BitCount是你要發送數據的長度,你確定是16嗎?還有波形有辦法發我郵箱下嗎?我郵箱yy@emtronix.com
|
單帖管理 | 引用 | 回復 |
yy |
2樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-11-4 11:06:00 [顯示全部帖子]
數據就是你要發送的數據的個數,如果填5,8bit就是5字節,16bit就是10字節。最后是有個波形給我們參考下。
[此貼子已經被作者于2013-11-4 11:51:59編輯過]
|
單帖管理 | 引用 | 回復 |
yy |
3樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-11-4 11:54:00 [顯示全部帖子]
修改下,前面說錯了,非常抱歉。BitCount的值為8或者16,分別表示8bits還是16bits。
有2個地方要修改 一個是SPIConfigure函數里的spiinit.eLength = SSP_WORD_LENGTH_16BITS; 一個是ReadFile或WriteFile時的SPI_INFO結構體sSPI.BitCount = 16; [此貼子已經被作者于2013-11-4 18:08:59編輯過]
|
單帖管理 | 引用 | 回復 |
yy |
4樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-11-4 17:55:00 [顯示全部帖子]
抱歉開始說錯了,我上面修改了,我測試了下程序.
修改SPI.cs spiinit.eLength = SSP_WORD_LENGTH_16BITS; 修改Program.cs TxBuffer[0] = 0xfc; TxBuffer[1] = 0xf3; TxBuffer[2] = 0x00; TxBuffer[3] = 0x00; TxBuffer[4] = 0x00; TxBuffer[5] = 0x00; TxBuffer[6] = 0x00; TxBuffer[7] = 0x00; TxBuffer[8] = 0x00; TxBuffer[9] = 0x00; sSPI.BitCount = 16; sSPI.pDatBuf = pTxBuffer; sSPI.dwDatLen = 1; sSPI.bLockCS = 0; Marshal.Copy(TxBuffer, 0, pTxBuffer, 10); bRes = SPI.WriteFile(hSPI, ref sSPI, sizeSPI, ref uLen, 0); 我看到的波形SPI_SCLK即CN9的3號腳輸出了16個脈沖。SPI_MOSI即CN9的4號腳是 11110011 11111100 正好是f3 fc說明是對了的。 程序發你郵箱了,波形圖不是太清楚 但是你應該能看出來。
[此貼子已經被作者于2013-11-4 18:39:21編輯過]
|
單帖管理 | 引用 | 回復 |
yy |
5樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-11-6 11:29:00 [顯示全部帖子]
readfile返回false最大可能是你的hSPI句柄不對,你看下句柄是不是-1?
如果句柄是-1,可能你同時跑了2個程序,SPI已經打開過了,重復打開失敗,你試下把之前那個先關了。
|
單帖管理 | 引用 | 回復 |
yy |
6樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-11-7 9:36:00 [顯示全部帖子]
我又看了下,如果懸空測的話,返回false是正常的,驅動是判斷spi通信是否成功,來返回true或false的。
[此貼子已經被作者于2013-11-7 9:36:00編輯過]
|
單帖管理 | 引用 | 回復 |
yy |
7樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2013-11-21 17:51:00 [顯示全部帖子]
抱歉,我們發現這個問題了。我們改下這個問題,改好了測試了我郵件聯系你。
現在你可以先不管這個返回值。
|
單帖管理 | 引用 | 回復 |