Specific Register read from a address through AxiIIC

I have set up a deserializer using an FMC LPC connector. I can communicate with the deserializer through the AxiIIC module. But in PYNQ I can’t send commands to read specific register values. Like in C/C++ I can send a read command for register 0x40 at address 0x64. But in PYNQ, I couldn’t find any supported function for reading a specific register value. I can see only the following function which can read something from the specific address, but no option for specific register value read at that address.

iic.receive(0x30,buffer,3,0)

Please suggest any workaround.

1 Like

Accessing registers is a layer on top of I2C and the exact transactions expected will be in the datasheet of the part you’re accessing. Most of the time a register read is performed by sending the address and then receiving the data and a register write by sending the address and the data concatenated together. The number of bytes for the address and data is chip dependent. It sounds like there is an existing C driver you can look at for the exact transactions expected by the chip.

Peter

1 Like

Yes, the c library I have used has a driver to show the specific register value for IIC read command. I already have found a probable solution for the PYNQ for my project. As my deserializer has 256 registers, I have to loop over 256 bytes of data each time to get the specific register value, otherwise, there is a data synchronization issue happening. I am trying to make a simple driver for that. Anyway thanks for answering. Appreciate your help.

1 Like