Forum Discussion
Altera_Forum
Honored Contributor
16 years agoC code question !! / NIOS II / SPI interface
Hello,
I have a question about implementing the spi interface in a FPGA, I already constructed a working CPU with a implementation of the SPI, and added the correct settings in SOIC, however i have a problem with my code for the niosII proccesor, for some reason it jumps right over my written code, it jumps straigt to the end of the main() function, I am as you would say a nOOb in programming... so i think i just made a stupid mistake in my code, but I cannot locate it... Below states the code that i have written, for testing purpose's my idea was to send 0xFF a thousand times.... however when i go in debug mode it goes into int alt_avalon_spi_command(alt_u32 base, alt_u32 slave,......) and after that it jumps strait to the end without execucution the code under it. The development board is a NIOS development board, Cyclone I edition... I hope one of you could explain what i am doing wrong !! :confused: Thanks a lot !! :) greetings, Remko # include <stdio.h># include <system.h># include <altera_avalon_pio_regs.h> //#include <altera_avalon_pwm_routines.h> //#include <altera_avalon_uart_regs.h># include <string.h># include <sys/alt_alarm.h># include <alt_types.h># include <sys/time.h># include <fcntl.h> //SPI headers# include <altera_avalon_spi_regs.h># include <altera_avalon_spi.h> int delay_1(); int spi(); int main() { int alt_avalon_spi_command(alt_u32 base, alt_u32 slave, alt_u32 write_length, const alt_u8* wdata, alt_u32 read_length, alt_u8* read_data, alt_u32 flags) { int i; // force SS_N active IOWR_ALTERA_AVALON_SPI_CONTROL(base, ALTERA_AVALON_SPI_CONTROL_SSO_MSK); for (i = 0; i<10000 ; ++i) { // transmit a byte while (!(IORD_ALTERA_AVALON_SPI_STATUS(base) & ALTERA_AVALON_SPI_STATUS_TRDY_MSK)); IOWR_ALTERA_AVALON_SPI_TXDATA(base, 0xFF); // wait for all bytes to be send while(!(IORD_ALTERA_AVALON_SPI_STATUS(base) & ALTERA_AVALON_SPI_STATUS_TMT_MSK)); } //release SS_N IOWR_ALTERA_AVALON_SPI_CONTROL(base, ~ALTERA_AVALON_SPI_CONTROL_SSO_MSK); } delay_1(); } int delay_1() { int count = 0; int delay; while(1) { IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, count & 0x03); IOWR_ALTERA_AVALON_PIO_DATA(SEVEN_SEG_PIO_BASE, count & 0xff); delay = 0; while(delay < 200000) { delay++; } count++; } }14 Replies
- Altera_Forum
Honored Contributor
Hi,
I did not mean that actually, I know it only transfers data but does not know their meaning or if this comes this is to be done information. What I am trying to ask is how do I get it from SPI buffer to my memory or to NIOS (which are the two sides in my system NIOS-SPI-RAM ) and also I have an information in NIOS and I want to send it to RAM how do I do that where do I select where on the memory is data to be written. Let me explain what I did. In Qsys I connect NIOS instruction and data master to SPI core's control port and connect SPI's conduit end a memory. I use this function in NIOS "alt_avalon_spi_command" to read or write data. What more should I do? Thanks - Altera_Forum
Honored Contributor
I'm not sure I understand your problem. What kind of RAM are you using? Is it an external SPI RAM? From your other thread here (http://www.alteraforum.com/forum/showthread.php?t=39915&p=164635#post164635) it doesn't seem to be the case, but in that case why are you connecting it to the SPI component?
- Altera_Forum
Honored Contributor
Hi;
I am now connecting it to an SPI component but I could not manage to program the NIOS. Where do I put my code? I created the Qsys project and generated it and with SOPC file I tried to use Eclipse to program the code but I could not manage it. Can you tell be how to do it I am a newbie I would appreciate any step even if you think it is natural. Thank you Ugur - Altera_Forum
Honored Contributor
From Eclipse you should generate a BSP for your project and a sample "hello world" application. If you look on the Altera web site I think you'll find a "my first nios 2" tutorial that should describe how to do it.