Post Go back to editing

Be confused by Physical Address and Logical Address on HDMI CEC

Hi ADI expert

Recently, I try to use HDMI CEC function to realize ARC on ADV7842, which is as a "TV" role. And certainly SPDIF signal is form DVD device.

Now, The ADV7842 can send out CEC command, but seems to not receive CEC siganl. by using  Logic analyzer, The ADV7842 can not Acknowledge,(Example: Command from hometheatre: "Header SRC=0x0F,DST=0x0 EOM=0,ACK=0"); and register 8027F0([1]:acknowlede received messages),detail as below.

So i confused, what is wrong? IS Physical Address OR Logical Address?

Thanks in advance.

Config_Data + 15 : LUT_DATA = 24'h804c00;//[2]:0 - Automatic power up feature enabled
Config_Data + 16 : LUT_DATA = 24'h802a3f;//[0]:1,Power up the CEC module; CEC_POWER_UP, Addr 80 (CEC), Address 0x2A[0]
Config_Data + 17 : LUT_DATA = 24'h802770;//[6:4]:1,CEC_LOGICAL_ADDRESS_MASK_2,1,0; [1]:0,Acknowledge received messages;
Config_Data + 18 : LUT_DATA = 24'h802845;//[7:4],[3:0],Logical address-1-0: 4-Playback Device 1, 5-Audio System
Config_Data + 19 : LUT_DATA = 24'h80290F;//[3:0],Logical address-2:f-broadcast 8-Playback Device 2
Config_Data + 20 : LUT_DATA = 24'h807701;//[0]:0,Use only buffers 0 to stores the CEC frames
Config_Data + 21 : LUT_DATA = 24'h4040b2;//INT1:Drives high when active
Config_Data + 22 : LUT_DATA = 24'h809638;//[5:3]:[1:1],INT1 interrupt mask for CEC Receiver Buffer 2,1,0 Ready interrupt.
Config_Data + 25 : LUT_DATA = 24'h801233;//[6:4],less than 5;Try to retransmit the message ? time if an error occurs
Config_Data + 26 : LUT_DATA = 24'h80000f;//0f;//Header of next outgoing message,(0b1111) is used for broadcast messages.
Config_Data + 27 : LUT_DATA = 24'h800182;//83;//36;//Byte 0 of next outgoing message
Config_Data + 28 : LUT_DATA = 24'h800200;
Config_Data + 29 : LUT_DATA = 24'h800300;
// Config_Data + 30 : LUT_DATA = 24'h800405;
// Config_Data + 31 : LUT_DATA = 24'h800500;
Config_Data + 32 : LUT_DATA = 24'h801004;//CEC_TX_FRAME_LENGTH[4:0], Message size of the transmitted frame. This is the number of byte in the outgoing message including the header.
Config_Data + 39 : LUT_DATA = 24'h801101;//CEC_TX_ENABLE,Address 0x11[0],Transmission mode enabled and message transmission started
  • Hi,

    What is the CEC command you are receiving form home theatre? what opcode value you are receiving?

    Regards,

    Poornima.

  • ADV7842 :       0F 82 00 00

    hometheater :  50(ACK=0,EOM=0), 50(retry once more),  ---  ADV7842 is NOT responsible, and CEC Stop.

  • Hi,

    Are you using ADV7842 Eval platform or customized platform?

    If it is TV application the logical address should be 0 and physical address will be 1.0.0.0 based on the port number.

    Please keep the registers 27 , 28 and 29 of CEC map as below

    80 27 10 , 80 28 00 , 80 29 00

    Give standby message from 7842 and check home theater goes to standby or not?

    Instead of giving active source from TV ,Could you please try to send the 0x85(request active source) and check whether the 7842 responds or not.

    Regards,

    Poornima.

  • Hi Poornima

    Thanks for you kindly reply.

    as you said, Give standby message from 78842 to Home-Theater, Home-Theater goes to standby mode.

    80 00 0F, 80 01 36,

    The next step, I just instead of giving active source from TV

    80 00 0F, 80 01 85,

    Home theater reply but TV(ADV7842) NO respond, CEC bus break off.

    Attachment is CEC wave captured.

    Regards,

  • winkle.zr.zhang@gmail.com 撰写:

    Hi Poornima

    Thanks for you kindly reply.

    as you said, Give standby message from 78842 to Home-Theater, Home-Theater goes to standby mode.

    80 00 0F, 80 01 36,

    The next step, I just instead of giving active source from TV

    80 00 0F, 80 01 85,

    Home theater reply but TV(ADV7842) NO respond, CEC bus break off.

    Attachment is CEC wave captured.

    Regards,

  • Hi,

    Are you using ADV7842 Evaluation platform or customized platform?

    Are you able to reproduce it in Evaluation platform?

    We have tried with 7842 TV application with "request active source". we are able to get the message "active source" from the source.

    Have you set the registers(logical address) as above?

    Have you received any message in the 7842 CEC_BUF0_RX_FRAME_DATA(0x15 to 0x25) after "request active source"? Could you send me buffer values?

    For enabling all the buffers set 0x77[0] as 1 and check whether you received any message in the buffers.

    Regards,

    Poornima.

  • Hi Poornima

    Now i use to ADV7842 Evaluation platform and TestData as below.

    1. EDID set register 9E:10 9F:00(Phyical address)

    2. write rigster:

    wri2c 80 4c 00

    wri2c 80 2a 3f

    wri2c 80 27 10

    wri2c 80 28 00

    wri2c 80 29 00

    wri2c 80 77 01

    wri2c 80 00 0f

    wri2c 80 01 85;"request active source"

    wri2c 80 11 01

    3. and then check CEC_BUF0_RX_FRAME_DATA(0x15 to 0x25) on AVES2 as below:

    80 15 8F;BUF0 RX FRAME_HEADER

    80 16 84;BUF0 RX FRAME DATA0, <Report Physical Address>

    80 17 30;BUF0 RX FRAME DATA1, <Physical Address>

    80 18 00;BUF0 RX FRAME DATA2, <Physical Address>

    80 19 04;BUF0 RX FRAME DATA3, <Logical Address>

    80 25 05;BUF0 RX FRAME LENGTH

    About all above. i have problems:

    0. according to ADV7842 hardware UG on Page 416, "The host must set the destination logical address(es) that the CEC receive section will respond to.", which means ADV7812 will respond to ONLY logical address on 80 28, 80 29 registers, but why you set 00 to the two registers? it should be set 04,05 or 08 specialized HomeTheater.

    1. How can i set the logical address to 0 for TV application?

    2. Why captured Timing picture shown above by logicAnalyzer show difference with AVES2.exe?

    3. can you tell me, how ADV7842 act as TV application in detail? example: ADV7842 infrom TV to open ARC.

    4. And, when ADV7842 receive CEC message(s), How can i set so that ADV7842 INT1 is active?

    thank you very much.

  • Hi,

    We will try this sequence here and let you know the details.

    Regards,

    Poornima.

  • Hi,

    In the above register setting , we have enabled only one logical address. so we have given the above register value.

    In step 3 mentioned above , the home theater sends the response and ADV7842 receives the message.

    For "request active source message" the ADV7842 receives the "report physical address" message from Buf0.

    ADv7842 is receiving some CEC message right? we have tried the above sequence with player is used as source.

    we have got the "active source " message from player. Could you please check with the player?

    Have you enabled all the 3 buffers and checked any other message received in other buffers from home theater?

    Whenever you receive messages on the buffer , please clear the BUF by setting 80 0x90 0x38 and check.

    if home theater sends any message only for particular device like TV , if you have not enabled the logical address for TV application , this may not be received in ADV7842. Only broadcast message will be received.

    1. How can i set the logical address to 0 for TV application?

    if you want to use 7842 as TV one logical address should be set as 0 for TV application.

    2. Why captured Timing picture shown above by logicAnalyzer show difference with AVES2.exe?

    Sorry, i am not clear about this question.

    3. can you tell me, how ADV7842 act as TV application in detail? example: ADV7842 infrom TV to open ARC.

    For initiating ARC , since you are configuring ADV7842 as TV, the home theater or source should send the message to initiate ARC. we need to respond for the message.

    4. And, when ADV7842 receive CEC message(s), How can i set so that ADV7842 INT1 is active?

    Could you please elaborate the question?


    Regards,

    Poornima.