Mercurial > public > ostc4
view Discovery/Src/display.c @ 877:a0900e4df15c Evo_2_23
DevBugfix: Exit condition deco_stop_depth
deco_stop_depth is defined as float but handled like an integer. During code cleanup this was not considered for the break condition of the VPM calculation loop causing an endless loop condition. The legacy format has been restored in the updated version.
author | Ideenmodellierer |
---|---|
date | Tue, 20 Aug 2024 15:18:43 +0200 |
parents | e373e90a48db |
children | 6b06143cbfea |
line wrap: on
line source
#include "stm32f4xx_hal.h" /* for HAL_Delay() */ #include "ostc.h" #include "display.h" #define TFT_ENABLE_EXTENDED_COMMANDS 0xB9 #define TFT_SET_POWER 0xB1 #define TFT_SLEEP_OUT 0x11 #define TFT_DISPLAY_INVERSION_OFF 0x20 #define TFT_MEMORY_ACCESS_ONTROL 0x36 #define TFT_INTERFACE_PIXEL_FORMAT 0x3A #define TFT_SET_RGB_INTERFACE_RELATED 0xB3 #define TFT_SET_DISPLAY_WAVEFORM 0xB4 #define TFT_SET_PANEL 0xCC #define TFT_SET_GAMMA_CURVE_RELATED 0xE0 #define TFT_DISPLAY_ON 0x29 #define TFT_DISPLAY_OFF 0x28 #define TFT_SLEEP_IN 0x10 #define OLED_SCTE_SET_31h 0x31 // 0x0008 #define OLED_WCWE_SET_32h 0x32 // 0x0014 #define OLED_GATELESS1_30h 0x30 // 0x0002 #define OLED_GATELESS2_27h 0x27 // 0x0000 #define OLED_OSCILLATOR 0x11 // 0x00A1 #define OLED_VBP_SET_12h 0x12 // 0x0008 #define OLED_VFP_SET_13h 0x13 // 0x0008 #define OLED_DISPLAY_CON_15h 0x15 // 0x0000 #define OLED_COLOR_DEPTH_SET_16h 0x16 // 0x0000 #define OLED_PENTILE_KEY_EFh 0xEF // 0x00D0 or 0x00E8 #define OLED_PENTILE1_A0h 0xA0 // 0x0063 #define OLED_PENTILE2_A1h 0xA1 // 0x00C0 #define OLED_PENTILE3_A2h 0xA2 // 0x0032 #define OLED_PENTILE4_A3h 0xA3 // 0x0002 #define OLED_BRIGHTNESS_CTRL_39h 0x39 // 0044h // gamma table 0x40 - 0x66 #define OLED_BOOSTING_FREQ 0x17 // 0x0022 #define OLED_AMP_SET_18h 0x18 // 0x0033 #define OLED_GAMMA_AMP_19h 0x19 // 0x0003 #define OLED_POWER_CONTROL2_1Ah 0x1A // 0x0001 #define OLED_POWER_CONTROL2_1Bh 0x1B // #define OLED_POWER_CONTROL2_1Ch 0x1C // #define OLED_INTERNAL_LOGIC_VOLTAGE 0x22 // VCC*0,65 = 3,3V * 0,55 = 0x00A2 #define OLED_POWER_SET 0x23 // VC1OUT = VCI X 0.98 (default) = 0x00 #define OLED_POWER_SET2 0x24 // VREG2OUT = 5,4V, VREG1OUT = 4,2V =0x77 #define OLED_DISPLAY_CONDITION_SET_26h 0x26 // 0x00A0 #define OLED_STB_BY_OFF 0x1D // 00A0 + 300ms wait #define OLED_DDISP_ON 0x14 // 0003 static void Display_Error_Handler(void); static void display_power_on__2_of_2__post_RGB_display0(void); static void display_power_on__2_of_2__post_RGB_display1(void); static uint8_t receive_screen(); void display_power_on__1_of_2__pre_RGB(void) { uint8_t aTxBuffer[3]; /* reset system */ HAL_GPIO_WritePin(DISPLAY_CSB_GPIO_PORT,DISPLAY_CSB_PIN,GPIO_PIN_SET); // chip select HAL_GPIO_WritePin(DISPLAY_RESETB_GPIO_PORT,DISPLAY_RESETB_PIN,GPIO_PIN_RESET); HAL_Delay(10); HAL_GPIO_WritePin(DISPLAY_RESETB_GPIO_PORT,DISPLAY_RESETB_PIN,GPIO_PIN_SET); HAL_Delay(25); // check for new screen hardwareDisplay=0; // default is old screen aTxBuffer[0] = 0x71; // Read internal register if (receive_screen((uint8_t*)aTxBuffer) == 0x27) // chip Index (=0x27 for new screen) { hardwareDisplay=1; } else { // re-reset the screen to be sure the 0x71 command did nothing HAL_GPIO_WritePin(DISPLAY_RESETB_GPIO_PORT,DISPLAY_RESETB_PIN,GPIO_PIN_RESET); HAL_Delay(10); HAL_GPIO_WritePin(DISPLAY_RESETB_GPIO_PORT,DISPLAY_RESETB_PIN,GPIO_PIN_SET); HAL_Delay(25); } /* RGB signals should be now for 2 frames or more (datasheet) */ } static void send(uint8_t *pData, uint16_t inputlength) { HAL_GPIO_WritePin(DISPLAY_CSB_GPIO_PORT,DISPLAY_CSB_PIN,GPIO_PIN_RESET); // chip select if(HAL_SPI_Transmit(&hspiDisplay,(uint8_t*)pData, inputlength, 10000) != HAL_OK) Display_Error_Handler(); while (HAL_SPI_GetState(&hspiDisplay) != HAL_SPI_STATE_READY) { } HAL_GPIO_WritePin(DISPLAY_CSB_GPIO_PORT,DISPLAY_CSB_PIN,GPIO_PIN_SET); // chip select } static uint8_t receive_screen(uint8_t *pData) { uint8_t byte; HAL_GPIO_WritePin(DISPLAY_CSB_GPIO_PORT,DISPLAY_CSB_PIN,GPIO_PIN_RESET); // chip select if(HAL_SPI_Transmit(&hspiDisplay,(uint8_t*)pData, 1, 10000) != HAL_OK) Display_Error_Handler(); while (HAL_SPI_GetState(&hspiDisplay) != HAL_SPI_STATE_READY) { } if(HAL_SPI_Receive(&hspiDisplay, &byte, 1, 10000) != HAL_OK) Display_Error_Handler(); while (HAL_SPI_GetState(&hspiDisplay) != HAL_SPI_STATE_READY) { } HAL_GPIO_WritePin(DISPLAY_CSB_GPIO_PORT,DISPLAY_CSB_PIN,GPIO_PIN_SET); // chip select return byte; } static uint16_t convert8to9to8(uint8_t *pInput, uint8_t *pOutput,uint16_t inputlength) { uint16_t outputlength; uint8_t readbit = 0x80;//0b1000000; uint8_t writebit = 0x40;//0b0100000; uint16_t i,j,k; outputlength = ((inputlength+7)/8)*9; for(i=0;i<outputlength;i++) pOutput[i] = 0; k = 0; for(i=0;i<inputlength;i++) { if(i != 0) { pOutput[k] |= writebit; // 9. bit writebit = writebit >> 1; if(writebit == 0) { writebit = 0x80; k++; } } for(j=0;j<8;j++) { if((pInput[i] & readbit) != 0) { pOutput[k] |= writebit; } readbit = readbit >> 1; if(readbit == 0) readbit = 0x80; writebit = writebit >> 1; if(writebit == 0) { writebit = 0x80; k++; } } } return outputlength; } void display_power_on__2_of_2__post_RGB(void) { if (hardwareDisplay == 1) { display_power_on__2_of_2__post_RGB_display1(); } else { display_power_on__2_of_2__post_RGB_display0(); } } void display_power_on__2_of_2__post_RGB_display0(void) { uint8_t aTxBuffer[32]; uint8_t bTxBuffer[36]; uint16_t i,length; for(i=0;i<32;i++) aTxBuffer[i] = 0; for(i=0;i<36;i++) bTxBuffer[i] = 0; aTxBuffer[0] = TFT_ENABLE_EXTENDED_COMMANDS; aTxBuffer[1] = 0xFF; aTxBuffer[2] = 0x83; aTxBuffer[3] = 0x63; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,4); send((uint8_t*)bTxBuffer, length); aTxBuffer[0] = TFT_SET_POWER; aTxBuffer[1] = 0x81; aTxBuffer[2] = 0x24; aTxBuffer[3] = 0x04; aTxBuffer[4] = 0x02; aTxBuffer[5] = 0x02; aTxBuffer[6] = 0x03; aTxBuffer[7] = 0x10; aTxBuffer[8] = 0x10; aTxBuffer[9] = 0x34; aTxBuffer[10] = 0x3C; aTxBuffer[11] = 0x3F; aTxBuffer[12] = 0x3F; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,13); send((uint8_t*)bTxBuffer, length); aTxBuffer[0] = TFT_SLEEP_OUT; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,1); send((uint8_t*)bTxBuffer, length); HAL_Delay(5+1); aTxBuffer[0] = TFT_DISPLAY_INVERSION_OFF; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,1); send((uint8_t*)bTxBuffer, length); aTxBuffer[0] = TFT_MEMORY_ACCESS_ONTROL; aTxBuffer[1] = 0x00; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,2); send((uint8_t*)bTxBuffer, length); aTxBuffer[0] = TFT_INTERFACE_PIXEL_FORMAT; aTxBuffer[1] = 0x70; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,2); send((uint8_t*)bTxBuffer, length); HAL_Delay(120+20); aTxBuffer[0] = TFT_SET_POWER; aTxBuffer[1] = 0x78; aTxBuffer[2] = 0x24; aTxBuffer[3] = 0x04, aTxBuffer[4] = 0x02; aTxBuffer[5] = 0x02; aTxBuffer[6] = 0x03; aTxBuffer[7] = 0x10; aTxBuffer[8] = 0x10; aTxBuffer[9] = 0x34; aTxBuffer[10] = 0x3C; aTxBuffer[11] = 0x3F; aTxBuffer[12] = 0x3F; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,13); send((uint8_t*)bTxBuffer, length); aTxBuffer[0] = TFT_SET_RGB_INTERFACE_RELATED; aTxBuffer[1] = 0x01; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,2); send((uint8_t*)bTxBuffer, length); aTxBuffer[0] = TFT_SET_DISPLAY_WAVEFORM; aTxBuffer[1] = 0x00; aTxBuffer[2] = 0x08; aTxBuffer[3] = 0x56; aTxBuffer[4] = 0x07; aTxBuffer[5] = 0x01; aTxBuffer[6] = 0x01; aTxBuffer[7] = 0x4D; aTxBuffer[8] = 0x01; aTxBuffer[9] = 0x42; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,10); send((uint8_t*)bTxBuffer, length); aTxBuffer[0] = TFT_SET_PANEL; aTxBuffer[1] = 0x0B; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,2); send((uint8_t*)bTxBuffer, length); aTxBuffer[0] = TFT_SET_GAMMA_CURVE_RELATED; aTxBuffer[1] = 0x01; aTxBuffer[2] = 0x48; aTxBuffer[3] = 0x4D; aTxBuffer[4] = 0x4E; aTxBuffer[5] = 0x58; aTxBuffer[6] = 0xF6; aTxBuffer[7] = 0x0B; aTxBuffer[8] = 0x4E; aTxBuffer[9] = 0x12; aTxBuffer[10] = 0xD5; aTxBuffer[11] = 0x15; aTxBuffer[12] = 0x95; aTxBuffer[13] = 0x55; aTxBuffer[14] = 0x8E; aTxBuffer[15] = 0x11; aTxBuffer[16] = 0x01; aTxBuffer[17] = 0x48; aTxBuffer[18] = 0x4D; aTxBuffer[19] = 0x55; aTxBuffer[20] = 0x5F; aTxBuffer[21] = 0xFD; aTxBuffer[22] = 0x0A; aTxBuffer[23] = 0x4E; aTxBuffer[24] = 0x51; aTxBuffer[25] = 0xD3; aTxBuffer[26] = 0x17; aTxBuffer[27] = 0x95; aTxBuffer[28] = 0x96; aTxBuffer[29] = 0x4E; aTxBuffer[30] = 0x11; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,31); send((uint8_t*)bTxBuffer, length); HAL_Delay(5+1); aTxBuffer[0] = TFT_DISPLAY_ON; length = convert8to9to8((uint8_t*)aTxBuffer,(uint8_t*)bTxBuffer,1); send((uint8_t*)bTxBuffer, length); } void display_power_on__2_of_2__post_RGB_display1(void) { uint8_t aTxBuffer[3]; aTxBuffer[0] = 0x71; // Read chip Index & revision number aTxBuffer[1] = 0x00; // Dummy write - reads out 0x27 aTxBuffer[1] = 0x00; // Dummy write - reads out 0x96 send((uint8_t*)aTxBuffer, 3); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_OSCILLATOR; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0xA4; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_SCTE_SET_31h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x08;//8 send((uint8_t*)aTxBuffer, 2); //debug read aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_SCTE_SET_31h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x73; // Read internal register aTxBuffer[1] = 0x00; // Dummy write - reads out 0x08 (The just-set OLED_SCTE_SET value) send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_WCWE_SET_32h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x14;//14 send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_GATELESS1_30h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x02; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_GATELESS2_27h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x01; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_VBP_SET_12h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x08; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_VFP_SET_13h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x08; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_DISPLAY_CON_15h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x01; //SS=0 //aTxBuffer[1] = 0x11; //SS=1 send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_COLOR_DEPTH_SET_16h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_PENTILE_KEY_EFh; // write-only register... send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0xD0; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0xE8; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_PENTILE1_A0h; // write-only register... send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x63; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_PENTILE2_A1h; // write-only register... send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0xC0; // SID1&SID0=00 // aTxBuffer[1] = 0xC4; // SID1&SID0=01 CC C8 C4 C0 send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_PENTILE3_A2h; // write-only register... send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x32; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_PENTILE4_A3h; // write-only register... send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x02; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_BRIGHTNESS_CTRL_39h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x44;//44 send((uint8_t*)aTxBuffer, 2); // GAMMA L=250 aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x40; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x41; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x3F; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x42; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x2A; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x43; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x27; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x44; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x27; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x45; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x1F; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x46; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x44; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x50; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x51; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x52; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x17; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x53; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x24; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x54; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x26; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x55; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x1F; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x56; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x43; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x60; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x61; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x3F; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x62; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x2A; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x63; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x25; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x64; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x24; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x65; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x1B; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x66; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x5C; send((uint8_t*)aTxBuffer, 2); /* // GAMMA L=150 aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x40; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x41; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x3F; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x42; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x2D; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x43; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x29; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x44; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x28; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x45; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x23; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x46; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x37; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x50; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x51; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x52; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x0B; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x53; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x25; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x54; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x28; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x55; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x22; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x56; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x36; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x60; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x61; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x3F; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x62; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x2B; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x63; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x28; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x64; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x26; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x65; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x1F; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = 0x66; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x4A; send((uint8_t*)aTxBuffer, 2); */ aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_BOOSTING_FREQ; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x22; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_AMP_SET_18h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x22; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_GAMMA_AMP_19h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x02; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_POWER_CONTROL2_1Ah; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); /* aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_POWER_CONTROL2_1Bh; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x4B; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_POWER_CONTROL2_1Ch; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x05; send((uint8_t*)aTxBuffer, 2); */ aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_INTERNAL_LOGIC_VOLTAGE; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0xA2; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_POWER_SET; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x00; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_POWER_SET2; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x77; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_DISPLAY_CONDITION_SET_26h; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0xA0; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_STB_BY_OFF; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0xA0; send((uint8_t*)aTxBuffer, 2); HAL_Delay(250); aTxBuffer[0] = 0x70; aTxBuffer[1] = OLED_DDISP_ON; send((uint8_t*)aTxBuffer, 2); aTxBuffer[0] = 0x72; aTxBuffer[1] = 0x03; send((uint8_t*)aTxBuffer, 2); } static void Display_Error_Handler(void) { //while(1) { } }