当前位置:   article > 正文

xilinx MPSOC EMIO IIC搭建_zynq i2c emio

zynq i2c emio

一、问题描述

某些情况下,ARM部分的MIO引脚不足或者冲突时,或者硬件设计失误,可以考虑使用EMIO访问外设。

二、建立方式

  1. 在ZU4CG的ZYNQ IP核上勾选IIC为EMIO时,ZYNQ IP核引脚出现如下信号:

Emio_i2c1_scl_i

Emio_i2c1_scl_o

Emio_i2c1_scl_t

Emio_i2c1_sda_i

Emio_i2c1_sda_o

Emio_i2c1_sda_t

    常规思维下,设计中ZU4CG始终为主设备,则可能直接输出Emio_i2c1_scl_o至外部引脚,通过IOBUF将Emio_i2c1_sda_i、Emio_i2c1_sda_o、Emio_i2c1_sda_t连接至双向引脚。这是错误的!

    经过实测,Emio_i2c1_scl_o始终输出低电平!(因此使用ILA测试时,无法测到iic时钟输出)正确的做法是也通过IOBUF将Emio_i2c1_scl_i、Emio_i2c1_scl_o、Emio_i2c1_scl_t连接至双向引脚。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAeWluZHExMjIw,size_20,color_FFFFFF,t_70,g_se,x_16 

 

    I2C 协议中,SCL与SDA两根线,通过外部上拉呈现高电平。当ZYNQ IP核需要将SCL设置为低电平时,其将Emio_i2c1_scl_t拉低,输出Emio_i2c1_scl_o,此时双向端口SCL拉低;当需要将SCL设置为高电平时,Emio_i2c1_scl_t拉高,此时借助于外部上拉电路,将SCL拉高。

    由此可见,在IIC协议中,主设备仅驱动SCL与SDA变为低电平,其余情况下不进行驱动,默认由外部上拉电路将SCL与SDA拉高。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZzaXRvclpM,size_16,color_FFFFFF,t_70

20210425190742657.png

 

 

PS.若因为某种原因,硬件电路中没有将SCL与SDA进行上拉,需要FPGA对引脚进行上拉约束。

 

set_property PULLUP true [get_ports emio_iic_scl]

set_property PULLUP true [get_ports emio_iic_sda]

(若IIC主从设备均为FPGA实现,则均需要进行上拉约束)

 

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/899789
推荐阅读
相关标签
  

闽ICP备14008679号