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

Parents
  • I have had a reply on the Altera Forumn, that has given me the answer :

    [QUOTE=austin944;234454] Try it like this:

    h2p_lw_pio_d_dirn = virtual_base + ( ( unsigned long )( ALT_LWFPGASLVS_OFST + PIO_D_BASE + 4 ) & ( unsigned long)( HW_REGS_MASK ) );

    I understand the 1 vs 4 is due to word or byte addressing.

    Working nicely now, able to read and write the registers in my own firmware, from C in Linux, via the SoC PIOs.
    Time to add the rest of my firmware ....

    Much appreciated austin944.
    Beau Webber

Reply
  • I have had a reply on the Altera Forumn, that has given me the answer :

    [QUOTE=austin944;234454] Try it like this:

    h2p_lw_pio_d_dirn = virtual_base + ( ( unsigned long )( ALT_LWFPGASLVS_OFST + PIO_D_BASE + 4 ) & ( unsigned long)( HW_REGS_MASK ) );

    I understand the 1 vs 4 is due to word or byte addressing.

    Working nicely now, able to read and write the registers in my own firmware, from C in Linux, via the SoC PIOs.
    Time to add the rest of my firmware ....

    Much appreciated austin944.
    Beau Webber

Children
No data