int SPI_setClockMode(int spidev_fd, uint8_t clock_mode) { uint8_t mode; mode = SPI_getMode(spidev_fd); if (mode < 0) return mode; mode &= ~0x3; mode |= clock_mode & 0x3; return SPI_setMode(spidev_fd, mode); }
int SPI_disable3Wire(int spidev_fd) { int mode = SPI_getMode(spidev_fd); if (mode < 0) return -1; return SPI_setMode(spidev_fd, mode & ~SPI_3WIRE); }
int SPI_disableLoopback(int spidev_fd) { int mode = SPI_getMode(spidev_fd); if (mode < 0) return -1; return SPI_setMode(spidev_fd, mode & ~SPI_LOOP); }
int SPI_disableCS(int spidev_fd) { int mode = SPI_getMode(spidev_fd); if (mode < 0) return -1; return SPI_setMode(spidev_fd, mode | SPI_NO_CS); }
int SPI_setCSActiveHigh(int spidev_fd) { int mode = SPI_getMode(spidev_fd); if (mode < 0) return -1; return SPI_setMode(spidev_fd, mode | SPI_CS_HIGH); }
void ST7735_init(u8 module, u8 cs, u8 dc, u8 sda, u8 sck) { ST7735_SPI = module; ST7735[module].pin.dc = dc; ST7735[module].pin.cs = cs; output(ST7735[module].pin.dc); output(ST7735[module].pin.cs); // init SPI communication if (module == SPISW) { SPI_setPin(ST7735_SPI, sda, sck); SPI_setBitOrder(ST7735_SPI, SPI_MSBFIRST); } else { SPI_setMode(ST7735_SPI, SPI_MASTER8); SPI_setDataMode(ST7735_SPI, SPI_MODE1); //maximum baud rate possible = FPB/2 SPI_setClockDivider(ST7735_SPI, SPI_PBCLOCK_DIV2); SPI_begin(ST7735_SPI); } // default Screen Values ST7735[module].cursor.x = 0; ST7735[module].cursor.y = 0; ST7735[module].cursor.page = 0; ST7735[module].screen.startx = 0; ST7735[module].screen.starty = 0; ST7735[module].screen.endx = ST7735_WIDTH - 1; ST7735[module].screen.endy = ST7735_HEIGHT - 1; ST7735[module].screen.width = ST7735_WIDTH; ST7735[module].screen.height = ST7735_HEIGHT; //ST7735[module].font.width = 1; //ST7735[module].font.height = 1; // Software reset and minimal init. ST7735_low(ST7735[module].pin.cs); // Chip select ST7735_sendCommand(module,(u8)ST7735_SWRESET); // software reset, puts display into sleep Delayms(150); ST7735_sendCommand(module,(u8)ST7735_SLPOUT); // wake from sleep Delayms(500); ST7735_sendCommand(module,(u8)ST7735_COLMOD); // set color mode to 16-bit ST7735_sendData(module,0x05); Delayms(10); ST7735_sendCommand(module,(u8)ST7735_MADCTL); // RGB ST7735_sendData(module, 0x60|ST7735_MADCTL_RGB); Delayms(10); ST7735_sendCommand(module,(u8)ST7735_DISPON); // display on! Delayms(100); ST7735_sendCommand(module,(u8)ST7735_NORON); // normal display Delayms(10); ST7735_high(ST7735[module].pin.cs); // Chip deselected // Default colors and orientation //ST7735_setOrientation(module, 90); // landscape orientation ST7735_setBackgroundColor(module, ST7735_BLACK); ST7735_setColor(module, ST7735_WHITE); ST7735_clearScreen(module); }