首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Atmel SAM4S将TWI/I²C线路拉低

Atmel SAM4S将TWI/I²C线路拉低
EN

Stack Overflow用户
提问于 2016-08-02 17:28:15
回答 1查看 417关注 0票数 0

我们使用的是爱特梅尔公司的SAM4S2C 32位ARM微处理器和一个由bq20z45控制器控制的智能电池。电池向SMBus上的(不存在的)智能电池充电器发送消息。似乎在24 - 72小时内,微控制器和智能电池尝试同时在总线上发送数据。这通常不会是一个大问题,但有时在那次事件之后,SAM4S会将TWI-Lines (SDA,SCL)拉低。我们正在重置总线来解决这个问题,但如果能理解这里发生了什么,那就太好了。

我们可以通过在总线上放置一个100 the方形信号的函数发生器来重现这个问题。在微处理器中设置ARBLST (仲裁丢失)标志,两条线路都被拉低。

在电池断开的情况下使用总线(+函数发生器连接)也可以,但更健壮。这可能是因为没有与电池的实际通信,只有地址字节在总线上。因此,需要冲突的通信要少得多。

有没有人也遇到过与此相关的问题?有什么经验吗?一遍又一遍地阅读数据表并没有带来任何有用的结果。

SAM4S处于主模式。

EN

回答 1

Stack Overflow用户

发布于 2016-08-03 17:14:29

这就是我的看法:

SAM4S2C是主机,它发送起始信号+地址,并且在此阶段的某个时刻,线路为低电平,而不是预期的高电平。这意味着仲裁失败,就像在线上有另一个主机一样。在某些系统中允许使用多主机模式。让我们称这个虚拟第二主服务器为Virtual-Master。

此时SAM4S2C不再是主机,它想要告诉您它已经失去了仲裁,因此出现了ARBLST标志。

既然虚拟主机是主服务器,那么SAM4S2C就像是一个从服务器。从机被允许进行所谓的时钟伸展,这就是让时钟线保持低电平,只要它愿意,它就会这样做,以便您在恢复之前有时间进行处理。现在你需要停止时钟在固件中伸展,我不记得是怎么做的,对不起。然后可能会在显示错误之前重试几次相同的传输。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38716633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档