xilinx MPSOC EMIO IIC搭建

一、问题描述

某些情况下,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实现,则均需要进行上拉约束)

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值