|
@@ -1,93 +0,0 @@
|
|
|
-#include "uni_avr_rpi.h"
|
|
|
-
|
|
|
-#ifdef __SWSPI
|
|
|
-#include "swspi.h"
|
|
|
-
|
|
|
-#ifdef __RPI
|
|
|
-//#define swspi_miso 9
|
|
|
-#define swspi_miso 10
|
|
|
-#define swspi_mosi 10
|
|
|
-#define swspi_sck 11
|
|
|
-#define SWSPI_CS 7
|
|
|
-#endif //__RPI
|
|
|
-
|
|
|
-
|
|
|
-#define SWSPI_DEL 0x0f //delay mask (0-3. bit, delay = 1 << DEL [us])
|
|
|
-#define SWSPI_POL 0x10 //polarity mask (4. bit, 1=inverted)
|
|
|
-#define SWSPI_PHA 0x20 //phase mask (5. bit)
|
|
|
-#define SWSPI_DOR 0x40 //data order mask (6. bit, 0=MSB first, 1=LSB first)
|
|
|
-
|
|
|
-#define SWSPI_SCK_UP if (swspi_cfg & SWSPI_POL) GPIO_CLR(swspi_sck); else GPIO_SET(swspi_sck);
|
|
|
-#define SWSPI_SCK_DN if (swspi_cfg & SWSPI_POL) GPIO_SET(swspi_sck); else GPIO_CLR(swspi_sck);
|
|
|
-
|
|
|
-unsigned char swspi_miso = 0;
|
|
|
-unsigned char swspi_mosi = 0;
|
|
|
-unsigned char swspi_sck = 0;
|
|
|
-unsigned char swspi_cfg = 0;
|
|
|
-
|
|
|
-void swspi_init(unsigned char miso, unsigned char mosi, unsigned char sck, unsigned char cfg)
|
|
|
-{
|
|
|
- swspi_miso = miso;
|
|
|
- swspi_mosi = mosi;
|
|
|
- swspi_sck = sck;
|
|
|
- swspi_cfg = cfg;
|
|
|
- GPIO_INP(swspi_miso);
|
|
|
- GPIO_OUT(swspi_mosi);
|
|
|
- GPIO_OUT(swspi_sck);
|
|
|
- GPIO_CLR(swspi_mosi);
|
|
|
- SWSPI_SCK_DN;
|
|
|
-}
|
|
|
-
|
|
|
-void swspi_tx(unsigned char tx)
|
|
|
-{
|
|
|
- int delay = 1 << (swspi_cfg & SWSPI_DEL));
|
|
|
- if (swspi_miso == swspi_mosi) GPIO_OUT(swspi_mosi);
|
|
|
- unsigned char i = 0; for (; i < 8; i++)
|
|
|
- {
|
|
|
- if (tx & 0x80) GPIO_SET(swspi_mosi);
|
|
|
- else GPIO_CLR(swspi_mosi);
|
|
|
- DELAY(delay);
|
|
|
- SWSPI_SCK_UP;
|
|
|
- DELAY(delay);
|
|
|
- SWSPI_SCK_DN;
|
|
|
- tx <<= 1;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-unsigned char swspi_rx()
|
|
|
-{
|
|
|
- int delay = 1 << (swspi_cfg & SWSPI_DEL));
|
|
|
- if (swspi_miso == swspi_mosi) GPIO_OUT(swspi_mosi);
|
|
|
- unsigned char rx = 0;
|
|
|
- unsigned char i = 0; for (; i < 8; i++)
|
|
|
- {
|
|
|
- rx <<= 1;
|
|
|
- DELAY(delay);
|
|
|
- SWSPI_SCK_UP;
|
|
|
- DELAY(delay);
|
|
|
- rx |= GPIO_GET(swspi_miso)?1:0;
|
|
|
- SWSPI_SCK_DN;
|
|
|
- }
|
|
|
- return rx;
|
|
|
-}
|
|
|
-
|
|
|
-unsigned char swspi_txrx(unsigned char tx)
|
|
|
-{
|
|
|
- int delay = 1 << (swspi_cfg & SWSPI_DEL));
|
|
|
- unsigned char rx = 0;
|
|
|
- unsigned char i = 0; for (; i < 8; i++)
|
|
|
- {
|
|
|
- rx <<= 1;
|
|
|
- if (tx & 0x80) GPIO_SET(swspi_mosi);
|
|
|
- else GPIO_CLR(swspi_mosi);
|
|
|
- DELAY(delay);
|
|
|
- SWSPI_SCK_UP;
|
|
|
- DELAY(delay);
|
|
|
- rx |= GPIO_GET(swspi_miso)?1:0;
|
|
|
- SWSPI_SCK_DN;
|
|
|
- tx <<= 1;
|
|
|
- }
|
|
|
- return rx;
|
|
|
-}
|
|
|
-
|
|
|
-#endif //__SWSPI
|