Skip to content

fpga项目: uart_printf_emio

minichao9901 edited this page Jan 12, 2024 · 1 revision

用EMIO来做UART的TX/RX脚

  1. 配置上UART选EMIO,并使能EMIO
image image
  1. 注意UART使用的EMIO不是GPIO,它与GPIO是独立的。所以如果你没有使用GPIO的话,可以不用开启和配置GPIO。
image
  1. 引脚分配:我们用Z7 Nano的GPIO1的1和2脚作为UART的脚
set_property PACKAGE_PIN P14 [get_ports {GPIO_0_0_tri_io[0]}]
set_property PACKAGE_PIN R14 [get_ports {GPIO_0_0_tri_io[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {GPIO_0_0_tri_io[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {GPIO_0_0_tri_io[0]}]

set_property PACKAGE_PIN N17 [get_ports UART_0_0_rxd]
set_property PACKAGE_PIN P18 [get_ports UART_0_0_txd]
set_property IOSTANDARD LVCMOS33 [get_ports UART_0_0_rxd]
set_property IOSTANDARD LVCMOS33 [get_ports UART_0_0_txd]

按照流程,综合实现生成bitstream

打开sdk,用printf的模板,并修改如下

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "sleep.h"

int main()
{
    //init_platform();   //这一句话注释,也是可以printf的。

    while(1){
    	print("Hello World\n\r");
    	usleep(10000);
    }

    cleanup_platform();
    return 0;
}

编译和运行。逻辑分析仪接Z7 Nano的GPIO1的1和2脚。结果正确!

image
Clone this wiki locally