在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 4282|回复: 3

[求助] 菜鸟求助

[复制链接]
发表于 2010-3-15 23:19:23 | 显示全部楼层
以UART模块为例,它的内部有两个寄存器,一个是状态寄存器,另一个是控制寄存器,状态寄存器指示UART的状态,包括使能,是否准备好等信号,而控制寄存器用于控制UART的一些输出以及指示信号,通过这些信号,外部的处理器可以把数据输入控制寄存器中,从而指示是否准备好数据的传输,同时读取状态寄存器,了解一些状态信息。
在nios中,有这样一段程序:
#define ALTERA_AVALON_UART_STATUS_PE_MSK              (0x1)
#define ALTERA_AVALON_UART_STATUS_PE_OFST             (0)
#define ALTERA_AVALON_UART_STATUS_FE_MSK              (0x2)
#define ALTERA_AVALON_UART_STATUS_FE_OFST             (1)
#define ALTERA_AVALON_UART_STATUS_BRK_MSK             (0x4)
#define ALTERA_AVALON_UART_STATUS_BRK_OFST            (2)
#define ALTERA_AVALON_UART_STATUS_ROE_MSK             (0x8)
#define ALTERA_AVALON_UART_STATUS_ROE_OFST            (3)
#define ALTERA_AVALON_UART_STATUS_TOE_MSK             (0x10)
#define ALTERA_AVALON_UART_STATUS_TOE_OFST            (4)
#define ALTERA_AVALON_UART_STATUS_TMT_MSK             (0x20)
#define ALTERA_AVALON_UART_STATUS_TMT_OFST            (5)
#define ALTERA_AVALON_UART_STATUS_TRDY_MSK            (0x40)
#define ALTERA_AVALON_UART_STATUS_TRDY_OFST           (6)
#define ALTERA_AVALON_UART_STATUS_RRDY_MSK            (0x80)
#define ALTERA_AVALON_UART_STATUS_RRDY_OFST           (7)
#define ALTERA_AVALON_UART_STATUS_E_MSK               (0x100)
#define ALTERA_AVALON_UART_STATUS_E_OFST              (8)
#define ALTERA_AVALON_UART_STATUS_DCTS_MSK            (0x400)
#define ALTERA_AVALON_UART_STATUS_DCTS_OFST           (10)
#define ALTERA_AVALON_UART_STATUS_CTS_MSK             (0x800)
#define ALTERA_AVALON_UART_STATUS_CTS_OFST            (11)
#define ALTERA_AVALON_UART_STATUS_EOP_MSK             (0x1000)
#define ALTERA_AVALON_UART_STATUS_EOP_OFST            (12)

#define ALTERA_AVALON_UART_CONTROL_REG                3
#define IOADDR_ALTERA_AVALON_UART_CONTROL(base)       \
        __IO_CALC_ADDRESS_NATIVE(base, ALTERA_AVALON_UART_CONTROL_REG)
#define IORD_ALTERA_AVALON_UART_CONTROL(base)         \
        IORD(base, ALTERA_AVALON_UART_CONTROL_REG)
#define IOWR_ALTERA_AVALON_UART_CONTROL(base, data)   \
        IOWR(base, ALTERA_AVALON_UART_CONTROL_REG, data)

#define ALTERA_AVALON_UART_CONTROL_PE_MSK             (0x1)
#define ALTERA_AVALON_UART_CONTROL_PE_OFST            (0)
#define ALTERA_AVALON_UART_CONTROL_FE_MSK             (0x2)
#define ALTERA_AVALON_UART_CONTROL_FE_OFST            (1)
#define ALTERA_AVALON_UART_CONTROL_BRK_MSK            (0x4)
#define ALTERA_AVALON_UART_CONTROL_BRK_OFST           (2)
#define ALTERA_AVALON_UART_CONTROL_ROE_MSK            (0x8)
#define ALTERA_AVALON_UART_CONTROL_ROE_OFST           (3)
#define ALTERA_AVALON_UART_CONTROL_TOE_MSK            (0x10)
#define ALTERA_AVALON_UART_CONTROL_TOE_OFST           (4)
#define ALTERA_AVALON_UART_CONTROL_TMT_MSK            (0x20)
#define ALTERA_AVALON_UART_CONTROL_TMT_OFST           (5)
#define ALTERA_AVALON_UART_CONTROL_TRDY_MSK           (0x40)
#define ALTERA_AVALON_UART_CONTROL_TRDY_OFST          (6)
#define ALTERA_AVALON_UART_CONTROL_RRDY_MSK           (0x80)
#define ALTERA_AVALON_UART_CONTROL_RRDY_OFST          (7)
#define ALTERA_AVALON_UART_CONTROL_E_MSK              (0x100)
#define ALTERA_AVALON_UART_CONTROL_E_OFST             (8)
#define ALTERA_AVALON_UART_CONTROL_DCTS_MSK           (0x400)
#define ALTERA_AVALON_UART_CONTROL_DCTS_OFST          (10)
#define ALTERA_AVALON_UART_CONTROL_RTS_MSK            (0x800)
#define ALTERA_AVALON_UART_CONTROL_RTS_OFST           (11)
#define ALTERA_AVALON_UART_CONTROL_EOP_MSK            (0x1000)
#define ALTERA_AVALON_UART_CONTROL_EOP_OFST           (12)
注意到MSK和OFST,BASE了吗?如果想让微处理器能够控制这些寄存器(STATUS 和 CONTROL),就必须把这些寄存器映射到相应的存储器中,base就是这些寄存器的基址,而OFST对应着偏移地址,MSK表示第几位对应着寄存器的第几位,这样微处理器可以通过往这些地址中写入或读出相应的数据
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 ) |网站地图

GMT+8, 2025-10-26 08:31 , Processed in 0.033455 second(s), 4 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表