bosko lekovic
/
IO_spi
IO spi
Diff: temp/IOgpiospi.cpp
- Revision:
- 7:4aa3dac73b66
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/temp/IOgpiospi.cpp Sun Mar 21 18:20:15 2021 +0100 @@ -0,0 +1,56 @@ +#include "IOgpiospi.h" + +#include "Pinovi.h" +/*************************************************************************************************************************************** */ +// mosi = PTD6, miso = PTD7, clock = PTD5 + + + +C_gpioSpi::C_gpioSpi( /*PinName Mosi, PinName Miso, PinName spiClock*/) +{ + p_MOSI = new DigitalIn( Mosi, PullUp); + p_MISO = new DigitalOut( Miso, 1); + p_SpiClock = new InterruptIn( SpiClock, PullUp); + + + + bitCount = 0; + p_SpiClock->fall( [this](){ spiClockCount_fun(); } ); +} + +void C_gpioSpi::spi_monitor( void ) +{ + static char old_bit=0; + if( old_bit && bitCount && (old_bit == bitCount) ) { bitCount=0;} + old_bit = bitCount; + +} + +void C_gpioSpi::spiClockCount_fun(void) +{ + + bitCount++; + + readData <<= 1; + if( p_MOSI->read() ) readData |= 1; + else readData &= (~1); + + if( writeData & 0x80 ) p_MISO->write(1); + else p_MISO->write(0); + writeData <<= 1; + + if(bitCount>=8) + { + bitCount = 0; + // if(transfer_fun) transfer_fun( &writeData, readData ); + + + + spiByteTransfer( &writeData, readData); + + } + + } + + +