30. HDMI-CEC controller (CEC)

30.1 HDMI-CEC introduction

Consumer electronics control (CEC) is part of HDMI (high-definition multimedia interface) standard. It contains a protocol that provides high-level control functions between various audiovisual products. CEC operates at low speeds, with minimum processing and memory overhead.

The HDMI-CEC controller provides hardware support for this protocol.

30.2 HDMI-CEC controller main features

30.3 HDMI-CEC functional description

30.3.1 HDMI-CEC pin

The CEC bus consists of a single bidirectional line that is used to transfer data in and out of the device. It is connected to a +3.3 V supply voltage via a 27 k \( \Omega \) pull-up resistor. The output stage of the device must have an open-drain or open-collector to allow a wired-AND connection.

The HDMI-CEC controller manages the CEC bidirectional line as an alternate function of a standard GPIO, assuming that it is configured as alternate function open drain. The 27 k \( \Omega \) pull-up must be added externally to the microcontroller.

To not interfere with the CEC bus when the application power is removed, it is mandatory to isolate the CEC pin from the bus in such conditions. This can be done by using a MOS transistor, as shown on Figure 283 .

Table 119. HDMI pin

NameSignal typeRemarks
CECBidirectionalTwo states:
– 1 = high impedance
– 0 = low impedance
A 27 k \( \Omega \) resistor must be added externally.

30.3.2 HDMI-CEC block diagram

Figure 283. HDMI-CEC block diagram

Figure 283. HDMI-CEC block diagram. This diagram shows the internal architecture of the STM32 HDMI-CEC controller and its connection to a remote CEC device. The controller includes a Cortex Core connected via AHB and APB buses to a CEC ITF (Interface). The CEC ITF is connected to a 32 kHz CEC Kernel, which in turn connects to a CEC PAD. The CEC PAD is connected to the CEC line S, which is pulled up to 3.3V by a 27 kΩ resistor. The CEC line S is also connected to a Remote CEC device through a MOS transistor (G, D, S pins) and a 3.3V supply. The controller also includes an RCC (Reset and Clock Control) block connected to HSI and LSE inputs, an Event control block, and a Wake-int block. The diagram is labeled MSv35920V2.
Figure 283. HDMI-CEC block diagram. This diagram shows the internal architecture of the STM32 HDMI-CEC controller and its connection to a remote CEC device. The controller includes a Cortex Core connected via AHB and APB buses to a CEC ITF (Interface). The CEC ITF is connected to a 32 kHz CEC Kernel, which in turn connects to a CEC PAD. The CEC PAD is connected to the CEC line S, which is pulled up to 3.3V by a 27 kΩ resistor. The CEC line S is also connected to a Remote CEC device through a MOS transistor (G, D, S pins) and a 3.3V supply. The controller also includes an RCC (Reset and Clock Control) block connected to HSI and LSE inputs, an Event control block, and a Wake-int block. The diagram is labeled MSv35920V2.

30.3.3 Message description

All transactions on the CEC line consist of an initiator and one or more followers. The initiator is responsible for sending the message structure and the data. The follower is the recipient of any data and is responsible for setting any acknowledgment bits.

A message is conveyed in a single frame that consists of a start bit followed by a header block and optionally an opcode and a variable number of operand blocks.

All these blocks are made of a 8-bit payload - most significant bit is transmitted first - followed by an end of message (EOM) bit and an acknowledge (ACK) bit.

The EOM bit is set in the last block of a message and kept reset in all others. In case a message contains additional blocks after an EOM is indicated, those additional blocks must be ignored. The EOM bit may be set in the header block to 'ping' other devices, to make sure they are active.

The acknowledge bit is always set to high impedance by the initiator so that it can be driven low either by the follower that has read its own address in the header, or by the follower that needs to reject a broadcast message.

The header consists of the source logical address field, and the destination logical address field. Note that the special address 0xF is used for broadcast messages.

Figure 284. Message structure

Figure 284. Message structure diagram showing the sequence of fields in a CEC message.

The diagram illustrates the structure of a CEC message. It begins with a 'high impedance' state, followed by a 'START BIT'. The message then contains a 'HEADER' block, an 'OPCODE' block, and a series of 'OPERAND' blocks. A bracket above the operand blocks indicates there can be '0 to 14 operands'. The message concludes with another 'high impedance' state. The identifier 'MS31004V1' is located in the bottom right corner.

