void RAIO_screen_off( void ) { RAIO_SetRegister( PWRR , 0x40 ); TFT_wait_for_raio(); }
// set mode for BET (Block Transfer Engine) // ---------------------------------------------------------- void BTE_mode( uint8_t bte_operation, uint8_t rop_function ) { RAIO_SetRegister( BECR1, bte_operation | (rop_function<<4) ); }
// initialization of RAIO8870 // ---------------------------------------------------------- void RAIO_init( void ) { static uint8_t PLL_Initial_Flag = 0; // *************** PLL settings (System Clock) if ( !PLL_Initial_Flag ) // wait until PLL is ready { PLL_Initial_Flag = 1; // set Flag to avoid repeated PLL init RAIO_SetRegister( PLLC1, 0x07 ); // set sys_clk bcm2835_delayMicroseconds( 200 ); RAIO_SetRegister( PLLC2, 0x03 ); // set sys_clk bcm2835_delayMicroseconds( 200 ); RAIO_SetRegister( PWRR, 0x01 ); // Raio software reset ( bit 0 ) set RAIO_SetRegister( PWRR, 0x00 ); // Raio software reset ( bit 0 ) set to 0 delay( 100 ); // *************** color modes (color depths) #ifdef CM_65K // System Configuration Register RAIO_SetRegister( SYSR, 0x0A ); // digital TFT // parallel data out // no external memory // 8bit memory data bus // 16bpp 65K color // 16bit MCU-interface (data) RAIO_SetRegister( DPCR, 0x00 ); // one layer #elif defined(CM_4K) // System Configuration Register RAIO_SetRegister( SYSR, 0x06 ); // digital TFT // parallel data out // no external memory // 8bit memory data bus // 12bpp 4K color // 16bit MCU-interface (data) RAIO_SetRegister( DPCR, 0x80 ); // two layers RAIO_SetRegister( MWCR1, BankNo_WR ); RAIO_SetRegister( LTPR0, BankNo_RD ); #else #error "color_mode not defined" #endif } // *************** horizontal settings // 0x27+1 * 8 = 320 pixel RAIO_SetRegister( HDWR , (DISPLAY_WIDTH / 8) - 1 ); RAIO_SetRegister( HNDFTR, 0x02 ); // Horizontal Non-Display Period Fine Tuning // HNDR , Horizontal Non-Display Period Bit[4:0] // Horizontal Non-Display Period (pixels) = (HNDR + 1)*8 RAIO_SetRegister( HNDR, 0x03 ); // 0x06 RAIO_SetRegister( HSTR, 0x04 ); //HSTR , HSYNC Start Position[4:0], HSYNC Start Position(PCLK) = (HSTR + 1)*8 0x02 // HPWR , HSYNC Polarity ,The period width of HSYNC. // 1xxxxxxx activ high 0xxxxxxx activ low // HSYNC Width [4:0] HSYNC Pulse width // (PCLK) = (HPWR + 1)*8 RAIO_SetRegister( HPWR, 0x03 ); // 0x00 // ********************* vertical settings // 0x0EF +1 = 240 pixel RAIO_SetRegister( VDHR0 , ( (DISPLAY_HEIGHT-1) & 0xFF ) ); RAIO_SetRegister( VDHR1 , ( (DISPLAY_HEIGHT-1) >> 8) ); // VNDR0 , Vertical Non-Display Period Bit [7:0] // Vertical Non-Display area = (VNDR + 1) // VNDR1 , Vertical Non-Display Period Bit [8] // Vertical Non-Display area = (VNDR + 1) RAIO_SetRegister( VNDR0, 0x10 ); RAIO_SetRegister( VNDR1, 0x00 ); // VPWR , VSYNC Polarity ,VSYNC Pulse Width[6:0] // VSYNC , Pulse Width(PCLK) = (VPWR + 1) RAIO_SetRegister( VPWR, 0x00 ); // *************** miscellaneous settings // active Window Active_Window( 0, DISPLAY_WIDTH-1, 0, DISPLAY_HEIGHT-1 ); // PCLK fetch data on rising edge RAIO_SetRegister( PCLK, 0x00 ); // Backlight dimming RAIO_SetBacklightPWMValue(50); Text_Background_Color( COLOR_BLACK ); // memory clear with background color RAIO_SetRegister( MCLR, 0x81 ); TFT_wait_for_raio(); RAIO_SetRegister( IODR, 0x07 ); RAIO_SetRegister( PWRR, 0x80 ); }
// set PWM value for backlight // ---------------------------------------------------------- void RAIO_SetBacklightPWMValue( uint8_t BL_value ) { RAIO_SetRegister( P1CR, 0x88 ); // Enable PWM1 output devider 256 RAIO_SetRegister( P1DCR, BL_value ); // -> BL_vaue = 0 (0% PWM) - 255 (100% PWM) }
// set font size // ---------------------------------------------------------- void RAIO_SetFontSizeFactor( uint8_t size ) { size = (size & 0x0f); RAIO_SetRegister ( FNCR1, size ); }
void Text_Foreground_Color( uint8_t color) { RAIO_SetRegister( TFCR, color); }
// set color // ---------------------------------------------------------- void Text_Background_Color( uint8_t color ) { RAIO_SetRegister( TBCR, color ); }