全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

IIC总线调试故障具体原因的定位过程及解决方法

时间:2023-06-26 14:30

人气:

作者:admin

标签: IIC总线  FPGA芯片  寄存器 

导读:IIC总线调试故障具体原因的定位过程及解决方法-在某项目研发过程,软件与FPGA联合调试xx芯片IIC总线过程中,遇到故障现象:软件发起一次IIC操作后,未收到ACK应答响应。...

一、问题的提出

在某项目研发过程,软件与FPGA联合调试xx芯片IIC总线过程中,遇到故障现象:软件发起一次IIC操作后,未收到ACK应答响应。通过查询FPGA内部寄存器,可获知以下信息:软件当前发起的IIC写操作发送字节数为4,FPGA已发送的字节数为1,因此FPGA未向软件上报ACK应答响应;但通过读取数据寄存器确认软件已将4个字节数据正确下发给FPGA。经过以上分析,当前IIC总线通信失败的基本原因已定位到FPGA仅成功发送了一个字节,其余三个字节未发送。下面主要描述一下具体原因的定位过程及解决方法。

二、解决思路及实践情况

FPGA与xx芯片IIC总线接口管脚为SCL以及SDA。通过示波器观测SCL与SDA信号,时序波形如图1所示,IIC总线状态从开始(START)状态跳转到发送延迟状态,再跳转到发送状态,经过8个SCL时钟周期将第一个字节数据(D0)发送完成,第9个时钟周期收到从设备(xx芯片)反馈回的ACK应答响应,之后跳转到结束延迟状态,最后跳转到结束状态。因此,当前故障现象为:FPGA成功发送了第一个字节,并且总线上也得到了从设备的ACK应答响应,但是FPGA并没有继续发送后续字节。

图片

图1

首先分析到的原因是FPGA是否检测到从设备反馈回的ACK应答响应。通过走查代码,发现代码编写过程中对SDA管脚做了如下处理:assign PPC_SDA_7 = sda[6]。问题出于此,SDA管脚应该为双向管脚,上述处理导致FPGA仅发送数据给xx芯片,但不接收xx芯片发送的数据,因此xx芯片反馈回的ACK信号FPGA并未检测到,因此不再发送后续3个字节。经过修改代码,重新测试IIC总线,验证通过,正确的IIC总线时序如图2所示。

图片

图2

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信