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信号的啊不知道该如何切换? 怎么只有人查看,没有人回答啊?<br>
哭啊! 搞定 了,现在一想我当时怎么这么蠢啊!这么简单的问题都没有想到.<br>
其实象这种双向驱动的信号,就是在驱动和三态之间转换.比如:<br>
I2C控制器中的 SDA:在发送数据时驱动,在等待ACK时,I2C控制器端三态,<br>
而I2C从设备则相反:在接受数据时三态(即I2C控制器的发送数据时),在发送ACK时驱动即可.<br>
<br>
本人文字表达能力不是特别好,不知道各位能理解么?<br>
要是理解不了,可以提出问题,我也不是大虾,只能尽我所能回答了<br>
<br>
<br>
<br>
受人之惠,当惠之众人 呵呵,明白了就好。其实道理很简单,信号线不能被多次驱动,除了有目的的线与或线或 的确是的!!!!!!!!!!!!! 是啊,设置成三太的就行了<br>
process(sda,wr_ea,sd_a) --三态门<br>
begin<br>
if wr_ea='0' then<br>
sda<=sd_a; --输出态<br>
else<br>
sda<='Z'; --输入态<br>
<br>
end if; <br>
end process; 三态三态三态三态总线必备 推荐你去
http://blog.21ic.com/more.asp?name=iC921&id=10802#15395
<br>
上面是飞利浦公司的I2C总线性能介绍及相关问题和解答,也许对你有帮助 现在又遇到问题了,防真 I2C总线没有任何问题,但是上了板子就什么也没有,真他妈的奇怪!<br>
各位有什么建议啊?(I2C Controller的主时钟有了) 问个弱智的问题:地址发完之后,收到ACK,是否可以先返回到空闲态,再接收数据啊?