一、问题的提出在某项目研发过程,软件与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
苹果Mac产品线大升级,能否带领苹果冲出困境
十大汽车“黑科技”不止于传说
变电站接地变压器接线原理、方法和方式
8英寸晶圆代工产能紧张,二线代工商寻求机会
中国液晶电视消费量急剧回落
IIC总线调试故障具体原因的定位过程及解决方法
华为已在全球签署了40个5G商用合同有超过100万客户选择华为云
互联网大数据等技术为房地产赋能,智慧住宅将成为发展趋势
移远通信推出FC6xE系列Wi-Fi 6/6E模组,助推智能家居与商业场景迈入智能化新阶段
坚定“逆风争第一”信心 TCL线上发布会不止创新
中国联通在陕西西安正在借助5G技术对红色教育进行现场直播
三星AR眼镜要来了?
新发展格局下 磁元件企业如何实现高质量发展
苹果、亚马逊和谷歌上榜 外媒揭晓过去10年十大创新科技公司榜单
电动车市场强劲增长,锂电池厂商受热捧
Xilinx 专家教你如何将系统级的单位功耗性能提升2
灵活调度、深度感知能力再升级,中国移动联合华为圆满完成SPN算力业务新技术创新试点
雅特力高性价比马达控制MCU方案,实现精准控制
openwrt路由器配置方法技巧分享
ldo稳压器工作原理,LDO基本电路图