SPI library used to communicate with an altera development board attached to four zigbee-header pins.
Diff: mmSPI.cpp
- Revision:
- 5:b14dcaae260e
- Parent:
- 4:aa1fe8707bef
- Child:
- 6:b480fc4e87e5
--- a/mmSPI.cpp Wed Aug 14 14:47:12 2013 +0000 +++ b/mmSPI.cpp Wed Aug 14 15:13:05 2013 +0000 @@ -41,11 +41,31 @@ } //----------------------------------------------//------------------------------ - char mmSPI::transceive_byte(char cSend) // send/receive a byte. +// we're not going for speed, so lets go for good setup / hold. + void mmSPI::transceive_byte(void) // send/receive a byte. { - *pSCLK = 1; - - - + cReceive = 0; // clear receive byte. + for (cLoop01 = 7; cLoop01 >= 0; cLoop01++)// loop for 8 bits in the byte. + { + *pSCLK = 0; // SPI clock negedge. + wait(fSPIquarterP); // until middle of clock low. + *pMOSI = (cSend >> cLoop01) & 1; // assert MOSI. + wait(fSPIquarterP); // MOSI setup time + *pSCLK = 1; // SPI clock posedge. + wait(fSPIquarterP); // MISO setup time. + cReceive = cReceive | (*pMISO << cLoop01); + wait(fSPIquarterP); // finish-out cycle. + } } -//----------------------------------------------//------------------------------ \ No newline at end of file +//----------------------------------------------//------------------------------ + + + + + + + + + + +