Figure 284. Message structure diagram showing the sequence of fields in a CEC message.

Figure 285. Blocks

Figure 285. Blocks diagram showing the internal structure of HEADER and OPCODE/OPERAND blocks.

The diagram shows the internal bit structure of two types of blocks. The 'HEADER BLOCK' is an 8-bit byte containing 'INITIATOR[3:0]' (bits 7-4), 'DESTINATION[3:0]' (bits 3-0), 'EOM' (bit 1), and 'ACK' (bit 0). The 'OPCODE/OPERAND BLOCK' is also an 8-bit byte containing 'DATA[7:0]' (bits 7-0), 'EOM' (bit 1), and 'ACK' (bit 0). In both cases, the 'ACK' bit is set to '0' (high impedance). The identifier 'MS31005V1' is located in the bottom right corner.

Figure 285. Blocks diagram showing the internal structure of HEADER and OPCODE/OPERAND blocks.

30.3.4 Bit timing

The format of the start bit is unique and identifies the start of a message. It must be validated by its low duration and its total duration.

All remaining data bits in the message, after the start bit, have consistent timing. The high-to-low transition at the end of the data bit is the start of the next data bit except for the final bit where the CEC line remains high.

Figure 286. Bit timings

Figure 286. Bit timings. Timing diagrams for START BIT, DATA BIT INITIATOR LOGICAL 0, DATA BIT INITIATOR LOGICAL 1, and DATA BIT FOLLOWER LOGICAL 0. Each diagram shows high and low impedance levels over time with specific duration constraints.

START BIT

DATA BIT INITIATOR LOGICAL 0

DATA BIT INITIATOR LOGICAL 1

DATA BIT FOLLOWER LOGICAL 0

MS31006V1

Figure 286. Bit timings. Timing diagrams for START BIT, DATA BIT INITIATOR LOGICAL 0, DATA BIT INITIATOR LOGICAL 1, and DATA BIT FOLLOWER LOGICAL 0. Each diagram shows high and low impedance levels over time with specific duration constraints.

30.4 Arbitration

All devices transmitting - or retransmitting - a message onto the CEC line must ensure that it has been inactive for a number of bit periods. This signal-free time is defined as the time starting from the final bit of the previous frame and depends on the initiating device and the current status as shown in the figure below.

Figure 287. Signal free time

Figure 287. Signal free time. Diagram showing the time interval between the end of a previous message and the start of a new message.

Signal free time

PREVIOUS MESSAGE

NEW MESSAGE

MS31007V1

Figure 287. Signal free time. Diagram showing the time interval between the end of a previous message and the start of a new message.

Since only one initiator is allowed at any one time, an arbitration mechanism is provided to avoid conflict when more than one initiator begins transmitting at the same time.

CEC line arbitration starts with the leading edge of the start bit and continues until the end of the initiator address bits within the header block. During this period, the initiator must monitor the CEC line, if whilst driving the line to high impedance it reads it back to 0. Assuming then it has lost arbitration, it stops transmitting and becomes a follower.

Figure 288. Arbitration phase

Figure 288: Arbitration phase diagram showing a sequence of fields: high impedance, START BIT, INITIATOR[3:0], DESTINATION[3:0], EOM, and ACK. The arbitration phase is indicated by a double-headed arrow spanning the START BIT and INITIATOR[3:0] fields. The diagram is labeled MS31008V1.
Figure 288: Arbitration phase diagram showing a sequence of fields: high impedance, START BIT, INITIATOR[3:0], DESTINATION[3:0], EOM, and ACK. The arbitration phase is indicated by a double-headed arrow spanning the START BIT and INITIATOR[3:0] fields. The diagram is labeled MS31008V1.

Figure 289 shows an example for a SFT of three nominal bit periods.

Figure 289. SFT of three nominal bit periods

Figure 289: SFT of three nominal bit periods diagram showing a timing diagram. It illustrates the 'last bit of previous frame' followed by a 'Start bit'. The SFT (Start of Frame Time) is shown as a duration of three nominal bit periods, starting from the beginning of the start bit. The diagram is labeled MS31009V1.
Figure 289: SFT of three nominal bit periods diagram showing a timing diagram. It illustrates the 'last bit of previous frame' followed by a 'Start bit'. The SFT (Start of Frame Time) is shown as a duration of three nominal bit periods, starting from the beginning of the start bit. The diagram is labeled MS31009V1.

