Post Go back to editing

ADV7623 scale text

We use the ADV7623 for superimpose textdata on the hd-video (1080p) . Runs perfect, but the
text is very small, so we tried to scale it with TBOX_V_SCALE and TBOX_H_SCALE, without success.
If we want to increase the text size, have we to change the font data??

Another problem occured: when we tried to show a sentence with more than 16 characters, we need to use

more "words". But how can we get the information where the first "word" ends to continue with the next one?

Thanks for your help!
Klaus

Parents
  • Hello Poornima

    Thanks for your reply. I tried to change the value of reg. 0x07, without any success. As you can see on the code below,

    which shows the value of an incremental counter, I modified the position value. So when the counter increases, not only

    the shown value changes, but also the position changes in pixel steps. 

    Now, when the H/V_SCALE value of the register is changed, I can see that the steps in the movement increases,

    but not the size of the font!!


    The software is for an atmel XMEGA192A3 

    The main routine has the following code:

    // at this position are only XMEGA code for Port initialisation ,...

    init_ADV7184();
    init_ADV7513();
    init_ADV7513_2();
    init_ADV7623();

    //########################################## ADV7623 ##########################################
    color = 0x0ff;
    ADIAPI_RxInit(RX_OPMODE_COMP); //RX_OPMODE_HDMI,
    ADIAPI_OSDSetRes_0( RES_1080i);
    // OSDPushToSpi (FLASH_ROM_TBOX_INSTR_PACK_0_RES_0_OSD_0); //write TBOX RAM
    OSDPushToSpi (FLASH_ROM_STRING_UNKOWN_PACK_0_OSD_0); //write String RAM
    OSDPushToSpi (FLASH_ROM_TBOX_PNTR_UNKOWN_OSD_START_OSD_0); //write String Pointer RAM
    OSDPushToSpi (FLASH_ROM_CHAR_L_UNKOWN_PACK_0_OSD_0); // Write Char RAM L
    OSDPushToSpi (FLASH_ROM_CHAR_M_UNKOWN_PACK_0_OSD_0); // Write Char RAM M
    OSDPushToSpi (FLASH_ROM_CHAR_R_UNKOWN_PACK_0_OSD_0); // Write Char RAM R
    //OSDPushToSpi (FLASH_ROM_FBOX_INSTR_PACK_0_RES_0_OSD_0);

    sprintf(Tx,"%c%c%c%c%c%c%c%c",0x06,0x00,0x05,0x06, 0xf0,0xc0,0x0e,0xc0); //Tbox instruction RAM
    OSDPushToSpi(Tx);
    sprintf(Tx,"%c%c%c%c%c",0x03,0x00,0x0b,0x06,0x18); //Tbox String Pointer RAM
    OSDPushToSpi(Tx);
    HAL_I2CWriteByte(0x48 , 0x80 , 0x7f) ;
    PORTB.OUTTGL = PIN0_bm;
    WsendL2 = FALSE;

    StartCount = HAL_GetCurrentMsCount();


    while(1) {

    if(WsendL2 == TRUE)
    {   //this routine writes the value (WegLaenge2) of a meter counter to a string (wegl2) with the meter abbreviation.(m) 

       // this string is shown on the video screen

       //!!!!!!! Modified the string for debug purpose, so that the on screen position varies with increasing/decreasing of WegLaenge2
    PORTB.OUTTGL = PIN0_bm;
    // HAL_I2CWriteByte(0x48 , 0x07 , 0x13) ;
    sprintf(tmp,"%+06ld",WegLaenge2);
    sprintf(wegl2," m%c.%c%c%c%c%c", tmp[5],tmp[4],tmp[3],tmp[2],tmp[1],tmp[0]);
    sprintf(Tx,"%c%c%c%c%s",0x12,0x00,0x09,0x06,wegl2); // length = 0x12; 0x09 -> Write to String RAM; Use TB6 ---> String RAM
    // Paramter 0 / 1 Datalenght(string + Pointer)
    // Parameter 2 / SPPI command
    OSDPushToSpi(Tx);
    sprintf(Tx,"%c%c%c%c%c%c%c%c",0x06,0x00,0x05,0x06, 0xf0,(UCHAR)(WegLaenge2),((UCHAR)(WegLaenge2) >> 1),0xc0); //-->Tbox instruction RAM
    OSDPushToSpi(Tx);
    HAL_I2CWriteByte(0x48 , 0x80 , 0x40) ; // OSD-MAP(0x48), Reg:OSD TEXT BOX ENABLE_1; enable TB 6,
    HAL_I2CWriteByte(0x48 , 0xa0 , 0x40) ;
    //HAL_I2CWriteByte(0x48 , 0x0c , 0x01) ;
    WsendL2 = FALSE;
    v_shift ++;
    }
    //#############################################################################


    void init_ADV7623(void)
    {
    HAL_I2CWriteByte(0xB0, 0xff, 0x80) ;
    //###################### IO MAP ####################################
    HAL_I2CWriteByte(0xB0, 0x00, 0x1e) ; // SD 625i -> 720x576 0x01; HD 1920x1080->0x14,
    HAL_I2CWriteByte(0xB0, 0x01, 0x35) ; //PRIM-MODE HDMI-COMP Mode, 25Hz
    HAL_I2CWriteByte(0xB0, 0x02, 0xf4) ; //0x04 Auto CSC, RGB out, Set op_656 bit
    HAL_I2CWriteByte(0xB0, 0x04, 0x62) ; //28.63636 MHz
    HAL_I2CWriteByte(0xB0 , 0x05 , 0x2c) ; //AV Codes Off
    HAL_I2CWriteByte(0xB0 , 0x0C , 0x42) ; //Power up part and power down VDP
    HAL_I2CWriteByte(0xB0 , 0x0B , 0x00) ;
    HAL_I2CWriteByte(0xB0 , 0x15 , 0xbE) ; //Disable Tristate of Audio Pins
    HAL_I2CWriteByte(0xB0 , 0x1F , 0x21) ; //0x21 ADI Recommended Write, SPI -OSD !!!
    HAL_I2CWriteByte(0xB0 , 0x20 , 0xf0) ; // Set H to HPA_A Pin high
    HAL_I2CWriteByte(0xB0 , 0xEE , 0x48) ; //OSD Map Address
    HAL_I2CWriteByte(0xB0 , 0xEF , 0x70) ; //TX Packet Map Address
    HAL_I2CWriteByte(0xB0 , 0xF0 , 0x7E) ;// TX EDID Map Address
    HAL_I2CWriteByte(0xB0 , 0xF4 , 0x80) ; //CEC Map Address
    HAL_I2CWriteByte(0xB0 , 0xF5 , 0x7C) ;// HDMI Rx Infoframe Map Address
    HAL_I2CWriteByte(0xB0 , 0xF8 , 0x4C) ;// DPLL Map Address
    HAL_I2CWriteByte(0xB0 , 0xF9 , 0x64) ; //HDMI Rx Repeater Map Address
    HAL_I2CWriteByte(0xB0 , 0xFA , 0x6C) ;// HDMI Rx EDID Map Address
    HAL_I2CWriteByte(0xB0 , 0xFB , 0x68) ; //HDMI Rx Map Address
    HAL_I2CWriteByte(0xB0 , 0xFD , 0x44) ; //CP Map Address

    //########################## HDMI MAP ##################################
    HAL_I2CWriteByte(0x68 , 0x00 , 0xf0) ;// Set HDMI Input Port to A (45) (Enable BG monitoring)
    HAL_I2CWriteByte(0x68 , 0x01 , 0x80) ; //Enable auto. clock terminators
    HAL_I2CWriteByte(0x68 , 0x0D , 0xf4) ; // Full power BG ports
    HAL_I2CWriteByte(0x68 , 0x1A , 0x8A) ; //Unmute audio & enable new compressed audio mute mask bit
    HAL_I2CWriteByte(0x68 , 0x1b , 0x10) ; //FIFO data is output regardless of video PLL lock status
    HAL_I2CWriteByte(0x68 , 0x3C , 0x12) ; //Enable Audio Bypass mode
    HAL_I2CWriteByte(0x68 , 0x3D , 0x10) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x44 , 0x85) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x4c , 0x00) ; //NEW_VS_PARAM VSync filter for low frequency !! für 720p24/25/30
    HAL_I2CWriteByte(0x68 , 0x48 , 0x80) ; // DIS_PWRDNB and DIS_CABLE_DET_RST
    HAL_I2CWriteByte(0x68 , 0x50 , 0x04) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x57 , 0xB9) ; //PLL bandwidth setting
    HAL_I2CWriteByte(0x68 , 0x58 , 0x63) ; //PLL bandwidth setting
    HAL_I2CWriteByte(0x68 , 0x60 , 0x88) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x61 , 0x88) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x69 , 0xa2) ; //HPA_OVR_TERM , HPA_MANUAL (auto=0xa6)
    HAL_I2CWriteByte(0x68 , 0x6C , 0x18) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x75 , 0x10) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x8d , 0x0b) ; // LFG Port A
    HAL_I2CWriteByte(0x68 , 0x8e , 0x20) ; // HFG Port A
    HAL_I2CWriteByte(0x68 , 0x90 , 0x0b) ; // LFG Port B
    HAL_I2CWriteByte(0x68 , 0x91 , 0x30) ; // HFG Port B
    HAL_I2CWriteByte(0x68 , 0x93 , 0x0b) ; // LFG Port C
    HAL_I2CWriteByte(0x68 , 0x94 , 0x30) ; // HFG Port C
    HAL_I2CWriteByte(0x68 , 0x89 , 0x0b) ; // LFG Port D
    HAL_I2CWriteByte(0x68 , 0x8a , 0x30) ; // HFG Port D
    HAL_I2CWriteByte(0x68 , 0x96 , 0x00) ; //EQ_DYN_EN=0
    HAL_I2CWriteByte(0x68 , 0x98 , 0xFF) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x99 , 0xA1) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9A , 0xFF) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9B , 0x09) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9D , 0x02) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xC0 , 0xf0) ; //Power Mode on Ports: Automatic
    HAL_I2CWriteByte(0x68 , 0xC1 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc2 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc3 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc4 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc5 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc6 , 0xff) ; //ADI Recommended Write

    //####################### MAIN MAP ##########################
    HAL_I2CWriteByte(0xB8 , 0x01 , 0x00) ; //Set N Value(6144)27MHz LLc, and Fs = 48KHz --> Audio clock generation
    HAL_I2CWriteByte(0xB8 , 0x02 , 0x18) ; //Set N Value(6144)
    HAL_I2CWriteByte(0xB8 , 0x03 , 0x00) ; //Set N Value(6144)
    HAL_I2CWriteByte(0xB8 , 0x15 , 0x20) ; //I2S audio sampl. 48kHz
    HAL_I2CWriteByte(0xB8 , 0x16 , 0x00) ; //Color space select-> RGB
    HAL_I2CWriteByte(0xB8 , 0x17 , 0x02) ; //aspect radio 16:9
    HAL_I2CWriteByte(0xB8 , 0x3b , 0x00) ; //Pixel Repetition mode selection-> auto
    HAL_I2CWriteByte(0xB8 , 0x3c , 0x33) ; //User programmed video code (VIC)
    HAL_I2CWriteByte(0xB8 , 0x40 , 0x80) ; //General Control packet enable
    HAL_I2CWriteByte(0xB8 , 0x41 , 0x80) ; //Power up all circuits
    HAL_I2CWriteByte(0xB8 , 0x44 , 0x00) ;
    HAL_I2CWriteByte(0xB8 , 0x48 , 0x80) ; //allow detection of low frequ video
    HAL_I2CWriteByte(0xB8 , 0x55 , 0x40) ; //Set RGB // YCrCb 422 in AVinfo Frame
    HAL_I2CWriteByte(0xB8 , 0x56 , 0x6a) ; //Set active format Aspect --> 16:9
    HAL_I2CWriteByte(0xB8 , 0x96 , 0x00) ; //Vsync Interrupt Active
    HAL_I2CWriteByte(0xB8 , 0x98 , 0x07) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0x9A , 0x80) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0x9B , 0x1A) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0xA1 , 0x00) ; //power up all channels
    HAL_I2CWriteByte(0xB8 , 0xAF , 0x02) ; //Set HDMI Mode (DVI by default)
    HAL_I2CWriteByte(0xB8 , 0xBA , 0x60) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0xDF , 0x39) ; //ADI Recommended Write important???!!
    HAL_I2CWriteByte(0xB8 , 0xd5 , 0x00) ; //Black image enable
    HAL_I2CWriteByte(0xB8 , 0xd6 , 0x40) ; //HPD overriden

    //#############OSD MAP ######################
    HAL_I2CWriteByte(0x48 , 0x07 , 0x13) ;
    HAL_I2CWriteByte(0x48 , 0x00 , 0xb0) ; //Enables OSD
    HAL_I2CWriteByte(0x48 , 0x01 , 0xfc) ; // chroma/luma bandwidth limiting
    HAL_I2CWriteByte(0x48 , 0x04 , 0x00) ; //vertical offset adjust of OSD
    HAL_I2CWriteByte(0x48 , 0x05 , 0x05) ; // -"-
    HAL_I2CWriteByte(0x48 , 0x06 , 0x82) ; //OSD colorspace reduced RGB limited
    //HAL_I2CWriteByte(0x48 , 0x07 , 0x73) ; // Text zoom 2xvert 2x hor
    HAL_I2CWriteByte(0x48 , 0x10 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x11 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x12 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x13 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x14 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x15 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x16 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x17 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x20 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x30 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x80 , 0x01) ; // enable OSD TBOX
    HAL_I2CWriteByte(0x48 , 0x90 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa0 , 0x40) ; //highlight en
    HAL_I2CWriteByte(0x48 , 0x60 , 0x80) ; //SPI en; SPI_slave
    HAL_I2CWriteByte(0x48 , 0x70 , 0x88) ;
    HAL_I2CWriteByte(0x48 , 0x81 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x82 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x83 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x84 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x85 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x86 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x91 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x92 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa1 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa2 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xb1 , 0xff) ; //TBOX G
    HAL_I2CWriteByte(0x48 , 0xb2 , 0x00) ; //TBOX B
    HAL_I2CWriteByte(0x48 , 0xb3 , 0x00) ; //TBOX R
    HAL_I2CWriteByte(0x48 , 0xb7 , 0x00) ; //TBOX highlight G
    HAL_I2CWriteByte(0x48 , 0xb8 , 0xf0) ; //TBOX highlight B
    HAL_I2CWriteByte(0x48 , 0xb9 , 0xff) ; //TBOX highlight R HAL_I2CWriteByte(0x48 , 0xc0 , 0x0f) ;
    HAL_I2CWriteByte(0x48 , 0xc1 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xc2 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xd0 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd1 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd2 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd8 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd9 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xda , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe0 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe1 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe2 , 0xff) ;

    //################## CP MAP ##################
    HAL_I2CWriteByte(0x44 , 0x7f , 0x11) ; // DE Start define !!! V-SHift
    HAL_I2CWriteByte(0x44 , 0x86 , 0x0b) ;
    HAL_I2CWriteByte(0x44 , 0x8e , 0x20) ;
    HAL_I2CWriteByte(0x44 , 0x91 , 0x00) ; //progressive mode
    HAL_I2CWriteByte(0x44 , 0xba , 0x01) ; // HDMI Free Run
    HAL_I2CWriteByte(0x44 , 0xbf , 0x16) ; //Do not force the CP core free run, set default color
    HAL_I2CWriteByte(0x44 , 0xc0 , 0x80) ; // default color G
    HAL_I2CWriteByte(0x44 , 0xc1 , 0x80) ; //R
    HAL_I2CWriteByte(0x44 , 0xc2 , 0x80) ; //B DEF_COL_CHC
    HAL_I2CWriteByte(0x44 , 0xc9 , 0x2d) ;

    HAL_I2CWriteByte(0x64 , 0x77 , 0x01) ; //enables EDID I²C accesss of A port

    HAL_I2CWriteByte(0xB0 , 0x0C , 0x44) ; //Power up part and power down VDP
    HAL_I2CWriteByte(0x48 , 0x00 , 0x87) ; // OSD enable
    HAL_I2CWriteByte(0x48 , 0x06 , 0x80) ; //YPbPr(SD)
    HAL_I2CWriteByte(0x48 , 0x80 , 0x3f) ; // enable OSD TBOX
    HAL_I2CWriteByte(0x48 , 0x90 , 0x02) ;
    HAL_I2CWriteByte(0x48 , 0xb1 , 0xff) ; // TBOX textcolor G
    HAL_I2CWriteByte(0x48 , 0xb2 , 0x00) ; // TBOX textcolor B
    HAL_I2CWriteByte(0x48 , 0xb3 , 0x00) ; // TBOX textcolor R
    }

    This is the summary of the code regarding ATV7623

    Thanks and kind regards

    KLaus

