NIOS II 4:串口UART hello world。串口寄存器学习

1、新建一个工程叫做NIOS_UART

     建立一个Qsys工程,基本配置如下

2、添加UART

 

3、UART连线,assign base adress,之后生成

4、定义quartus文件如下

module NIOS_UART
(
CLK_50M,
RST_N,

LEDOUT,
KEY,
uart_0_txd,
uart_0_rxd
);

input                CLK_50M;
input                    RST_N;
inout                    LEDOUT;
reg   [3:0]       LEDOUT;
inout [3:0]       KEY ; 
input                uart_0_rxd;
output            uart_0_txd;


    myqsys u0 (
        .clk_clk                                (CLK_50M),     
        .reset_reset_n                          (RST_N),                 
        .pio_led_external_connection_export     ({KEY,LEDOUT})  
        .uart_0_txd                                  (uart_0_txd),
        .uart_0_rxd                                  (uart_0_rxd)       
    );

endmodule

5、加入qsys文件到工程中,编译,分配管脚

 

6、新建nios工程如下

7、我们打开发现有一句话,试试能不能发送,打开串口调试助手。直接编译,下载。发现能发送数据到串口助手。为何没配置串口就能发送了,原因是因为实际在运行main函数之前,会运行alt_main函数,而正是这个函数调用的我们的main函数。而在alt_main中已经配置了串口。

 

 

8、而假如我们配置了多个串口,那哪一个串口可以使用alt_putstr函数打印呢,下面界面可以选择

9、而且也可通过下面的界面,不勾选。不勾选则不会主动初始化串口

 

10、看手册,看到UART有6个16位的寄存器,这几个寄存器其实跟使用串口IP和类似,通过这几个寄存器,实现了发送使能、接收标志等类似功能

 

给出这含义六个寄存器的

下面可以看到,当串口接收到数据时,状态寄存器的rrdy会变成1.如果使用查询方式可用。当把数据从rxdata读走后,rrdy会自动变成0.当没读走数据,又来新的一个数据了,新的会覆盖老的。

当实际使用查询方式应用时,可能会出现读不到,或者少几个的情况。原因是因为没关闭系统的底层驱动,系统在自动读取。

 

下面可以看出当TRDY位1时,可以对txdata写入数据。为0时不能。

PE:检验错误

FE:帧格式错误

BRK:也是错的

ROE:接收错误

TOE:可以通过这一位判断发送是否完成

TRDY:为1可以写入txdata数据

RRDY:为1表示有新数据,读走rxdata数据,自动变0.

 

 

上表中各个位中断使能控制。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值