歡迎您光臨本站 登入註冊首頁

怎樣在NIOSII中操作PIO?

admin @ 2014-03-26 , reply:0

概述

運用NIOSII_IDE嚮導,在niosII_cyclone_1c20small下新建一個hello_led工程。其中hello_led.c是這樣寫IO口的:IOWR_ALTERA_AVALON_PI……

運用NIOS II_IDE嚮導,在niosII_cyclone_1c20small下新建一個hello_led工程。
其中hello_led.c是這樣寫IO口的:
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);
首先在altera_avalon_pio_regs.h找到定義

代碼
  1. #include <io.h>   
  2. #define IORD_ALTERA_AVALON_PIO_DATA(base) IORD(base, 0)   
  3. #define IOWR_ALTERA_AVALON_PIO_DATA(base, data) IOWR(base, 0, data)  


因此在NIOS II中可以調用#include <io.h>庫函數IORD/IOWR來操作PIO。
(詳情可參見D:alterakits ios2documents n2cpu_nii51007.pdf 文檔page:7, Table 7–2:和n2sw_nii5v2.pdf.pdf 文檔page:111, Table 7–1:)

    接著在smallsoftwarehello_led_0_syslibDebugsystem_description下的system.h中,有以下內容:

代碼
  1. #define LED_PIO_TYPE "altera_avalon_pio"   
  2. #define LED_PIO_BASE 0x00004000  


其中LED_PIO_BASE(IO寄存器地址?)為0x00004000同SopcBuilder中設置一致!
(其實在SopcBuilder中有關NiosII的配置,就是通過system.h來傳送給IDE的!)
最後用IOWR(0x00004000, 0, led);替代IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);
編譯,下載到開發板上,運行成功!
初級知識,就當是拋磚引玉,這只是庫函數級,應該還有彙編級代碼,請各位大蝦繼續!


[admin via 研發互助社區 ] 怎樣在NIOSII中操作PIO?已經有3477次圍觀

http://cocdig.com/docs/show-post-43054.html