A configurable time window is counted before starting the transmission.

In the SFT = 0 configuration, HDMI-CEC performs automatic SFT calculation ensuring compliance with the HDMI-CEC standard:

This is done to guarantee the maximum priority to a failed transmission and the lowest one to the last initiator that completed successfully its transmission.

Otherwise there is the possibility to configure the SFT bits to count a fixed timing value. Possible values are 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5 data bit periods.

30.4.1 SFT option bit

In case of SFTOPT = 0 configuration, SFT starts being counted when the start-of-transmission command is set by software (TXSOM = 1).

In case of SFTOPT = 1, SFT starts automatically being counted by the HDMI-CEC device when a bus-idle or line error condition is detected. If the SFT timer is completed at the time TXSOM command is set then transmission starts immediately without latency. If the SFT timer is still running instead, the system waits until the timer elapses before transmission can start.

In case of SFTOPT = 1 a bus-event condition starting the SFT timer is detected in the following cases:

30.5 Error handling

30.5.1 Bit error

If a data bit - excluding the start bit - is considered invalid, the follower is expected to notify such error by generating a low bit period on the CEC line of 1.4 to 1.6 times the nominal data bit period (3.6 ms nominally).

Figure 290. Error bit timing

Timing diagram for an error bit. The diagram shows a signal line transitioning from high impedance to low impedance to form an 'ERROR BIT' and then back to high impedance. The duration of the low impedance period is labeled as 3.6 ms +/- 0.24 ms. The diagram is labeled MS31010V1.

The diagram illustrates the timing for an error bit. It shows a signal line that transitions from a high impedance state to a low impedance state to create an 'ERROR BIT', and then returns to a high impedance state. The duration of the low impedance period is specified as 3.6 ms with a tolerance of +/- 0.24 ms. The diagram is labeled MS31010V1.

Timing diagram for an error bit. The diagram shows a signal line transitioning from high impedance to low impedance to form an 'ERROR BIT' and then back to high impedance. The duration of the low impedance period is labeled as 3.6 ms +/- 0.24 ms. The diagram is labeled MS31010V1.

30.5.2 Message error

A message is considered lost and therefore may be retransmitted under the following conditions:

Three kinds of error flag can be detected when the CEC interface is receiving a data bit:

30.5.3 Bit rising error (BRE)

BRE (bit rising error) is set when a bit rising edge is detected outside the windows where it is expected (see Figure 291 ). BRE flag also generates a CEC interrupt if the BREIE = 1.

In the case of a BRE detection, the message reception can be stopped according to the BRESTP bit value and an error bit can be generated if BREGEN bit is set.

When BRE is detected in a broadcast message with BRESTP = 1 an error bit is generated even if BREGEN = 0 to enforce initiator's retry of the failed transmission. Error bit generation can be disabled by configuring BREGEN = 0, BRDNOGEN = 1.

30.5.4 Short bit period error (SBPE)

SBPE is set when a bit falling edge is detected earlier than expected (see Figure 291 ). SBPE flag also generates a CEC interrupt if the SBPEIE = 1.

An error bit is always generated on the line in case of a SBPE error detection. An error bit is not generated upon SBPE detection only when Listen mode is set (LSTN = 1) and the following conditions are met:

30.5.5 Long bit period error (LBPE)

LBPE is set when a bit falling edge is not detected in a valid window (see Figure 291 ). LBPE flag also generates a CEC interrupt if the LBPEIE = 1.

LBPE always stops the reception, an error bit is generated on the line when LBPEGEN bit is set.

When LBPE is detected in a broadcast message an error bit is generated even if LBPEGEN = 0 to enforce initiator's retry of the failed transmission. Error bit generation can be disabled by configuring LBPEGEN = 0, BRDNOGEN = 1.

Note: The BREGEN = 1, BRESTP = 0 configuration must be avoided.

Figure 291. Error handling