Reply
  • Hello Poornima

    Thanks for your reply. I tried to change the value of reg. 0x07, without any success. As you can see on the code below,

    which shows the value of an incremental counter, I modified the position value. So when the counter increases, not only

    the shown value changes, but also the position changes in pixel steps. 

    Now, when the H/V_SCALE value of the register is changed, I can see that the steps in the movement increases,

    but not the size of the font!!


    The software is for an atmel XMEGA192A3 

    The main routine has the following code:

    // at this position are only XMEGA code for Port initialisation ,...

    init_ADV7184();
    init_ADV7513();
    init_ADV7513_2();
    init_ADV7623();

    //########################################## ADV7623 ##########################################
    color = 0x0ff;
    ADIAPI_RxInit(RX_OPMODE_COMP); //RX_OPMODE_HDMI,
    ADIAPI_OSDSetRes_0( RES_1080i);
    // OSDPushToSpi (FLASH_ROM_TBOX_INSTR_PACK_0_RES_0_OSD_0); //write TBOX RAM
    OSDPushToSpi (FLASH_ROM_STRING_UNKOWN_PACK_0_OSD_0); //write String RAM
    OSDPushToSpi (FLASH_ROM_TBOX_PNTR_UNKOWN_OSD_START_OSD_0); //write String Pointer RAM
    OSDPushToSpi (FLASH_ROM_CHAR_L_UNKOWN_PACK_0_OSD_0); // Write Char RAM L
    OSDPushToSpi (FLASH_ROM_CHAR_M_UNKOWN_PACK_0_OSD_0); // Write Char RAM M
    OSDPushToSpi (FLASH_ROM_CHAR_R_UNKOWN_PACK_0_OSD_0); // Write Char RAM R
    //OSDPushToSpi (FLASH_ROM_FBOX_INSTR_PACK_0_RES_0_OSD_0);

    sprintf(Tx,"%c%c%c%c%c%c%c%c",0x06,0x00,0x05,0x06, 0xf0,0xc0,0x0e,0xc0); //Tbox instruction RAM
    OSDPushToSpi(Tx);
    sprintf(Tx,"%c%c%c%c%c",0x03,0x00,0x0b,0x06,0x18); //Tbox String Pointer RAM
    OSDPushToSpi(Tx);
    HAL_I2CWriteByte(0x48 , 0x80 , 0x7f) ;
    PORTB.OUTTGL = PIN0_bm;
    WsendL2 = FALSE;

    StartCount = HAL_GetCurrentMsCount();


    while(1) {

    if(WsendL2 == TRUE)
    {   //this routine writes the value (WegLaenge2) of a meter counter to a string (wegl2) with the meter abbreviation.(m) 

       // this string is shown on the video screen

       //!!!!!!! Modified the string for debug purpose, so that the on screen position varies with increasing/decreasing of WegLaenge2
    PORTB.OUTTGL = PIN0_bm;
    // HAL_I2CWriteByte(0x48 , 0x07 , 0x13) ;
    sprintf(tmp,"%+06ld",WegLaenge2);
    sprintf(wegl2," m%c.%c%c%c%c%c", tmp[5],tmp[4],tmp[3],tmp[2],tmp[1],tmp[0]);
    sprintf(Tx,"%c%c%c%c%s",0x12,0x00,0x09,0x06,wegl2); // length = 0x12; 0x09 -> Write to String RAM; Use TB6 ---> String RAM
    // Paramter 0 / 1 Datalenght(string + Pointer)
    // Parameter 2 / SPPI command
    OSDPushToSpi(Tx);
    sprintf(Tx,"%c%c%c%c%c%c%c%c",0x06,0x00,0x05,0x06, 0xf0,(UCHAR)(WegLaenge2),((UCHAR)(WegLaenge2) >> 1),0xc0); //-->Tbox instruction RAM
    OSDPushToSpi(Tx);
    HAL_I2CWriteByte(0x48 , 0x80 , 0x40) ; // OSD-MAP(0x48), Reg:OSD TEXT BOX ENABLE_1; enable TB 6,
    HAL_I2CWriteByte(0x48 , 0xa0 , 0x40) ;
    //HAL_I2CWriteByte(0x48 , 0x0c , 0x01) ;
    WsendL2 = FALSE;
    v_shift ++;
    }
    //#############################################################################


    void init_ADV7623(void)
    {
    HAL_I2CWriteByte(0xB0, 0xff, 0x80) ;
    //###################### IO MAP ####################################
    HAL_I2CWriteByte(0xB0, 0x00, 0x1e) ; // SD 625i -> 720x576 0x01; HD 1920x1080->0x14,
    HAL_I2CWriteByte(0xB0, 0x01, 0x35) ; //PRIM-MODE HDMI-COMP Mode, 25Hz
    HAL_I2CWriteByte(0xB0, 0x02, 0xf4) ; //0x04 Auto CSC, RGB out, Set op_656 bit
    HAL_I2CWriteByte(0xB0, 0x04, 0x62) ; //28.63636 MHz
    HAL_I2CWriteByte(0xB0 , 0x05 , 0x2c) ; //AV Codes Off
    HAL_I2CWriteByte(0xB0 , 0x0C , 0x42) ; //Power up part and power down VDP
    HAL_I2CWriteByte(0xB0 , 0x0B , 0x00) ;
    HAL_I2CWriteByte(0xB0 , 0x15 , 0xbE) ; //Disable Tristate of Audio Pins
    HAL_I2CWriteByte(0xB0 , 0x1F , 0x21) ; //0x21 ADI Recommended Write, SPI -OSD !!!
    HAL_I2CWriteByte(0xB0 , 0x20 , 0xf0) ; // Set H to HPA_A Pin high
    HAL_I2CWriteByte(0xB0 , 0xEE , 0x48) ; //OSD Map Address
    HAL_I2CWriteByte(0xB0 , 0xEF , 0x70) ; //TX Packet Map Address
    HAL_I2CWriteByte(0xB0 , 0xF0 , 0x7E) ;// TX EDID Map Address
    HAL_I2CWriteByte(0xB0 , 0xF4 , 0x80) ; //CEC Map Address
    HAL_I2CWriteByte(0xB0 , 0xF5 , 0x7C) ;// HDMI Rx Infoframe Map Address
    HAL_I2CWriteByte(0xB0 , 0xF8 , 0x4C) ;// DPLL Map Address
    HAL_I2CWriteByte(0xB0 , 0xF9 , 0x64) ; //HDMI Rx Repeater Map Address
    HAL_I2CWriteByte(0xB0 , 0xFA , 0x6C) ;// HDMI Rx EDID Map Address
    HAL_I2CWriteByte(0xB0 , 0xFB , 0x68) ; //HDMI Rx Map Address
    HAL_I2CWriteByte(0xB0 , 0xFD , 0x44) ; //CP Map Address

    //########################## HDMI MAP ##################################
    HAL_I2CWriteByte(0x68 , 0x00 , 0xf0) ;// Set HDMI Input Port to A (45) (Enable BG monitoring)
    HAL_I2CWriteByte(0x68 , 0x01 , 0x80) ; //Enable auto. clock terminators
    HAL_I2CWriteByte(0x68 , 0x0D , 0xf4) ; // Full power BG ports
    HAL_I2CWriteByte(0x68 , 0x1A , 0x8A) ; //Unmute audio & enable new compressed audio mute mask bit
    HAL_I2CWriteByte(0x68 , 0x1b , 0x10) ; //FIFO data is output regardless of video PLL lock status
    HAL_I2CWriteByte(0x68 , 0x3C , 0x12) ; //Enable Audio Bypass mode
    HAL_I2CWriteByte(0x68 , 0x3D , 0x10) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x44 , 0x85) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x4c , 0x00) ; //NEW_VS_PARAM VSync filter for low frequency !! für 720p24/25/30
    HAL_I2CWriteByte(0x68 , 0x48 , 0x80) ; // DIS_PWRDNB and DIS_CABLE_DET_RST
    HAL_I2CWriteByte(0x68 , 0x50 , 0x04) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x57 , 0xB9) ; //PLL bandwidth setting
    HAL_I2CWriteByte(0x68 , 0x58 , 0x63) ; //PLL bandwidth setting
    HAL_I2CWriteByte(0x68 , 0x60 , 0x88) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x61 , 0x88) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x69 , 0xa2) ; //HPA_OVR_TERM , HPA_MANUAL (auto=0xa6)
    HAL_I2CWriteByte(0x68 , 0x6C , 0x18) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x75 , 0x10) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x8d , 0x0b) ; // LFG Port A
    HAL_I2CWriteByte(0x68 , 0x8e , 0x20) ; // HFG Port A
    HAL_I2CWriteByte(0x68 , 0x90 , 0x0b) ; // LFG Port B
    HAL_I2CWriteByte(0x68 , 0x91 , 0x30) ; // HFG Port B
    HAL_I2CWriteByte(0x68 , 0x93 , 0x0b) ; // LFG Port C
    HAL_I2CWriteByte(0x68 , 0x94 , 0x30) ; // HFG Port C
    HAL_I2CWriteByte(0x68 , 0x89 , 0x0b) ; // LFG Port D
    HAL_I2CWriteByte(0x68 , 0x8a , 0x30) ; // HFG Port D
    HAL_I2CWriteByte(0x68 , 0x96 , 0x00) ; //EQ_DYN_EN=0
    HAL_I2CWriteByte(0x68 , 0x98 , 0xFF) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x99 , 0xA1) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9A , 0xFF) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9B , 0x09) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9D , 0x02) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xC0 , 0xf0) ; //Power Mode on Ports: Automatic
    HAL_I2CWriteByte(0x68 , 0xC1 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc2 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc3 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc4 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc5 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc6 , 0xff) ; //ADI Recommended Write

    //####################### MAIN MAP ##########################
    HAL_I2CWriteByte(0xB8 , 0x01 , 0x00) ; //Set N Value(6144)27MHz LLc, and Fs = 48KHz --> Audio clock generation
    HAL_I2CWriteByte(0xB8 , 0x02 , 0x18) ; //Set N Value(6144)
    HAL_I2CWriteByte(0xB8 , 0x03 , 0x00) ; //Set N Value(6144)
    HAL_I2CWriteByte(0xB8 , 0x15 , 0x20) ; //I2S audio sampl. 48kHz
    HAL_I2CWriteByte(0xB8 , 0x16 , 0x00) ; //Color space select-> RGB
    HAL_I2CWriteByte(0xB8 , 0x17 , 0x02) ; //aspect radio 16:9
    HAL_I2CWriteByte(0xB8 , 0x3b , 0x00) ; //Pixel Repetition mode selection-> auto
    HAL_I2CWriteByte(0xB8 , 0x3c , 0x33) ; //User programmed video code (VIC)
    HAL_I2CWriteByte(0xB8 , 0x40 , 0x80) ; //General Control packet enable
    HAL_I2CWriteByte(0xB8 , 0x41 , 0x80) ; //Power up all circuits
    HAL_I2CWriteByte(0xB8 , 0x44 , 0x00) ;
    HAL_I2CWriteByte(0xB8 , 0x48 , 0x80) ; //allow detection of low frequ video
    HAL_I2CWriteByte(0xB8 , 0x55 , 0x40) ; //Set RGB // YCrCb 422 in AVinfo Frame
    HAL_I2CWriteByte(0xB8 , 0x56 , 0x6a) ; //Set active format Aspect --> 16:9
    HAL_I2CWriteByte(0xB8 , 0x96 , 0x00) ; //Vsync Interrupt Active
    HAL_I2CWriteByte(0xB8 , 0x98 , 0x07) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0x9A , 0x80) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0x9B , 0x1A) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0xA1 , 0x00) ; //power up all channels
    HAL_I2CWriteByte(0xB8 , 0xAF , 0x02) ; //Set HDMI Mode (DVI by default)
    HAL_I2CWriteByte(0xB8 , 0xBA , 0x60) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0xDF , 0x39) ; //ADI Recommended Write important???!!
    HAL_I2CWriteByte(0xB8 , 0xd5 , 0x00) ; //Black image enable
    HAL_I2CWriteByte(0xB8 , 0xd6 , 0x40) ; //HPD overriden

    //#############OSD MAP ######################
    HAL_I2CWriteByte(0x48 , 0x07 , 0x13) ;
    HAL_I2CWriteByte(0x48 , 0x00 , 0xb0) ; //Enables OSD
    HAL_I2CWriteByte(0x48 , 0x01 , 0xfc) ; // chroma/luma bandwidth limiting
    HAL_I2CWriteByte(0x48 , 0x04 , 0x00) ; //vertical offset adjust of OSD
    HAL_I2CWriteByte(0x48 , 0x05 , 0x05) ; // -"-
    HAL_I2CWriteByte(0x48 , 0x06 , 0x82) ; //OSD colorspace reduced RGB limited
    //HAL_I2CWriteByte(0x48 , 0x07 , 0x73) ; // Text zoom 2xvert 2x hor
    HAL_I2CWriteByte(0x48 , 0x10 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x11 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x12 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x13 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x14 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x15 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x16 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x17 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x20 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x30 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x80 , 0x01) ; // enable OSD TBOX
    HAL_I2CWriteByte(0x48 , 0x90 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa0 , 0x40) ; //highlight en
    HAL_I2CWriteByte(0x48 , 0x60 , 0x80) ; //SPI en; SPI_slave
    HAL_I2CWriteByte(0x48 , 0x70 , 0x88) ;
    HAL_I2CWriteByte(0x48 , 0x81 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x82 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x83 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x84 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x85 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x86 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x91 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x92 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa1 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa2 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xb1 , 0xff) ; //TBOX G
    HAL_I2CWriteByte(0x48 , 0xb2 , 0x00) ; //TBOX B
    HAL_I2CWriteByte(0x48 , 0xb3 , 0x00) ; //TBOX R
    HAL_I2CWriteByte(0x48 , 0xb7 , 0x00) ; //TBOX highlight G
    HAL_I2CWriteByte(0x48 , 0xb8 , 0xf0) ; //TBOX highlight B
    HAL_I2CWriteByte(0x48 , 0xb9 , 0xff) ; //TBOX highlight R HAL_I2CWriteByte(0x48 , 0xc0 , 0x0f) ;
    HAL_I2CWriteByte(0x48 , 0xc1 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xc2 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xd0 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd1 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd2 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd8 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd9 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xda , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe0 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe1 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe2 , 0xff) ;

    //################## CP MAP ##################
    HAL_I2CWriteByte(0x44 , 0x7f , 0x11) ; // DE Start define !!! V-SHift
    HAL_I2CWriteByte(0x44 , 0x86 , 0x0b) ;
    HAL_I2CWriteByte(0x44 , 0x8e , 0x20) ;
    HAL_I2CWriteByte(0x44 , 0x91 , 0x00) ; //progressive mode
    HAL_I2CWriteByte(0x44 , 0xba , 0x01) ; // HDMI Free Run
    HAL_I2CWriteByte(0x44 , 0xbf , 0x16) ; //Do not force the CP core free run, set default color
    HAL_I2CWriteByte(0x44 , 0xc0 , 0x80) ; // default color G
    HAL_I2CWriteByte(0x44 , 0xc1 , 0x80) ; //R
    HAL_I2CWriteByte(0x44 , 0xc2 , 0x80) ; //B DEF_COL_CHC
    HAL_I2CWriteByte(0x44 , 0xc9 , 0x2d) ;

    HAL_I2CWriteByte(0x64 , 0x77 , 0x01) ; //enables EDID I²C accesss of A port

    HAL_I2CWriteByte(0xB0 , 0x0C , 0x44) ; //Power up part and power down VDP
    HAL_I2CWriteByte(0x48 , 0x00 , 0x87) ; // OSD enable
    HAL_I2CWriteByte(0x48 , 0x06 , 0x80) ; //YPbPr(SD)
    HAL_I2CWriteByte(0x48 , 0x80 , 0x3f) ; // enable OSD TBOX
    HAL_I2CWriteByte(0x48 , 0x90 , 0x02) ;
    HAL_I2CWriteByte(0x48 , 0xb1 , 0xff) ; // TBOX textcolor G
    HAL_I2CWriteByte(0x48 , 0xb2 , 0x00) ; // TBOX textcolor B
    HAL_I2CWriteByte(0x48 , 0xb3 , 0x00) ; // TBOX textcolor R
    }

    This is the summary of the code regarding ATV7623

    Thanks and kind regards

    KLaus

Children
No Data