- 33
- 0
- 约1.71万字
- 约 10页
- 2017-06-19 发布于湖北
- 举报
州自由电子
NIOS II Step by Step7 uart raw program and Nios II
Device architecture
软件的一个基本特征是问题抽象,建立一个真实世界的软件模型 (这个模型并不一定
真实反映被抽象的对象),抽象好啊,可以让人们理解、掌握和控制更多的东西,抽象让我
们当领导,不要做具体的事情,站在更高的层面上全局的理解问题,可以更大范围的控制更
多的对象 (但愿我们不是对象:))。可是抽象的多了,却让我们必须花很多精力 掌握和理
解这个抽象体系,难以直接触摸到具体的编程控制过程,Nios II 中的很多功能就是如此,
为了提供一个大家熟悉的ANSI C 的应用开发环境,做了很多抽象,uart 编程就是如此,我
们很多工程师是一线高手,需要直截了当的触及编程的实质,在此我们分析一下Nios II 中
的Uart 原始实现并进一步讨论Nios II 的设备体系结构。
1 UART 设寄存器控制基础
1.1 系统块图
首先我们来看看uart core ,uart core 是一个avalone 总线的slave 设备,在Sopc Builder
中是一个组件,用户可以非常方便的集成到系统中来。Uart core 的结构如下图 (uart_1 ):
看了这个图我们就有底了,这不和51、avr 中一样半斤八两嘛。
1.2 寄存器结构
如下图所示,正如下面提示的,有些寄存器不一定存在,是在Sopc Builder 中
可编程控制的。
作者:柳军胜 - 1 -
州自由电子
1.3 寄存器读写
这些寄存器在Nios II 程序中可以通过多种方法 读写 (‘回’有两种写法J)
1.3.1 通过IORD ,IOWR 两个宏 读写:
IORD (UART_0_BASE, 0x00);
1.3.2 通过包含altera_avalon_uart_regs.h,然后通过下面的宏读写
IORD_ALTERA_AVALON_UART_RXDATA (UART_0_BASE)
注意不要用指针直接读写,因为在 CPU 带数据缓冲的情况下不一定能立即
得到更新并使控制有效。
1.4 寄存器位说明
有了以上的基础材料和读写控制手段,相信大部分人可以把我这个拐杖扔了J,
不要怕我罗嗦,还是把各个重要的寄存器控制位罗列一下吧:
1.4.1 rxdata 、txdata :数据收发寄存器。
1.4.2 status :状态寄存器
PE(BIT0) :1 奇偶校验错误。写0 清除。
FE(BIT 1):1 数据帧错误,写0 清除。
BRK(BIT2) :1 检测到RXD 线0 超过了一个字符的时间。写0 清除。
ROE(BIT3) :1 读覆盖错误。
TOE(BIT4) :1 写覆盖错误
TMT(BIT5) :1 发送移位寄存器空闲,0 正在发送
TRDY(BIT6) :1 发送完成
RRDY(BIT7) :1 接收完成
E (BIT8 ):TOE, ROE, BRK, FE和PE位的逻辑或
DCTS (BIT 10):CTS信号改变。
CTS (BIT 11):CTS信号状态
EOP (BIT 12):接收或发送end of packet字符。End of packet字符存放在
endofpacket寄存器。
作者:柳军胜
原创力文档

文档评论(0)