I2C DEBUG记录

I2C DEBUG记录

BUG1:为什么主机发送SLA+W后回复NACK

通道一为:SDA 通道二为:SCL

该示波器的图像含义为:1.主机发送起始信号 2.主机发送SLA + W

SDA数据线:00010101 -> 0x0A + 0x01(错误数据,应该为0x00),所以导致从机回复NACK,修改后正确回复

image-20230321154450785

示波器的频率设置:

通过示波器抓取的波形,通道1为PA.2(SCL),实测频率为70.39khz

其中寄存器的设置为 CR[0:1] = 3, CR[3:9] = 9

I2C_CLOCK = FsysPclk1/(CR[9:0]+1)/4 = 16M/(39 + 1)/4 = 100khz

image-20230321183634220

BUG2:为什么主机发送DATA只存在8个周期,不应该为9个周期吗?

备注:发送的字节为0x01,但是发送完毕后,没有回复ACK和NACK
原因:是由于aardvark总线在产生SLA+R信号后,在总线超时时间450ms内,未收到从机发送的数据,所以释放掉了总线,导致没有ACK和NACK,故导致失败
解决:流程应该为先配置好从机的,然后配置主机,这样才是正常流程。
在这里插入图片描述

BUG3:为什么主机发送数据都正确但是还是NACK呢?

未打开aardvark上拉电阻前:

image-20230331162115652
打开aardvark上拉电阻后:


当前NI平台调试:
1.之前NI平台调试主机发送不通过原因,未考虑aardvark上拉电阻,打开上拉电阻后就能够接收到数据
2.当前获取到的波形和本地调试的波形上升沿差别也是由于上拉电阻的原因
需要查看下上拉电阻在NI平台上需要打开,但是最小系统板不需要打开的原因

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值