Timing diagram for error handling (BRE, SBPE, LBPE) on a CEC line. The diagram shows two signal transitions. The top signal shows a BRE (Brown-out Reset Error) detected when the signal does not return to high within the BRE Checking Window. The bottom signal shows an SBPE (Short Bit Period Error) detected when the falling edge occurs earlier than expected, and an LBPE (Long Bit Period Error) detected when the falling edge is not detected within the expected window. The diagram includes a legend for BRE Checking Window, CEC initiator bit-timing, and Tolerance margins. Time markers Ts, T1, Tn1, T2, Tns, T3, Tn0, T4, T5, Tnf, and T6 are shown along the bottom.

The figure is a timing diagram illustrating error handling on a CEC line. It shows two signal transitions. The top signal shows a BRE (Brown-out Reset Error) detected when the signal does not return to high within the BRE Checking Window. The bottom signal shows an SBPE (Short Bit Period Error) detected when the falling edge occurs earlier than expected, and an LBPE (Long Bit Period Error) detected when the falling edge is not detected within the expected window. The diagram includes a legend for BRE Checking Window, CEC initiator bit-timing, and Tolerance margins. Time markers Ts, T1, Tn1, T2, Tns, T3, Tn0, T4, T5, Tnf, and T6 are shown along the bottom. The diagram is labeled MS31011V1.

Timing diagram for error handling (BRE, SBPE, LBPE) on a CEC line. The diagram shows two signal transitions. The top signal shows a BRE (Brown-out Reset Error) detected when the signal does not return to high within the BRE Checking Window. The bottom signal shows an SBPE (Short Bit Period Error) detected when the falling edge occurs earlier than expected, and an LBPE (Long Bit Period Error) detected when the falling edge is not detected within the expected window. The diagram includes a legend for BRE Checking Window, CEC initiator bit-timing, and Tolerance margins. Time markers Ts, T1, Tn1, T2, Tns, T3, Tn0, T4, T5, Tnf, and T6 are shown along the bottom.
Table 120. Error handling timing parameters
TimeRXTOLmsDescription
\( T_s \)x0Bit start event.
\( T_1 \)10.3The earliest time for a low - high transition when indicating a logical 1.
00.4
\( T_{n1} \)x0.6The nominal time for a low - high transition when indicating a logical 1.
\( T_2 \)00.8The latest time for a low - high transition when indicating a logical 1.
10.9
\( T_{ns} \)x1.05Nominal sampling time.
\( T_3 \)11.2The earliest time a device is permitted return to a high impedance state (logical 0).
01.3
\( T_{n0} \)x1.5The nominal time a device is permitted return to a high impedance state (logical 0).
\( T_4 \)01.7The latest time a device is permitted return to a high impedance state (logical 0).
11.8
\( T_5 \)11.85The earliest time for the start of a following bit.
02.05
\( T_{nf} \)x2.4The nominal data bit period.
\( T_6 \)02.75The latest time for the start of a following bit.
12.95

30.5.6 Transmission error detection (TXERR)

The CEC initiator sets the TXERR flag if detecting low impedance on the CEC line when it is transmitting high impedance and is not expecting a follower asserted bit. TXERR flag also generates a CEC interrupt if the TXERRIE = 1.

TXERR assertion stops the message transmission. Application is in charge to retry the failed transmission up to five times.

TXERR checks are performed differently depending on the different states of the CEC line and on the RX tolerance configuration.

Figure 292. TXERR detection

Timing diagram for TXERR detection showing signal transitions and checking windows for Tx data bit-1, Tx arbitration bit-1, Tx data bit-0, and Tx arbitration bit-0. The diagram includes a legend for TXERR Checking Window, CEC initiator bit-timing, and Tolerance margins. Time points Ts, T1, Tn1, T2, Tns, T3, Tn0, T4, T5, Tnf, and T6 are marked on the timeline.

Legend:

Signal levels and timing points:

MS31012V1

Timing diagram for TXERR detection showing signal transitions and checking windows for Tx data bit-1, Tx arbitration bit-1, Tx data bit-0, and Tx arbitration bit-0. The diagram includes a legend for TXERR Checking Window, CEC initiator bit-timing, and Tolerance margins. Time points Ts, T1, Tn1, T2, Tns, T3, Tn0, T4, T5, Tnf, and T6 are marked on the timeline.

Table 121. TXERR timing parameters

