ADV7184
Rev. A | Page 81 of 112
REGISTER ACCESSES
The MPU can write to and read from all of the ADV7184
registers except those that are read only or write only. The
subaddress register determines which register the next read or
write operation accesses. All communications with the part
through the bus start with an access to the subaddress register.
A read/write operation is then performed from/to the target
address, which then increments to the next address until a stop
command on the bus is performed.
REGISTER PROGRAMMING
of its configuration. After the part has been accessed via the bus
and a read/write operation is selected, the subaddress is set up.
The subaddress register determines to/from which register the
operations controlled by the subaddress register.
As can be seen in
Figure 48, the registers in the ADV7184 are
arranged into two maps: the user map (enabled by default) and
the user sub map. The user sub map has controls for the interrupt
and VDP functionality of the ADV7184, and the user map controls
everything else.
The user map and the user sub map consist of a common space
from Address 0x00 to Address 0x3F. Depending on how Bit 5 in
Register 0x0E (SUB_USR_EN) is set, the register map is then
split into two sections.
SUB_USR_EN, Address 0x0E [5]
This bit splits the register map at Register 0x40.
0 (default)—The register map does not split and the user map
is enabled.
1—The register map splits and the user sub map is enabled.
COMMON I2C SPACE
ADDRESSES 0x00 TO 0x3F
ADDRESS 0x0E BIT 5 = 0b
ADDRESS 0x0E BIT 5 = 1b
I2C SPACE
ADDRESSES 0x40 TO 0xFF
I2C SPACE
ADDRESSES 0x40 TO 0x9C
USER MAP
USER SUB MAP
NORMAL REGISTER SPACE
INTERRUPT AND VDP REGISTER SPACE
054
79-
048
Figure 48. Register Access —User Map and User Sub Map
I2C SEQUENCER
An I2C sequencer is used when a parameter exceeds eight bits
and is therefore distributed over two or more I2C registers, for
example, HSB [11:0].
When such a parameter is changed using two or more I2C write
operations, the parameter may hold an invalid value for the time
between the first and last I2Cs. In other words, the top bits of
the parameter may hold the new value while the remaining bits
of the parameter still hold the previous value.
To avoid this problem, the I2C sequencer holds the already
updated bits of the parameter in local memory. All bits of the
parameter are updated together after the last register write
operation has completed.
The correct operation of the I2C sequencer relies on the
following:
All I2C registers for the parameter in question must be
written to in order of ascending addresses. For example,
for HSB [10:0], write to Address 0x34 first, followed by
Address 0x35.
No other I2C read or write can take place between the two
(or more) I2C writes for the sequence. For example, for HSB
[10:0], write to Address 0x34 first, immediately followed by
Address 0x35.
I2C PROGRAMMING EXAMPLES
A register programming script consisting of I2C programming
examples for all standard modes supported by the ADV7184 is
available from the ADV7184 product page on the Analog Devices
website. The examples provided are applicable to a system with the
analog inputs arranged as shown in
Figure 52. The input selection
registers change in accordance with the layout of the PCB.