發新話題
打印

SPI傳輸問題

SPI傳輸問題

我使用C8051F340作SPI傳輸遇到了一些問題遲遲無法解決,想請大家幫忙看看哪裡有錯。
我程式是參考範例及網路上找到的資料,這樣寫應該沒問題吧...

        while(!NSSMD0);
        NSSMD0=0;
        SPI0DAT=0xb5;
        while(!SPIF);
        SPIF=0;
NSSMD0=1;



SPI最大速度只能到250KHz嗎?SLAVE端也要設定跟MASTER一樣的速度嗎?我SLAVE端是用英飛凌的IC,在分析儀上抓到的波形不是跟MOSI的一樣,不然就是一值在0的位置,我SLAVE端的SPID資料設定跟MASTER的不一樣阿。這是代表我SLAVE端設定上有問題嗎?

TOP

1.      經測試, 兩個mcu spi對傳,  timing 正常, 都是8 個clock cycle. 如果是slave端多收到一個零,

可能 a.兩spi之間走線太長 造成接收端多收一個零.

    b. 接收端的slave timing比例快多收到一個零

     c. grounding 問題.

另一端使用spi slave code 要注意clock不要改變, 設定要和master一樣的傳輸時率才行.

不過從程式來見 nss pin都在low, 所以不可能是多送的問題. Clock timing也是對的,所以問題方向可能是在接收端.

上面測試使用Example code 中的 Spi master, spi slave要一起使用.

2.      master & slave data不同, 在互相對傳不同的data時 不太可能會收到相同的data, 只有同時兩邊buffer的data一樣才會出現這狀況. 最大可能

是要改變的data buffer 沒有寫入正確的值.

3.      可以, 只要不把int打開, 利用sw mode方式手動寫入啟動傳送bit ,再用sw mode監測(polling) spi的busy bit, 當busy bit進入ready/normal mode就可以對buffer做存取.

大概流程

Master à write data到bufferà開始傳送àpolling busy bità busy bit rdy data也就送出了.

Slave   à read data from buffer àpolling busy bit à接收完成 à busy bit rdy 可以讀data了

TOP

發新話題