TimeRXTOLmsDescription
\( T_s \)x0Bit start event.
\( T_1 \)10.3The earliest time for a low - high transition when indicating a logical 1.
00.4
\( T_{n1} \)x0.6The nominal time for a low - high transition when indicating a logical 1.
\( T_2 \)00.8The latest time for a low - high transition when indicating a logical 1.
10.9
\( T_{ns} \)x1.05Nominal sampling time.
\( T_3 \)11.2The earliest time a device is permitted return to a high impedance state (logical 0).
01.3
\( T_{n0} \)x1.5The nominal time a device is permitted return to a high impedance state (logical 0).
\( T_4 \)01.7The latest time a device is permitted return to a high impedance state (logical 0).
11.8
\( T_5 \)11.85The earliest time for the start of a following bit.
02.05
\( T_{nf} \)x2.4The nominal data bit period.

Table 121. TXERR timing parameters (continued)

TimeRXTOLmsDescription
T 602.75The latest time for the start of a following bit.
12.95

30.6 HDMI-CEC interrupts

An interrupt can be produced:

Table 122. HDMI-CEC interrupts

Interrupt eventEvent flagEnable control bit
Rx-byte receivedRXBRRXBRIE
End of receptionRXENDRXENDIE
Rx-overrunRXOVRRXOVRIE
Rxbit rising errorBREBREIE
Rx-short bit period errorSBPESBPEIE
Rx-long bit period errorLBPELBPEIE
Rx-missing acknowledge errorRXACKERXACKEIE
Arbitration lostARBLSTARBLSTIE
Tx-byte requestTXBRTXBRIE
End of transmissionTXENDTXENDIE
Tx-buffer underrunTXUDRTXUDRIE
Tx-errorTXERRTXERRIE
Tx-missing acknowledge errorTXACKETXACKEIE

30.7 HDMI-CEC registers

Refer to Section 1.2 for a list of abbreviations used in register descriptions. The registers have to be accessed by words (32 bits).

30.7.1 CEC control register (CEC_CR)

Address offset: 0x00

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.TXEOM
rs
TXSOM
rs
CECEN
rw

Bits 31:3 Reserved, must be kept at reset value.

Bit 2 TXEOM: Tx end of message

The TXEOM bit is set by software to command transmission of the last byte of a CEC message.

TXEOM is cleared by hardware at the same time and under the same conditions as for TXSOM.

0: TXDR data byte is transmitted with EOM = 0.

1: TXDR data byte is transmitted with EOM = 1.

Note: TXEOM must be set when CECEN = 1.

TXEOM must be set before writing transmission data to TXDR.

If TXEOM is set when TXSOM = 0, transmitted message consists of 1 byte (HEADER) only (PING message).

Bit 1 TXSOM: Tx start of message

TXSOM is set by software to command transmission of the first byte of a CEC message. If the CEC message consists of only one byte, TXEOM must be set before of TXSOM.

Start-bit is effectively started on the CEC line after SFT is counted. If TXSOM is set while a message reception is ongoing, transmission starts after the end of reception.

TXSOM is cleared by hardware after the last byte of the message is sent with a positive acknowledge (TXEND = 1), in case of transmission underrun (TXUDR = 1), negative acknowledge (TXACKE = 1), and transmission error (TXERR = 1). It is also cleared by CECEN = 0. It is not cleared and transmission is automatically retried in case of arbitration lost (ARBLST = 1).

TXSOM can be also used as a status bit informing application whether any transmission request is pending or under execution. The application can abort a transmission request at any time by clearing the CECEN bit.

0: No CEC transmission is on-going.

1: CEC transmission command

Note: TXSOM must be set when CECEN = 1.

TXSOM must be set when transmission data is available into TXDR.

HEADER first four bits containing own peripheral address are taken from TXDR[7:4], not from CEC_CFGR.OAR that is used only for reception.

Bit 0 CECEN : CEC enable

The CECEN bit is set and cleared by software. CECEN = 1 starts message reception and enables the TXSOM control. CECEN = 0 disables the CEC peripheral, clears all bits of CEC_CR register and aborts any on-going reception or transmission.

0: CEC peripheral is off.

1: CEC peripheral is on.

30.7.2 CEC configuration register (CEC_CFGR)

This register is used to configure the HDMI-CEC controller.

Address offset: 0x04

Reset value: 0x0000 0000

Caution: It is mandatory to write CEC_CFGR only when CECEN = 0.

