This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How, in a c program, do I change the data direction in a bi-directional PIO peripheral register ?

Hi,

I am working with a Terasic DE0-Nano-SoC board, and am working in DS-5 Community Edition 17.1.

I have created some PIO peripheral registers in Qsys / Platform Designer, connected to some well tested firmware, containing registers;

This data register PIO is bidirectional :

PIO with I/O Data

So  in a c program, how do I change the data  transfer direction ?

I appear to be able to write from an output only PIO, but so far only read from this bi-directional PIO.

Works when reading a read only register in my firmware :

SkelData_read = *(uint32_t *)h2p_lw_pio_d_addr;

Writing then reading a R/W register in my firmware always returns 0 :

*(uint32_t *)h2p_lw_pio_d_addr = Data;

SkelData_read = *(uint32_t *)h2p_lw_pio_d_addr;

Help appreciate,

Beau