ZYNQ:MIO、EMIO、IO的区别和灵活使用
在使用ZYNQ上ARM cortex-A9平台时首先面临的就是对IO进行操作,总的来说对IO操作无怪乎两种方式,一种是直接对GPIO寄存器进行操作,这样程序效率高,但编写代码困难;另一种是调用SDK工具提供的API接口函数。
在实际使用时ZYNQ又把GPIO分成MIO、EMIO和PL端的IO这三种类型,在刚刚接触时会因为这三种IO的不同配置和使用方式而影响后续的学习,这里针对三种IO进行详细的说明使用方法。
}
2、 PS配置EMIO进行输出
在使用EMIO时需要在Z7的IP核配置时选择EMIO。如下图,这里选择了2个EMIO端口。
xstatus = XGpio_Initialize(&pl_gpio_instance_ptr, XPAR_AXI_GPIO_0_DEVICE_ID);
if (NULL!=xstatus)
print (“pl_axi_gpio config ok nr”) ;
XGpio_SetDataDirection(&pl_gpio_instance_ptr,1,1);
XGpio_SetDataDirection(&pl_gpio_instance_ptr,2,0);
然后对这个IO进行读写操作,这里需要主要的是输入数据为32位,需要把输入的数据和GPIO数量要进行对应。
XGpio_DiscreteWrite(&pl_gpio_instance_ptr,2,0xffffffff);
XGpio_DiscreteWrite(&pl_gpio_instance_ptr,2,0×00000000);
总结
这三种GPIO的配置有相同的地方和不同的地方,不同的地方主要是由GPIO所归属的物理位置不同导致,由于物理位置不同进行额外配置在PL端。而在PS端其实需要修改的很少。因此在SDK上进行IO操作是相对灵活且简单的。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!