31302928272625242322212019181716
LSTNOAR[14:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.SFTOPBRDN
OGEN
LBPEG
EN
BREGE
N
BREST
P
RXTOLSFT[2:0]
rwrwrwrwrwrwrwrwrw
Bit 31 LSTN : Listen mode

LSTN bit is set and cleared by software.

0: CEC peripheral receives only message addressed to its own address (OAR). Messages addressed to different destination are ignored. Broadcast messages are always received.

1: CEC peripheral receives messages addressed to its own address (OAR) with positive acknowledge. Messages addressed to different destination are received, but without interfering with the CEC bus: no acknowledge sent.

Bits 30:16 OAR[14:0] : Own addresses configuration

The OAR bits are set by software to select which destination logical addresses has to be considered in receive mode. Each bit, when set, enables the CEC logical address identified by the given bit position.

At the end of HEADER reception, the received destination address is compared with the enabled addresses. In case of matching address, the incoming message is acknowledged and received. In case of non-matching address, the incoming message is received only in listen mode (LSTN = 1), but without acknowledge sent. Broadcast messages are always received.

Example:

OAR = 0b000 0000 0010 0001 means that CEC acknowledges addresses 0x0 and 0x5.

Consequently, each message directed to one of these addresses is received.

Bits 15:9 Reserved, must be kept at reset value.

Bit 8 SFTOP : SFT option bit

The SFTOPT bit is set and cleared by software.

0: SFT timer starts when TXSOM is set by software.

1: SFT timer starts automatically at the end of message transmission/reception.

Bit 7 BRDNOGEN : Avoid error-bit generation in broadcast

The BRDNOGEN bit is set and cleared by software.

0: BRE detection with BRESTP = 1 and BREGEN = 0 on a broadcast message generates an error-bit on the CEC line. LBPE detection with LBPEGEN = 0 on a broadcast message generates an error-bit on the CEC line.

1: Error-bit is not generated in the same condition as above. An error-bit is not generated even in case of an SBPE detection in a broadcast message if listen mode is set.

Bit 6 LBPEGEN : Generate error-bit on long bit period error

The LBPEGEN bit is set and cleared by software.

0: LBPE detection does not generate an error-bit on the CEC line.

1: LBPE detection generates an error-bit on the CEC line.

Note: If BRDNOGEN = 0, an error-bit is generated upon LBPE detection in broadcast even if LBPEGEN = 0.

Bit 5 BREGEN : Generate error-bit on bit rising error

The BREGEN bit is set and cleared by software.

0: BRE detection does not generate an error-bit on the CEC line.

1: BRE detection generates an error-bit on the CEC line (if BRESTP is set).

Note: If BRDNOGEN = 0, an error-bit is generated upon BRE detection with BRESTP = 1 in broadcast even if BREGEN = 0.

Bit 4 BRESTP : Rx-stop on bit rising error

The BRESTP bit is set and cleared by software.

0: BRE detection does not stop reception of the CEC message. Data bit is sampled at 1.05 ms.

1: BRE detection stops message reception.

Bit 3 RXTOL : Rx-tolerance

The RXTOL bit is set and cleared by software.

0: Standard tolerance margin:

1: Extended tolerance

Bits 2:0 SFT[2:0] : Signal free time

SFT bits are set by software. In the SFT = 0x0 configuration, the number of nominal data bit periods waited before transmission is ruled by hardware according to the transmission history. In all the other configurations the SFT number is determined by software.

0x0

0x1: 0.5 nominal data bit periods

0x2: 1.5 nominal data bit periods

0x3: 2.5 nominal data bit periods

0x4: 3.5 nominal data bit periods

0x5: 4.5 nominal data bit periods

0x6: 5.5 nominal data bit periods

0x7: 6.5 nominal data bit periods

30.7.3 CEC Tx data register (CEC_TXDR)

Address offset: 0x8

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.TXD[7:0]
wwwwwwww

Bits 31:8 Reserved, must be kept at reset value.

Bits 7:0 TXD[7:0] : Tx data

TXD is a write-only register containing the data byte to be transmitted.

30.7.4 CEC Rx data register (CEC_RXDR)

Address offset: 0xC

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.RXD[7:0]
rrrrrrrr

Bits 31:8 Reserved, must be kept at reset value.

Bits 7:0 RXD[7:0] : Rx data

RXD is read-only and contains the last data byte that has been received from the CEC line.

30.7.5 CEC interrupt and status register (CEC_ISR)

Address offset: 0x10

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.TXACK
E
TXERRTXUDRTXENDTXBRARBLSTRXACK
E
LBPESBPEBRERXOVRRXENDRXBR
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

Bits 31:13 Reserved, must be kept at reset value.

Bit 12 TXACKE: Tx-missing acknowledge error

In transmission mode, TXACKE is set by hardware to inform application that no acknowledge was received. In case of broadcast transmission, TXACKE informs application that a negative acknowledge was received. TXACKE aborts message transmission and clears TXSOM and TXEOM controls.

TXACKE is cleared by software write at 1.

Bit 11 TXERR: Tx-error

In transmission mode, TXERR is set by hardware if the CEC initiator detects low impedance on the CEC line while it is released. TXERR aborts message transmission and clears TXSOM and TXEOM controls.

TXERR is cleared by software write at 1.

Bit 10 TXUDR: Tx-buffer underrun

In transmission mode, TXUDR is set by hardware if application was not in time to load TXDR before of next byte transmission. TXUDR aborts message transmission and clears TXSOM and TXEOM control bits.

TXUDR is cleared by software write at 1.

Bit 9 TXEND: End of transmission

TXEND is set by hardware to inform application that the last byte of the CEC message has been successfully transmitted. TXEND clears the TXSOM and TXEOM control bits.

TXEND is cleared by software write at 1.

Bit 8 TXBR: Tx-byte request

TXBR is set by hardware to inform application that the next transmission data has to be written to TXDR. TXBR is set when the 4th bit of currently transmitted byte is sent. Application must write the next byte to TXDR within six nominal data-bit periods before transmission underrun error occurs (TXUDR).

TXBR is cleared by software write at 1.

Bit 7 ARBLST: Arbitration lost

ARBLST is set by hardware to inform application that CEC device is switching to reception due to arbitration lost event following the TXSOM command. ARBLST can be due either to a contending CEC device starting earlier or starting at the same time but with higher HEADER priority. After ARBLST assertion TXSOM bit keeps pending for next transmission attempt.

ARBLST is cleared by software write at 1.

Bit 6 RXACKE: Rx-missing acknowledge

In receive mode, RXACKE is set by hardware to inform application that no acknowledge was seen on the CEC line. RXACKE applies only for broadcast messages and in listen mode also for not directly addressed messages (destination address not enabled in OAR). RXACKE aborts message reception.

RXACKE is cleared by software write at 1.

Bit 5 LBPE: Rx-long bit period error

LBPE is set by hardware in case a data-bit waveform is detected with long bit period error. LBPE is set at the end of the maximum bit-extension tolerance allowed by RXTOL, in case falling edge is still longing. LBPE always stops reception of the CEC message. LBPE generates an error-bit on the CEC line if LBPEGEN = 1. In case of broadcast, error-bit is generated even in case of LBPEGEN = 0.

LBPE is cleared by software write at 1.

Bit 4 SBPE: Rx-short bit period error

SBPE is set by hardware in case a data-bit waveform is detected with short bit period error. SBPE is set at the time the anticipated falling edge occurs. SBPE generates an error-bit on the CEC line.

SBPE is cleared by software write at 1.

Bit 3 BRE : Rx-bit rising error

BRE is set by hardware in case a data-bit waveform is detected with bit rising error. BRE is set either at the time the misplaced rising edge occurs, or at the end of the maximum BRE tolerance allowed by RXTOL, in case rising edge is still longing. BRE stops message reception if BRESTOP = 1. BRE generates an error-bit on the CEC line if BREGEN = 1.

BRE is cleared by software write at 1.

Bit 2 RXOVR : Rx-overrun

RXOVR is set by hardware if RXBR is not yet cleared at the time a new byte is received on the CEC line and stored into RXD. RXOVR assertion stops message reception so that no acknowledge is sent. In case of broadcast, a negative acknowledge is sent.

RXOVR is cleared by software write at 1.

Bit 1 RXEND : End of reception

RXEND is set by hardware to inform application that the last byte of a CEC message is received from the CEC line and stored into the RXD buffer. RXEND is set at the same time of RXBR.

RXEND is cleared by software write at 1.

Bit 0 RXBR : Rx-byte received

The RXBR bit is set by hardware to inform application that a new byte has been received from the CEC line and stored into the RXD buffer.

RXBR is cleared by software write at 1.

30.7.6 CEC interrupt enable register (CEC_IER)

Address offset: 0x14

Reset value: 0x0000 0000

Caution: It is mandatory to write CEC_IER only when CECEN = 0.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.TXACKIETXERRIETXUDRIETXENDIETXBRIEARBLS TIERXACKIELBPEIESBPEIEBREIERXOVR IERXENDIERXBRIE
rwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:13 Reserved, must be kept at reset value.

Bit 12 TXACKIE : Tx-missing acknowledge error interrupt enable

The TXACKIE bit is set and cleared by software.

0: TXACKIE interrupt disabled

1: TXACKIE interrupt enabled

Bit 11 TXERRIE : Tx-error interrupt enable

The TXERRIE bit is set and cleared by software.

0: TXERRIE interrupt disabled

1: TXERRIE interrupt enabled

Bit 10 TXUDRIE : Tx-underrun interrupt enable

The TXUDRIE bit is set and cleared by software.

0: TXUDRIE interrupt disabled

1: TXUDRIE interrupt enabled

  1. Bit 9 TXENDIE : Tx-end of message interrupt enable
    The TXENDIE bit is set and cleared by software.
    0: TXEND interrupt disabled
    1: TXEND interrupt enabled
  2. Bit 8 TXBRIE : Tx-byte request interrupt enable
    The TXBRIE bit is set and cleared by software.
    0: TXBR interrupt disabled
    1: TXBR interrupt enabled
  3. Bit 7 ARBLSTIE : Arbitration lost interrupt enable
    The ARBLSTIE bit is set and cleared by software.
    0: ARBLST interrupt disabled
    1: ARBLST interrupt enabled
  4. Bit 6 RXACKIE : Rx-missing acknowledge error interrupt enable
    The RXACKIE bit is set and cleared by software.
    0: RXACKE interrupt disabled
    1: RXACKE interrupt enabled
  5. Bit 5 LBPEIE : Long bit period error interrupt enable
    The LBPEIE bit is set and cleared by software.
    0: LBPE interrupt disabled
    1: LBPE interrupt enabled
  6. Bit 4 SBPEIE : Short bit period error interrupt enable
    The SBPEIE bit is set and cleared by software.
    0: SBPE interrupt disabled
    1: SBPE interrupt enabled
  7. Bit 3 BREIE : Bit rising error interrupt enable
    The BREIE bit is set and cleared by software.
    0: BRE interrupt disabled
    1: BRE interrupt enabled
  8. Bit 2 RXOVRIE : Rx-buffer overrun interrupt enable
    The RXOVRIE bit is set and cleared by software.
    0: RXOVR interrupt disabled
    1: RXOVR interrupt enabled
  9. Bit 1 RXENDIE : End of reception interrupt enable
    The RXENDIE bit is set and cleared by software.
    0: RXEND interrupt disabled
    1: RXEND interrupt enabled
  10. Bit 0 RXBRIE : Rx-byte received interrupt enable
    The RXBRIE bit is set and cleared by software.
    0: RXBR interrupt disabled
    1: RXBR interrupt enabled

30.7.7 HDMI-CEC register map

Table 123. HDMI-CEC register map and reset values

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x00CEC_CRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.TXEOMTXSOMCECEN
Reset value000
0x04CEC_CFGRLSTNOAR[14:0]Res.Res.Res.Res.Res.Res.Res.SFTOPTBRDNOGENLBPEGENBREGENBRESTPRXTOLSFT[2:0]
Reset value0000000000000000000000000
0x08CEC_TXDRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.TXD[7:0]
Reset value00000000
0x0CCEC_RXDRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.RXD[7:0]
Reset value00000000
0x10CEC_ISRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.TXACKETXERRTXUDRTXENDTXBRARBLSTRXACKELBPESBPEBRERXOVRRXENDRXBR
Reset value0000000000000
0x14CEC_IERRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.TXACKIETXERRIETXUDRIETXENDIETXBRIEARBLSTIERXACKIELBPEIESBPEIEBREIERXOVRIERXENDIERXBRIE
Reset value0000000000000
Refer to Section 2.2 for the register boundary addresses.