第二章 NIOS II Step by Step raw uart program.pdfVIP

  • 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)

1亿VIP精品文档

相关文档