求教SMBus的问题,谢谢各位大神了

2020-01-20 19:04发布

最近使用C8051F340做个项目,用SMBus读加速度传感器,这个SMBus和IIC是一回事吧?
使用定时器1作为SMBus的时钟,不启用定时器3的超时检测,工作在主方式,开启中断。
首先检测总线是否繁忙,空闲的话将SMB0CF的BUSY置1抢占总线,然后将SMB0CN的TXMODE置1工作在发送状态,然后将SMB0CN的STA置1发送start信号,然后等待进入中断,可是一直也没有进入中断。
个人感觉中断肯定是开启了的,因为我手动将SMB0CN的SI位置1的话马上就会进入中断,所以中断配置应该没问题。
同时我启用定时器3的超时检测实验的一下,同样也是不进中断。
总线与管脚的连接我检查了多遍,应该没有问题,使用逻辑分析仪看信号,确实没有发出start信号。
有哪位大神能给指点指点问题可能出在哪了吗?多谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
zyqcome
2020-01-21 00:28
硬件原因呢,
最近也用了f120的SMBus,用得简单,主从通信,没做延时检测,
我把我遇到的问题给你参考:

1.最开始,起始信号发送后中断不能进入。这个也折腾了很久。开始怀疑是端口交叉编译引脚的问题,后发现是硬件的问题。片子焊错了,没有烧东西。但始终没中断。
   提一点是spi的3/4线制要在交叉引脚编译开关前配置,会有nss的问题

2.特定的数据位数不能发送。也是不能进入中断的问题。这个是地址位和命令的问题造成的。从地址位必须要发送对。没发送对就没答应。我是用的时钟芯片。命令在读写位前,当时没注意到这点,也找了好一会。

3.iic和这个好像是兼容的。反正现在用着没有问题,没有细看。

一周热门 更多>