SEPS114A Driver

SEPS114A SPI Driver

class SPIPreInit : public SPI { public: SPIPreInit(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk) { format(8,3); frequency(12000000); }; };

SPIPreInit gSpi(PB_15,NC,PB_13); PinName mosi(sda), PinName miso, PinName clk(scl) Adafruit_SEPS114A_Spi oled(gSpi,PB_14,PB_1,PB_2); PinName DC, PinName RST, PinName CS

You can print russian cyrilic

Committer:
Dzhafarkhanov
Date:
Tue May 10 06:19:10 2016 +0000
Revision:
1:a37035f55af3
Parent:
0:f7b7f71865d1
add rotation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dzhafarkhanov 0:f7b7f71865d1 1
Dzhafarkhanov 0:f7b7f71865d1 2
Dzhafarkhanov 0:f7b7f71865d1 3
Dzhafarkhanov 0:f7b7f71865d1 4 //#ifndef _Adafruit_SEPS114A_H_
Dzhafarkhanov 0:f7b7f71865d1 5 //#define _Adafruit_SEPS114A_H_
Dzhafarkhanov 0:f7b7f71865d1 6
Dzhafarkhanov 0:f7b7f71865d1 7 #include "mbed.h"
Dzhafarkhanov 0:f7b7f71865d1 8 #include "Adafruit_GFX.h"
Dzhafarkhanov 0:f7b7f71865d1 9
Dzhafarkhanov 0:f7b7f71865d1 10 #include <vector>
Dzhafarkhanov 0:f7b7f71865d1 11 #include <algorithm>
Dzhafarkhanov 0:f7b7f71865d1 12
Dzhafarkhanov 0:f7b7f71865d1 13
Dzhafarkhanov 0:f7b7f71865d1 14
Dzhafarkhanov 0:f7b7f71865d1 15
Dzhafarkhanov 0:f7b7f71865d1 16
Dzhafarkhanov 0:f7b7f71865d1 17
Dzhafarkhanov 0:f7b7f71865d1 18
Dzhafarkhanov 0:f7b7f71865d1 19 /* some 16bit RGB color definitions */
Dzhafarkhanov 0:f7b7f71865d1 20 enum Color{
Dzhafarkhanov 0:f7b7f71865d1 21 Black = 0x0000, /* 0, 0, 0 */
Dzhafarkhanov 0:f7b7f71865d1 22 Navy = 0x000F, /* 0, 0, 128 */
Dzhafarkhanov 0:f7b7f71865d1 23 DarkGreen = 0x03E0, /* 0, 128, 0 */
Dzhafarkhanov 0:f7b7f71865d1 24 DarkCyan = 0x03EF, /* 0, 128, 128 */
Dzhafarkhanov 0:f7b7f71865d1 25 Maroon = 0x7800, /* 128, 0, 0 */
Dzhafarkhanov 0:f7b7f71865d1 26 Purple = 0x780F, /* 128, 0, 128 */
Dzhafarkhanov 0:f7b7f71865d1 27 Olive = 0x7BE0, /* 128, 128, 0 */
Dzhafarkhanov 0:f7b7f71865d1 28 LightGrey = 0xC618, /* 192, 192, 192 */
Dzhafarkhanov 0:f7b7f71865d1 29 DarkGrey = 0x7BEF, /* 128, 128, 128 */
Dzhafarkhanov 0:f7b7f71865d1 30 Blue = 0x001F, /* 0, 0, 255 */
Dzhafarkhanov 0:f7b7f71865d1 31 Green = 0x07E0, /* 0, 255, 0 */
Dzhafarkhanov 0:f7b7f71865d1 32 Cyan = 0x07FF, /* 0, 255, 255 */
Dzhafarkhanov 0:f7b7f71865d1 33 Red = 0xF800, /* 255, 0, 0 */
Dzhafarkhanov 0:f7b7f71865d1 34 Magenta = 0xF81F, /* 255, 0, 255 */
Dzhafarkhanov 0:f7b7f71865d1 35 Yellow = 0xFFE0, /* 255, 255, 0 */
Dzhafarkhanov 0:f7b7f71865d1 36 White = 0xFFFF, /* 255, 255, 255 */
Dzhafarkhanov 0:f7b7f71865d1 37 Orange = 0xFD20, /* 255, 165, 0 */
Dzhafarkhanov 0:f7b7f71865d1 38 GreenYellow = 0xAFE5, /* 173, 255, 47 */
Dzhafarkhanov 0:f7b7f71865d1 39 Pink = 0xF81F
Dzhafarkhanov 0:f7b7f71865d1 40 };
Dzhafarkhanov 0:f7b7f71865d1 41
Dzhafarkhanov 0:f7b7f71865d1 42
Dzhafarkhanov 0:f7b7f71865d1 43 // A DigitalOut sub-class that provides a constructed default state
Dzhafarkhanov 0:f7b7f71865d1 44 class DigitalOut2 : public DigitalOut
Dzhafarkhanov 0:f7b7f71865d1 45 {
Dzhafarkhanov 0:f7b7f71865d1 46 public:
Dzhafarkhanov 0:f7b7f71865d1 47 DigitalOut2(PinName pin, bool active = false) : DigitalOut(pin) { write(active); };
Dzhafarkhanov 0:f7b7f71865d1 48 DigitalOut2& operator= (int value) { write(value); return *this; };
Dzhafarkhanov 0:f7b7f71865d1 49 DigitalOut2& operator= (DigitalOut2& rhs) { write(rhs.read()); return *this; };
Dzhafarkhanov 0:f7b7f71865d1 50 operator int() { return read(); };
Dzhafarkhanov 0:f7b7f71865d1 51 };
Dzhafarkhanov 0:f7b7f71865d1 52
Dzhafarkhanov 0:f7b7f71865d1 53
Dzhafarkhanov 0:f7b7f71865d1 54
Dzhafarkhanov 0:f7b7f71865d1 55
Dzhafarkhanov 0:f7b7f71865d1 56 /** The pure base class for the SSD1351 display driver.
Dzhafarkhanov 0:f7b7f71865d1 57 *
Dzhafarkhanov 0:f7b7f71865d1 58
Dzhafarkhanov 0:f7b7f71865d1 59 */
Dzhafarkhanov 0:f7b7f71865d1 60 class Adafruit_SEPS114A : public Adafruit_GFX
Dzhafarkhanov 0:f7b7f71865d1 61 {
Dzhafarkhanov 0:f7b7f71865d1 62 public:
Dzhafarkhanov 0:f7b7f71865d1 63 Adafruit_SEPS114A(PinName RST, uint8_t rawHeight = 96, uint8_t rawWidth = 96)
Dzhafarkhanov 0:f7b7f71865d1 64 : Adafruit_GFX(rawWidth,rawHeight)
Dzhafarkhanov 0:f7b7f71865d1 65 , rst(RST,false)
Dzhafarkhanov 0:f7b7f71865d1 66 {
Dzhafarkhanov 0:f7b7f71865d1 67
Dzhafarkhanov 0:f7b7f71865d1 68
Dzhafarkhanov 0:f7b7f71865d1 69
Dzhafarkhanov 0:f7b7f71865d1 70 };
Dzhafarkhanov 0:f7b7f71865d1 71
Dzhafarkhanov 0:f7b7f71865d1 72 void begin();
Dzhafarkhanov 0:f7b7f71865d1 73
Dzhafarkhanov 0:f7b7f71865d1 74 void clearDisplay();
Dzhafarkhanov 0:f7b7f71865d1 75 void MemorySize(uint8_t X1, uint8_t X2, uint8_t Y1, uint8_t Y2);
Dzhafarkhanov 0:f7b7f71865d1 76 void set_region(int x, int y, int xs, int ys);
Dzhafarkhanov 0:f7b7f71865d1 77 uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
Dzhafarkhanov 0:f7b7f71865d1 78
Dzhafarkhanov 0:f7b7f71865d1 79
Dzhafarkhanov 0:f7b7f71865d1 80 // These must be implemented in the derived transport driver
Dzhafarkhanov 0:f7b7f71865d1 81 virtual void writeCommand(uint8_t reg_index,uint8_t reg_value) = 0;
Dzhafarkhanov 0:f7b7f71865d1 82 virtual void writeData(uint32_t data_value) = 0;
Dzhafarkhanov 0:f7b7f71865d1 83 virtual void DDRAM_access() = 0;
Dzhafarkhanov 0:f7b7f71865d1 84 virtual void drawPixel(int16_t x, int16_t y, uint16_t color);
Dzhafarkhanov 0:f7b7f71865d1 85 void setContrastControl(int brightness);
Dzhafarkhanov 0:f7b7f71865d1 86
Dzhafarkhanov 0:f7b7f71865d1 87 protected:
Dzhafarkhanov 0:f7b7f71865d1 88
Dzhafarkhanov 0:f7b7f71865d1 89 DigitalOut2 rst;
Dzhafarkhanov 0:f7b7f71865d1 90
Dzhafarkhanov 0:f7b7f71865d1 91
Dzhafarkhanov 0:f7b7f71865d1 92
Dzhafarkhanov 0:f7b7f71865d1 93 };
Dzhafarkhanov 0:f7b7f71865d1 94
Dzhafarkhanov 0:f7b7f71865d1 95
Dzhafarkhanov 0:f7b7f71865d1 96 /** This is the SPI SSD1351 display driver transport class
Dzhafarkhanov 0:f7b7f71865d1 97 *
Dzhafarkhanov 0:f7b7f71865d1 98 */
Dzhafarkhanov 0:f7b7f71865d1 99 class Adafruit_SEPS114A_Spi : public Adafruit_SEPS114A
Dzhafarkhanov 0:f7b7f71865d1 100 {
Dzhafarkhanov 0:f7b7f71865d1 101 public:
Dzhafarkhanov 0:f7b7f71865d1 102 /** Create a SSD1351 SPI transport display driver instance with the specified DC, RST, and CS pins, as well as the display dimentions
Dzhafarkhanov 0:f7b7f71865d1 103 *
Dzhafarkhanov 0:f7b7f71865d1 104 * Required parameters
Dzhafarkhanov 0:f7b7f71865d1 105 * @param spi - a reference to an initialized SPI object
Dzhafarkhanov 0:f7b7f71865d1 106 * @param DC (Data/Command) pin name
Dzhafarkhanov 0:f7b7f71865d1 107 * @param RST (Reset) pin name
Dzhafarkhanov 0:f7b7f71865d1 108 * @param CS (Chip Select) pin name
Dzhafarkhanov 0:f7b7f71865d1 109 *
Dzhafarkhanov 0:f7b7f71865d1 110 * Optional parameters
Dzhafarkhanov 0:f7b7f71865d1 111 * @param rawHeight - the vertical number of pixels for the display, defaults to 96
Dzhafarkhanov 0:f7b7f71865d1 112 * @param rawWidth - the horizonal number of pixels for the display, defaults to 96
Dzhafarkhanov 0:f7b7f71865d1 113 */
Dzhafarkhanov 0:f7b7f71865d1 114 Adafruit_SEPS114A_Spi(SPI &spi, PinName DC, PinName RST, PinName CS, uint8_t rawHieght = 96, uint8_t rawWidth = 96)
Dzhafarkhanov 0:f7b7f71865d1 115 : Adafruit_SEPS114A(RST, rawHieght, rawWidth)
Dzhafarkhanov 0:f7b7f71865d1 116 , cs(CS,true)
Dzhafarkhanov 0:f7b7f71865d1 117 , dc(DC,false)
Dzhafarkhanov 0:f7b7f71865d1 118 , mspi(spi)
Dzhafarkhanov 0:f7b7f71865d1 119 {
Dzhafarkhanov 0:f7b7f71865d1 120 begin();
Dzhafarkhanov 0:f7b7f71865d1 121 clearDisplay();
Dzhafarkhanov 0:f7b7f71865d1 122 };
Dzhafarkhanov 0:f7b7f71865d1 123
Dzhafarkhanov 0:f7b7f71865d1 124 virtual void writeCommand(uint8_t reg_index,uint8_t reg_value)
Dzhafarkhanov 0:f7b7f71865d1 125 {
Dzhafarkhanov 0:f7b7f71865d1 126
Dzhafarkhanov 0:f7b7f71865d1 127 //Select index addr
Dzhafarkhanov 0:f7b7f71865d1 128 cs = 0;
Dzhafarkhanov 0:f7b7f71865d1 129 dc = 0;
Dzhafarkhanov 0:f7b7f71865d1 130 mspi.write(reg_index);
Dzhafarkhanov 0:f7b7f71865d1 131 cs = 1;
Dzhafarkhanov 0:f7b7f71865d1 132 //Write data to reg
Dzhafarkhanov 0:f7b7f71865d1 133 cs = 0;
Dzhafarkhanov 0:f7b7f71865d1 134 dc = 1;
Dzhafarkhanov 0:f7b7f71865d1 135 mspi.write(reg_value);
Dzhafarkhanov 0:f7b7f71865d1 136 cs = 1;
Dzhafarkhanov 0:f7b7f71865d1 137 };
Dzhafarkhanov 0:f7b7f71865d1 138
Dzhafarkhanov 0:f7b7f71865d1 139 virtual void writeData(uint32_t data_value)
Dzhafarkhanov 0:f7b7f71865d1 140 {
Dzhafarkhanov 0:f7b7f71865d1 141 cs = 0;
Dzhafarkhanov 0:f7b7f71865d1 142 dc = 1;
Dzhafarkhanov 0:f7b7f71865d1 143 mspi.write(data_value);
Dzhafarkhanov 0:f7b7f71865d1 144 cs = 1;
Dzhafarkhanov 0:f7b7f71865d1 145 };
Dzhafarkhanov 0:f7b7f71865d1 146 virtual void DDRAM_access()
Dzhafarkhanov 0:f7b7f71865d1 147 {
Dzhafarkhanov 0:f7b7f71865d1 148 cs = 0;
Dzhafarkhanov 0:f7b7f71865d1 149 dc = 0;
Dzhafarkhanov 0:f7b7f71865d1 150 mspi.write(0x08);
Dzhafarkhanov 0:f7b7f71865d1 151 cs = 1;
Dzhafarkhanov 0:f7b7f71865d1 152 };
Dzhafarkhanov 0:f7b7f71865d1 153
Dzhafarkhanov 0:f7b7f71865d1 154 protected:
Dzhafarkhanov 0:f7b7f71865d1 155
Dzhafarkhanov 0:f7b7f71865d1 156 DigitalOut2 cs, dc;
Dzhafarkhanov 0:f7b7f71865d1 157 SPI &mspi;
Dzhafarkhanov 0:f7b7f71865d1 158 };
Dzhafarkhanov 0:f7b7f71865d1 159