[牛人杂谈] 新唐51内核系列单片机的I2C状态寄存器

[复制链接]
 楼主| huahuagg 发表于 2024-1-17 15:30 | 显示全部楼层 |阅读模式
I2CnSTAT状态寄存器中,有两种状态码不归属25种之前所述状态,第一个状态码是F8H 用以标示在每次的传输中没有有效信息,意味着,SI标志位为0且无I2C 中断产生。另一个状态码00H 标示在传输过程中,有总线错误发生。总线错误是指START 或 STOP在传输的过程中出现在错误的位置,例如在地址或数据的第二位或应答位。当总线发生错误,SI标志马上会被置1,工作中的节点设备马上切换到未被定址从机模式,释放SDA 和SCL,并将I2CnSTAT寄存器清0。要恢复总线状态,需要置位STO位并清除SI位,然后STO会由硬件清0,而不需要真正的STOP信号波形,释放总线恢复到正常空闲状态。
有一种特殊情况,当SDA线被强制拉低导致阻塞,START信号或重复起始(repeat START)信号无法成功产生时,从机将失去同步。解决方法是在SCL线上额外多送一个时钟脉冲。通过将STA位置1,总线上产生额外的时钟脉冲,由于SDA始终拉低,SDA线上不会产生START信号。一旦SDA线被释放,正常的START信号送出,状态寄存器上会显示08H,串行传输继续。相同的状况,如果需要发送重复开始(repeated START)信号受阻,也可以采用上述方式。在上述方式完成传输后,状态寄存器显示10H,而不是显示08H。注:软件无法介入上述总线问题传输。

3465265a781fd7655b.png


yiy 发表于 2024-1-18 23:14 | 显示全部楼层
新唐的I2C功能比较多,寄存器比较多。
埃娃 发表于 2024-1-29 10:55 来自手机 | 显示全部楼层
iic不都是一样的吗?
埃娃 发表于 2024-1-29 10:56 来自手机 | 显示全部楼层
还区分不同的功能吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1408

帖子

2

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

159

主题

1408

帖子

2

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