I2C通信波形+规格书+软件的分析与理解

I2C通信波形+规格书+软件的分析与理解

前提:首先我们也是用了很久I2C的硬件开发者了,我们熟悉的I2C有哪些特性呢?

  1. 比如100kHz,400kHz的常用的时钟频率,
  2. 又比如说在设计时按需求设置4.7k或者2.2k的上拉电阻,
  3. 再比如它通常是半双工,通过寻址来锁定对方,
  4. 最后比如它多以开漏输出以及高阻输入为主。

那我们这篇文章主要讲的是:结合多种实际传输的I2C波形,同时结合硬件软件规格书,分析理解I2C的传输协议以及如何将我们的实际波形数据转化为实际参数的方法。(适合和我一样没写过几次代码的硬件开发者)。

一、实际示波器波形与疑惑

我们拿英飞凌的TLI493D这个霍尔传感器来做案例(我实际测出来的):

图1、示波器抓取数据

这个时候我们想知道X, Y, Z轴的数据,是0XFF,0X00,还是啥?

这个时候就很烦,一共有8组数据啊,我咋知道哪个是哪个!

二、阅读规格书分析

然后我们需要看规格书了:

图2、硬件规格书数值计算

啥?还分8-bit和12-bit ?我咋知道哪个是哪个!还说有用到补码,你说气不气,我做硬件这么久都忘差不多了;当然人家规格书给了计算的表,还是挺友好的。

好吧这是软件写的,我还没问他,我先无脑用8-bit的数值试试看。

图3、第一次错误计算表格

图4、串口读到的值

然后我们软件工程师写的代码给出的值是-2,1,0 ,我计算的都是啥呀,驴头不对马嘴!

三、和软件沟通分析

接下来去问软件:“你咋写的代码”,他直接给我甩了另一个规格书,第三页给出了说明。

图5、软件规格书寄存器部分

哦~原来是12-bit的计算方法啊~

而且数据还在不同的地方,第一个数据+第五个数据前4bit = X轴的数据

Y, Z 轴数据同理

四、正确的分析和理解波形&数据

接下来我们再来看下我们示波器抓到的数据进行处理计算:

图6、按图5中的说明进行组合

图7、第二次正确计算表格

图8、串口读到的值

好好好~这下和我们的软件工程师给的输出值对上了,哈哈哈~

那我们第一个规格书里面还需要乘一个0.13呢!软件为啥没乘?如图9所示:

图9、规格书数据计算部分

我猜一猜,后面还要做运算,整数更好运算,同时我们只需要一个相对的数值就行了,不需要再乘0.13得到绝对的磁通数值;咨询软件后证实了我的想法。

五、结语与作业

总结:老家有个俗语:会者不难,难者不会。不懂的先看规格书分析,然后还不懂就问同事,别自己瞎想。

好了,又到了说再见的时候了,最后给大家布置个作业,用本篇文章案例中的芯片I2C计算方法,计算如下图片我们的设备输出值:

图9、让大家练练手的图

答案咋们评论区见~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值