I2C的从地址问题

iqtao   2010-3-11 12:52 楼主
我用的是F4152的单片机
我的I2C器件的从地址是0xa0,
把0xa0写到 UCB0I2CSA 寄存器里了
在发送从地址后I2C器件就是接收不到。
后来用示波器看了波形之后,发现发送的从地址不是0xa0.
是00100000,第八位就是发不出来
为什么啊?

回复评论 (7)

地址就7位跟10位的吧?好像没8位的
点赞  2010-3-11 16:37
分10位地址模式和7位地址模式的~你是不是选了7位地址模式呢?
点赞  2010-3-11 16:46

就是7位啊

就是选了7位的地址啊!最后一位是读写位啊!
举个例子吧!
我的I2C器件的地址是0xA0,在调试的时候写到 UCB0I2CSA 寄存器的数据却是要0x50,这个我已经调试成功了,
可是现在我的I2C器件的地址是0x60,我就不知道写到 UCB0I2CSA 寄存器的数据应该是多少了?
哪位大侠指点一下啊!





引用:

分10位地址模式和7位地址模式的~你是不是选了7位地址模式呢?
点赞  2010-3-11 17:48

呜呜

我的问题还没解决啊!找不到原因。
点赞  2010-3-12 11:57
我也遇到同样的问题,我的七位从机地址是0001101,是将UCB0I2CSA 寄存器的数据写入0x0D还是0x1A呢?就是说七位地址如果加一位写位就是00011010即0x1A,还是直接写0x0D有点搞不明白,请高手指点
点赞  2010-4-4 15:56
LS,应该写0x0D
Sl××eAdd + R/W == 8 bits
0001101 1/0

Sl××eAdd 是写到UCB0I2CSA中的, R/W 是由UCTR位控制的。

5L,0xA0指的是包括读写位了吧,那么你应该把这个数右移一位,剔除掉读写位,然后写到UCBI2CSA中,及0x50 , 如果是0x60那就往寄存器中写0x30。我感觉你指的从机地址是包括读写位的了,而非从机真正的地址!
点赞  2010-4-12 19:20
你将你的I2C地址(比如7位模式),放入从地址寄存器的bit6~bit0,即将你的I2C地址右移一位
点赞  2010-5-13 20:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复