VVIC 发表于 2010-6-27 23:52:15

I2C的双向信号的问题?当SDA接收来自控制器外端的ACK信的问题

本帖最后由 fpgaw 于 2011-1-18 04:36 编辑

I2C控制器中的SDA和SCL都是双向信号

在Verilog中,我将SDA和SCL都定义为inout信号,在作为output时,没有问题 我现在的问题是当SDA接收来自控制器外端的ACK信号时,SDA应作为input使用,(有人说定义成三根线,input, output,output enable).但是I2C总线只能用一根SDA信号的啊不知道该如何切换?

ups 发表于 2010-6-28 01:33:55

怎么只有人查看,没有人回答啊?<br>
哭啊!

UFO 发表于 2010-6-28 02:20:57

搞定 了,现在一想我当时怎么这么蠢啊!这么简单的问题都没有想到.<br>
其实象这种双向驱动的信号,就是在驱动和三态之间转换.比如:<br>
I2C控制器中的 SDA:在发送数据时驱动,在等待ACK时,I2C控制器端三态,<br>
而I2C从设备则相反:在接受数据时三态(即I2C控制器的发送数据时),在发送ACK时驱动即可.<br>
<br>
本人文字表达能力不是特别好,不知道各位能理解么?<br>
要是理解不了,可以提出问题,我也不是大虾,只能尽我所能回答了<br>
<br>
<br>
<br>
受人之惠,当惠之众人

CCIE 发表于 2010-6-28 03:00:02

呵呵,明白了就好。其实道理很简单,信号线不能被多次驱动,除了有目的的线与或线或

CHANG 发表于 2010-6-28 03:52:02

的确是的!!!!!!!!!!!!!

usd 发表于 2010-6-28 05:05:19

是啊,设置成三太的就行了<br>
process(sda,wr_ea,sd_a)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --三态门<br>
&nbsp; &nbsp; &nbsp; &nbsp; begin<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if wr_ea='0' then<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sda&lt;=sd_a;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --输出态<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sda&lt;='Z';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --输入态<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end if;&nbsp; &nbsp; &nbsp; &nbsp; <br>
&nbsp; &nbsp; &nbsp; &nbsp; end process;

inter 发表于 2010-6-28 05:42:02

三态三态三态三态总线必备

tim 发表于 2010-6-28 06:26:59

推荐你去
        http://blog.21ic.com/more.asp?name=iC921&amp;id=10802#15395
<br>
上面是飞利浦公司的I2C总线性能介绍及相关问题和解答,也许对你有帮助

UFO 发表于 2010-6-28 07:01:44

现在又遇到问题了,防真 I2C总线没有任何问题,但是上了板子就什么也没有,真他妈的奇怪!<br>
各位有什么建议啊?(I2C Controller的主时钟有了)

VVIC 发表于 2010-6-28 07:51:12

问个弱智的问题:地址发完之后,收到ACK,是否可以先返回到空闲态,再接收数据啊?
页: [1] 2 3
查看完整版本: I2C的双向信号的问题?当SDA接收来自控制器外端的ACK信的问题