MyFPGA Forum
标题:
IOWR_ALTERA_AVALON_PIO_DATA函数用法
[打印本页]
作者:
yqzhang
时间:
2010-4-6 18:34
标题:
IOWR_ALTERA_AVALON_PIO_DATA函数用法
IOWR_ALTERA_AVALON_PIO_DATA是用来读取数据的.
具体怎么用,我在Nios II Software Handbook.pdf中久久没有找到.
此如IOWR_ALTERA_AVALON_PIO_IRQ_MASK等用法也是临时从网上查询而得.
直到今天,我终于找到理解此函数的具体用法的好方法了.
在Nios II中选中类如IOWR_ALTERA_AVALON_PIO_DATA的函数--->Open Definition--->会看到#define IOWR_ALTERA_AVALON_PIO_DATA(base, data) IOWR(base, 0, data)
在这里,我们看到我们想找到的函数实际是 IOWR;
同时,其他诸如此类函数有:
#define IOADDR_ALTERA_AVALON_PIO_DIRECTION(base) __IO_CALC_ADDRESS_NATIVE(base, 1)
#define IORD_ALTERA_AVALON_PIO_DIRECTION(base) IORD(base, 1)
#define IOWR_ALTERA_AVALON_PIO_DIRECTION(base, data) IOWR(base, 1, data)
#define IOADDR_ALTERA_AVALON_PIO_IRQ_MASK(base) __IO_CALC_ADDRESS_NATIVE(base, 2)
#define IORD_ALTERA_AVALON_PIO_IRQ_MASK(base) IORD(base, 2)
#define IOWR_ALTERA_AVALON_PIO_IRQ_MASK(base, data) IOWR(base, 2, data)
#define IOADDR_ALTERA_AVALON_PIO_EDGE_CAP(base) __IO_CALC_ADDRESS_NATIVE(base, 3)
#define IORD_ALTERA_AVALON_PIO_EDGE_CAP(base) IORD(base, 3)
#define IOWR_ALTERA_AVALON_PIO_EDGE_CAP(base, data) IOWR(base, 3, data)
#define IOADDR_ALTERA_AVALON_PIO_SET_BIT(base) __IO_CALC_ADDRESS_NATIVE(base, 4)
#define IORD_ALTERA_AVALON_PIO_SET_BITS(base) IORD(base, 4)
#define IOWR_ALTERA_AVALON_PIO_SET_BITS(base, data) IOWR(base, 4, data)
#define IOADDR_ALTERA_AVALON_PIO_CLEAR_BITS(base) __IO_CALC_ADDRESS_NATIVE(base, 5)
#define IORD_ALTERA_AVALON_PIO_CLEAR_BITS(base) IORD(base, 5)
#define IOWR_ALTERA_AVALON_PIO_CLEAR_BITS(base, data) IOWR(base, 5, data)
在上述多个函数中,最终都归到几种简单的函数中去了. 我们总结一下,需要知道的函数有:IORD,IOWR两上而已.也就是,我们掌握了基本的IORD,IOWR用法的话,关于函数的别名就容易理解多了.
函数原型:IORD(BASE, REGNUM)
输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量
函数说明:从基地址为BASE的设备中读取寄存器中偏移量为REGNUM的单元里面的值。寄存器的值在地址总线的范围之内。
返回值: -
函数原型:IOWR(BASE, REGNUM, DATA)
输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量,DATA为要写入的数据
函数说明:往偏移量为REGNUM寄存器中写入数据。寄存器的值在地址总线的范围之内。
返回值: -
作者:
rich
时间:
2010-4-24 15:17
很棒的說明與結論.
最基本的IO functoin 就只有IORD,IOWR. (included in io.h)
作者:
xlbian
时间:
2010-5-8 22:39
呵呵!学习了。
作者:
pex857617729
时间:
2010-5-10 12:53
我想学写程序,应该看那些书?
作者:
pex857617729
时间:
2010-5-12 13:11
同上楼 谢谢!
作者:
yongyooh
时间:
2010-5-12 18:09
有见解!
作者:
培培
时间:
2010-5-17 20:07
为什么我在那个俄罗斯方块例子的时候
语句IORD_ALTERA_AVALON_PIO_EDGE_CAP(pio_0_BASE) ,
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(pio_0_BASE, 0x00),总是报错呢?错误原因直指pio_0_BASE(use first undefined function),第一次使用的PIO_EDGE_CAP函数,没有定义云云.....
调了好久也不知道怎么解决,肯请高手指正啊
欢迎光临 MyFPGA Forum (http://www.myfpga.org/discuz/)
Powered by Discuz! X3