C8051F020 SMBus一直处于busy状态解决办法

        当SMBus总线处于busy状态切且无法自动释放时,SMB0CN寄存器的第7位一直为 1,总线没有释放。

       SMBus总线释放超时的一个纠错机制,它允许SMBus状态机在 SDA 和 SCL 信号线同为高电平超过 10个SMBus时钟源周期后判断总线为释放状态。  如果总线释放超时被关闭,SMBus状态机通常在看到START之后认为总线处于忙状态,直到看到STOP条件才认为总线释放。

       如果总线释放超时被打开,SMBus状态机在没有STOP条件下也能认为总线释放。假设一个主设备开始START+ADDR+R/W 以及数据的传输,但没有发送一个STOP,在这种情况下,总线将不会认为总线一直处于忙状态,而是会在SDA和SCL同时为高后10个SMBus时钟源周期以后,认为总线释放。以下图为例,显示总线在10个SMBus时钟周期之后释放。

解决办法:将SMB0CN寄存器的第1位设置为1,打开总线释放超时检测功能。SMB0CN=0x62

Silicon lab官网相关链接:SMBus 总线释放超时 (CN) (silabs.com)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值