I2C从机地址问题???

[复制链接]
 楼主| Volitation 发表于 2007-3-29 17:34 | 显示全部楼层 |阅读模式
一般的MCU如果有I2C接口的话,都会有从机地址寄存器,用来响应其他主机的寻找。但是如果那些没有从机地址寄存器的mcu,它们是如何知道其他主机在寻找它们呢?
lanmp 发表于 2007-3-29 17:37 | 显示全部楼层

那就是只能作主

 楼主| Volitation 发表于 2007-3-29 17:41 | 显示全部楼层

也可以做从机阿

c8051f330就是这样的一款没有从机地址寄存器的mcu。它可以配置为从机。
所以不是很清楚它在从机时是如何知道其他主机在寻找它的。
lanmp 发表于 2007-3-29 17:42 | 显示全部楼层

有固定的从机地址?

 楼主| Volitation 发表于 2007-3-29 17:45 | 显示全部楼层

好像没有固定的从机地址

其他型号像c8051f020就有从机地址寄存器.用来设置当它被配置为从机时的从机地址.
qjy_dali 发表于 2007-3-29 23:01 | 显示全部楼层

没有从机地址,岂不乱了

volitation 发表于 2007-3-30 08:34 | 显示全部楼层

可以这样理解吗?

在c8051f330的手册上将其设置为从接收器时,有这样一段话:
“在SDA上接收串行数据,在SCL上接收串行时钟。在从事件被允许的情况下(INH = 0),当接收到一个起始条件(START)和一个含有从地址和数据方向位(此处应为写)的字节时,SMBus接口进入从接收器方式。在进入从接收器方式时将产生一个中断,并且ACKRQ被置‘1’。软件用一个ACK对接收到的从地址确认,或用一个NACK忽略接收到的从地址。如果接收到的从地址被忽略,从事件中断将被禁止,直到检测到下一个起始条件。如果收到的从地址被确认,将接收0个或多个字节的数据。在每接收到一个字节后,软件必须向ACK位写ACK或NACK,对接收字节作出应答。”
这是不是说,要写一段中断服务程序,用来判断这个地址是否是其它主机在找它通讯?也就是说。c8051f330虽然没有从机地址寄存器,但是我们可以给它定一个不和其它设备冲突的软地址,然后在其被配置为从机时,对其它主机的每次寻址通讯,都会产生一个中断,然后在中断服务程序里进行地址判断,如果是找自己,就响应(ACK),不是自己就不响应(NACK)。
同时,如果是这样的话,是不是可以给这种类型的mcu(没有地址寄存器)分配多个地址,反正都是通过中断服务程序来判断其它主机是否找自己通讯。
这样的理解大家看看对不对?
popmu 发表于 2007-3-30 08:47 | 显示全部楼层

既然硬件不支持,可以在串口程序里用软件弥补吗:)

 楼主| Volitation 发表于 2007-3-30 09:48 | 显示全部楼层

硬件支持i2c

c8051f330支持硬件i2c接口,只是没有从机地址寄存器。
popmu 发表于 2007-3-30 12:59 | 显示全部楼层

我觉的可以的

w165661916 发表于 2015-4-17 17:18 | 显示全部楼层
结贴的还可以回复让LZ知道吗?小弟也在做这类似的项目,不知道你最后用什么 方式得到的地址,求告知;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部