281 lines
5.7 KiB
C
281 lines
5.7 KiB
C
#include "include.h"
|
|
// 466 * 466
|
|
|
|
//#define Delay(ms) bsp_spide_cs(1);delay_ms(ms)
|
|
#if (GUI_SELECT == GUI_OLED_466_ICNA3310B)
|
|
|
|
#define WriteData(v) tft_write_data(v)
|
|
#define CommEnd() tft_write_end()
|
|
// cmd 12h 1:cmd 4:addr/data
|
|
// cmd 32h 1:cmd/addr 4:data
|
|
// cmd 02h 1:cmd 1:addr/data
|
|
#define WriteComm12(v) \
|
|
({ \
|
|
bsp_spide_cs(1); \
|
|
bsp_spide_cs(0); \
|
|
bsp_spide_bus_mode(SPIDE_1IO); \
|
|
bsp_spide_snd_byte(0x12);\
|
|
bsp_spide_bus_mode(SPIDE_4IO); \
|
|
bsp_spide_snd_byte(0x00);\
|
|
bsp_spide_snd_byte(v); \
|
|
bsp_spide_snd_byte(0x00);\
|
|
})
|
|
#define WriteComm32(v) \
|
|
({ \
|
|
bsp_spide_cs(1); \
|
|
bsp_spide_cs(0); \
|
|
bsp_spide_bus_mode(SPIDE_1IO); \
|
|
bsp_spide_snd_byte(0x32);\
|
|
bsp_spide_snd_byte(0x00);\
|
|
bsp_spide_snd_byte(v); \
|
|
bsp_spide_snd_byte(0x00);\
|
|
bsp_spide_bus_mode(SPIDE_4IO); \
|
|
})
|
|
#define WriteComm02(v) \
|
|
({ \
|
|
bsp_spide_cs(1); \
|
|
bsp_spide_cs(0); \
|
|
bsp_spide_bus_mode(SPIDE_1IO); \
|
|
bsp_spide_snd_byte(0x02);\
|
|
bsp_spide_snd_byte(0x00);\
|
|
bsp_spide_snd_byte(v); \
|
|
bsp_spide_snd_byte(0x00);\
|
|
})
|
|
#define ReadComm03(v) \
|
|
({ \
|
|
bsp_spide_cs(1); \
|
|
bsp_spide_cs(0); \
|
|
bsp_spide_bus_mode(SPIDE_1IO); \
|
|
bsp_spide_snd_byte(0x03);\
|
|
bsp_spide_snd_byte(0x00);\
|
|
bsp_spide_snd_byte(v); \
|
|
bsp_spide_snd_byte(0x00);\
|
|
})
|
|
|
|
// cmd 12h 1:cmd 4:addr/data
|
|
// cmd 32h 1:cmd/addr 4:data
|
|
// cmd 02h 1:cmd 1:addr/data
|
|
//0x02: 1CMD 1ADDR 1DATA
|
|
AT(.com_text.tft_spi)
|
|
void tft_write_cmd(u8 cmd)
|
|
{
|
|
TFT_SPI_CS_DIS();
|
|
delay_us(1);
|
|
TFT_SPI_CS_EN();
|
|
DESPICON &= ~BIT(3); //1BIT
|
|
tft_spi_sendbyte(0x02);
|
|
tft_spi_sendbyte(0x00);
|
|
tft_spi_sendbyte(cmd);
|
|
tft_spi_sendbyte(0x00);
|
|
}
|
|
|
|
//0x12: 1CMD 4ADDR 4DATA
|
|
AT(.com_text.tft_spi)
|
|
void tft_write_cmd12(u8 cmd)
|
|
{
|
|
TFT_SPI_CS_DIS();
|
|
delay_us(1);
|
|
TFT_SPI_CS_EN();
|
|
DESPICON &= ~BIT(3); //1BIT
|
|
tft_spi_sendbyte(0x12);
|
|
DESPICON |= BIT(3); //4BIT
|
|
tft_spi_sendbyte(0x00);
|
|
tft_spi_sendbyte(cmd);
|
|
tft_spi_sendbyte(0x00);
|
|
}
|
|
|
|
//0x03: 1CMD 1ADDR 1DATA
|
|
AT(.com_text.tft_spi)
|
|
void tft_read_cmd(u8 cmd)
|
|
{
|
|
TFT_SPI_CS_DIS();
|
|
delay_us(1);
|
|
TFT_SPI_CS_EN();
|
|
DESPICON &= ~BIT(3); //1BIT
|
|
tft_spi_sendbyte(0x03);
|
|
tft_spi_sendbyte(0x00);
|
|
tft_spi_sendbyte(cmd);
|
|
tft_spi_sendbyte(0x00);
|
|
}
|
|
|
|
AT(.com_text.tft_spi)
|
|
void tft_write_data(u8 data)
|
|
{
|
|
tft_spi_sendbyte(data);
|
|
}
|
|
|
|
AT(.com_text.tft_spi)
|
|
void tft_write_end()
|
|
{
|
|
TFT_SPI_CS_DIS();
|
|
}
|
|
|
|
AT(.com_text.tft_spi)
|
|
void tft_set_window(u16 x0, u16 y0, u16 x1, u16 y1)
|
|
{
|
|
x0 += GUI_SCREEN_OFS_X;
|
|
x1 += GUI_SCREEN_OFS_X;
|
|
y0 += GUI_SCREEN_OFS_Y;
|
|
y1 += GUI_SCREEN_OFS_Y;
|
|
|
|
tft_write_cmd(0x2A); //TFT_CASET
|
|
tft_write_data(BYTE1(x0));
|
|
tft_write_data(BYTE0(x0));
|
|
tft_write_data(BYTE1(x1));
|
|
tft_write_data(BYTE0(x1));
|
|
|
|
tft_write_cmd(0x2B); //TFT_PASET
|
|
tft_write_data(BYTE1(y0));
|
|
tft_write_data(BYTE0(y0));
|
|
tft_write_data(BYTE1(y1));
|
|
tft_write_data(BYTE0(y1));
|
|
tft_write_end();
|
|
}
|
|
|
|
AT(.com_text.tft_spi)
|
|
void tft_write_data_start(void)
|
|
{
|
|
tft_write_cmd12(0x2C); //TFT_RAMWR
|
|
}
|
|
|
|
void tft_write_cmd(u8 cmd);
|
|
void tft_write_data(u8 data);
|
|
void tft_write_end();
|
|
|
|
#define WriteComm(v) tft_write_cmd(v)
|
|
#define ReadComm(v) ReadComm03(v)
|
|
|
|
uint32_t tft_read_id(void)
|
|
{
|
|
uint32_t id = 0;
|
|
tft_read_cmd(0x04);
|
|
id = tft_spi_getbyte();
|
|
id = (id << 8) + tft_spi_getbyte();
|
|
id = (id << 8) + tft_spi_getbyte();
|
|
id = (id << 8) + tft_spi_getbyte();
|
|
tft_write_end();
|
|
return id;
|
|
}
|
|
|
|
void oled_set_brightness(u8 brightness)
|
|
{
|
|
tft_write_cmd(0x51);
|
|
tft_write_data(BYTE0(brightness));
|
|
tft_write_end();
|
|
}
|
|
|
|
void oled_466_icna3310b_test(void)
|
|
{
|
|
WriteComm(0xfe);
|
|
WriteData(0x20);
|
|
WriteComm(0xf4);
|
|
WriteData(0x5a);
|
|
WriteComm(0xf5);
|
|
WriteData(0x59);
|
|
WriteComm(0xfe);
|
|
WriteData(0xd0);
|
|
WriteComm(0x4d);
|
|
WriteData(0x7f);
|
|
WriteComm(0x4e);
|
|
WriteData(0x80);
|
|
WriteComm(0xfe);
|
|
WriteData(0x40);
|
|
WriteComm(0x54);
|
|
WriteData(0xaf);
|
|
WriteComm(0xfe);
|
|
WriteData(0x00);
|
|
WriteComm(0xc4);
|
|
WriteData(0x80);
|
|
WriteComm(0x3a);
|
|
WriteData(0x55);
|
|
WriteComm(0x35);
|
|
WriteData(0x00);
|
|
WriteComm(0x53);
|
|
WriteData(0x20);
|
|
WriteComm(0x51);
|
|
WriteData(0x7f);
|
|
WriteComm(0x63);
|
|
WriteData(0xff);
|
|
|
|
WriteComm(0x2a);
|
|
WriteData(0x00);
|
|
WriteData(0x06);
|
|
WriteData(0x01);
|
|
WriteData(0xd7);
|
|
|
|
WriteComm(0x2b);
|
|
WriteData(0x00);
|
|
WriteData(0x00);
|
|
WriteData(0x01);
|
|
WriteData(0xd1);
|
|
|
|
WriteComm(0x11);
|
|
|
|
//CommEnd();
|
|
delay_ms(120);
|
|
WriteComm(0x29);
|
|
// WriteComm(0x2C);
|
|
|
|
while (1) {
|
|
WDT_CLR();
|
|
}
|
|
|
|
CommEnd();
|
|
}
|
|
|
|
|
|
void oled_466_icna3310b_init(void)
|
|
{
|
|
WriteComm(0xfe);
|
|
WriteData(0x20);
|
|
WriteComm(0xf4);
|
|
WriteData(0x5a);
|
|
WriteComm(0xf5);
|
|
WriteData(0x59);
|
|
WriteComm(0xfe);
|
|
WriteData(0x40);
|
|
WriteComm(0x08);
|
|
WriteData(0x0a);
|
|
WriteComm(0xfe);
|
|
WriteData(0x00);
|
|
WriteComm(0xc4);
|
|
WriteData(0x80);
|
|
WriteComm(0x3a);
|
|
WriteData(0x55);
|
|
WriteComm(0x35);
|
|
WriteData(0x00);
|
|
WriteComm(0x53);
|
|
WriteData(0x20);
|
|
WriteComm(0x51);
|
|
WriteData(0xA0);
|
|
WriteComm(0x63);
|
|
WriteData(0xff);
|
|
|
|
WriteComm(0x35); //TE On
|
|
WriteData(0x00);
|
|
|
|
WriteComm(0x11);
|
|
|
|
CommEnd();
|
|
delay_ms(120);
|
|
WriteComm(0x29);
|
|
// WriteComm(0x2C);
|
|
|
|
CommEnd();
|
|
}
|
|
|
|
//uint32_t gc9c01_read_id(void)
|
|
//{
|
|
// uint32_t id = 0;
|
|
// ReadComm(0x04);
|
|
// id = id*256 + bsp_spide_rcv_byte();
|
|
// id = id*256 + bsp_spide_rcv_byte();
|
|
// id = id*256 + bsp_spide_rcv_byte();
|
|
// id = id*256 + bsp_spide_rcv_byte();
|
|
//
|
|
// CommEnd();
|
|
//
|
|
// return id;
|
|
//}
|
|
#endif
|