Re: 請教關於使用C18 中軟體SPI進行讀取的問題....
|
||||
---|---|---|---|---|
新會員
|
謝謝 ~!
發表於: 2005/10/12 12:19
|
|||
|
Re: 請教關於使用C18 中軟體SPI進行讀取的問題....
|
||||
---|---|---|---|---|
初級會員
|
Yes!
應該用 char chX; chX = WriteSWSPI( 0x0); 來讀取就可以了。
發表於: 2005/10/12 11:57
|
|||
|
Re: 請教關於使用C18 中軟體SPI進行讀取的問題....
|
||||
---|---|---|---|---|
初級會員
|
Dear Gorgeous,
lib 的 SPI (非 sw_SPI), 基本上是支援 SPI master 及 slave 的write 及 read. 但是您可以查一下 char WriteSWSPI( char output) 的原始碼, 您會發覺兩件事。 1. 它僅支援 Master Mode. 2. 當執行 WriteSWSPI() 的同時也自 Din 腳讀取資料, 並將讀取的資料 return 給呼叫者, 注意他的 prototype 是 char. 也就是說他同時是讀與寫的程式, 但是僅支援 Master Mode. 想一想,如果要寫一個的軟體驅動 SPI slave 的「通用程式」那會是多麼複雜的事. 1. 首先 SCK 應該要是具中斷功能的接腳, 這樣 SCK 就不能任意指定接腳. 2. 而且有收發訊的速度匹配問題, 沒人能擔保「通用程式」的必然適用性。SPI protocal 的 Master 可不會等 Slave,如果 Master的速度比較快時, 資料可是會 lost的。如果用 poll 的方式處理 SCK, 就更慘。 3. 即使 SCK 是選擇具中斷功能的接腳, 各接腳的中斷方式也各有不同, ISR 會因 device 及接腳而異, 這個通用程式不好寫. Lib 未支援, 恐怕與此也脫不了關係. 當然, 如果您能提供一隻 INT 接腳, 又不在乎速度。不妨用 WriteSWSPI() 改寫一個 Slave Mode的讀寫程式。若能貼出來供大家參考, 豈不造福萬民。
發表於: 2005/10/12 11:12
|
|||
|
請教關於使用C18 中軟體SPI進行讀取的問題....
|
||||
---|---|---|---|---|
新會員
|
MCU: pic18f4550
先前使用Hardware SPI 功能一切正常 目前因為需要用到int0 & int1外部中斷來量測訊號 腳位有衝突 因此想改用軟體模擬SPI介面 問題來了 我發現sw_spi.h 裡面沒有定義 getcSPI(); 怎摸會這樣呢??? 原來hardware的getcSPI是做以下事情..... unsigned char getcSPI( void ) { SSPBUF = 0x00; // initiate bus cycle while ( !SSPSTATbits.BF ); // wait until cycle complete return ( SSPBUF ); // return with byte read } 如果改用soft-spi 要如何處理呢???
發表於: 2005/10/12 1:56
|
|||
|