PYNQ: PYTHON PRODUCTIVITY

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.

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.