Forum Discussion

giomate's avatar
giomate
Icon for New Contributor rankNew Contributor
6 years ago

SPI-3-wire SPI_CS pin Configuration

Hi there,

Im need to configurate a SPI interface on a Cyclone V. On the deplyment, i did some measurements and i noted that the SPI_SS_N is not toggling, no matter which flags i use.

int_result=alt_avalon_spi_command(base_address,slave,size,buffer,0,0,ALT_AVALON_SPI_COMMAND_MERGE);

int_result=alt_avalon_spi_command(base_address,slave,size,buffer,size,rx_buffer,0);

also, i configurate also the SPI_CS_n pin on the vhdl code, but it is not working though ...

spi_adf5610_external_MISO => adf5610_spi_sdo,

spi_adf5610_external_MOSI => adf5610_spi_sdi,

spi_adf5610_external_SCLK => adf5610_spi_sclk,

spi_adf5610_external_SS_n => adf5610_spi_csn,

im tested succesfully a similar code on an Arduino. But, in these case the SPI_CS is driven as a GPIO, and the SPI port is enabled/disabled by request.

I wondering if i had to do something similar on the eclipse-nios2 code..

i appreciate any comment or sugestion

6 Replies

  • Hi @giomate,


    Thank you for posting in Intel community forum and hope this message find you well.
    If i understand the situation correctly, I would recommenad that the following design example might be helpful to your needs.

    https://www.intel.com/content/www/us/en/programmable/support/support-resources/design-examples/intellectual-property/embedded/nios-ii/exm-spi-bridge.html

    Please do refer to the 'SPI_Bridge_Design_Example.zip', within the nios2 project there is a references C code to write and read to onchip memory connected via SPI for further details.

    Warm regards.
    BB

    • BoonBengT_Altera's avatar
      BoonBengT_Altera
      Icon for Moderator rankModerator

      Hi @giomate,

      Good day, just checking in by any chances did you managed to look into the recommendation above.

      Please do let us know if you have any difficulties doing so.

      Thank you.

      Warm regards

      BB

      • giomate's avatar
        giomate
        Icon for New Contributor rankNew Contributor

        hi BoonBeng,

        thanks for your support,

        at the moment , i got the spi working , when i modified the general SPI transfer function on that way:

        void SPI_Handler::Open(void){

        IOWR_ALTERA_AVALON_SPI_CONTROL(base_address, ALTERA_AVALON_SPI_CONTROL_SSO_MSK);

        }

        void SPI_Handler::Close(void){

        IOWR_ALTERA_AVALON_SPI_CONTROL(base_address, 0);

        }

        void SPI_Handler::SEN(bool sen){

        if(sen){

        IOWR_ALTERA_AVALON_SPI_CONTROL(base_address, 0);

        }else{

        IOWR_ALTERA_AVALON_SPI_CONTROL(base_address, ALTERA_AVALON_SPI_CONTROL_SSO_MSK);

        }

        }

        however, on higher baudrates(SPI_ADF5610_TARGETCLOCK >4000000u), something is not working...

        So , if the system is 80 MHz, how fast can run the SPI?