I'm trying to understand some register writes in the cpp file:
C:\Program Files (x86)\4dsp\FMC Board Support Package\Refs\Software\FMC12x\main.cpp
Starting at line 527:
// Calculate BAR of every peripheral mapped (sub mapping) to the FMC12x star's memory. This uses fixed offsets given by the FMC12x ULONG AddrSipFMC12xCtrl = AddrSipFMC12x + 0x000; ULONG AddrSipFMC12xAdcPhy = AddrSipFMC12x + 0x010; ULONG AddrSipFMC12xFreqCnt = AddrSipFMC12x + 0x600;
I can see from the corresponding .vhd firmware files where all of the addresses are coming from up to and including the AddrSipFMC12xTempMon address, but in the following register write, it looks like a register at 0x7400 relative to the I2C Master address is written to. I don't see any documentation for devices higher than address x5000 relative to the I2C Master address, which is the I2C EEPROM base address (24LC02B chip). The ADT7411 chip has address x4800 relative to the I2C Master, but I don't know of any device at 0x7400.
and it is Revision 1.0, dated 11/22/2011. This is the document that states the addresses of the I2C Master on page 10, with the highest address being the 24LC02B at x5000.
over 7 years ago
These writes actually configure the i2c mux chip populated on VC707/KC705. These xilinx boards have a chip one can configure to route the main i2c bus towards several sub i2c buses. Typically here we are routing to HPC1 I believe.
More information can be found in the VC707 User Guide.