This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LDC1101EVM:数据解码

Guru**** 1630180 points
Other Parts Discussed in Thread: LDC1101
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1099630/ldc1101evm-data-decoding

部件号:LDC1101EVM
主题:LDC1101中讨论的其它部件

大家好,

正如Justin所说,我按照步骤 通过MATLAB编码找到Rp和L值。

我正在使用“0620”命令开始流式传输数据,然后收集数据。

请告诉我,我的MATLAB代码是否适用于Rp+L数据采集?

现在,答案如图所示。 请告诉我收到的数据是否正确。 如果没有,我缺少什么? 如果是,我现在还有两个问题需要解决。

1)我只想在MATLAB中绘制Rp和L的整数值。  

2) 此外,我使用的并行电容器是470pF,而不是390pF (默认值)。 是否有任何方法可以写入命令来更改并联电容值?

这对我的研究太有帮助了。

此致,

Vivek     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Vivek,
    Justin目前不在办公室。

    您能否确认您的代码正在从正确的寄存器0x21 - 0x24读取数据?

    您提到要在MATLAB中绘制Rp和L。
    根据数据计算Rp的公式在数据表的公式(4)中给出。

    您可以使用数据表中的方程式(6)和(7)来计算L。


    我不确定您 在第二个问题中所问的是什么,但更改物理电容只会改变方程式(7)中的计算。

    此致,
    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    John,

    我尝试发送命令'0321' 以获取Rp数据,但 我没有得到响应。

    您能否告诉我代码本身的哪些地方以及我需要更改/修改什么内容?

    实际上,当我使用'0620'时 ,LDC1101正在给我发送一个回复。

    我只是想问您,通过MATLAB从LDC读取数据有哪些命令?

    此致,

    Vivek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的John是否也可以通过团队或谷歌会议加入视频通话?

    在那里解决我的问题会更好吗?

    此致,

    Vivek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Vivek,

    我和一位同事谈过,他建议先读状态登记('0.3201万'),然后读LSB ('0321'),接着读MSB ('0322')。

    此致,
    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    John,

    假设我必须采集1万个Rp/L样本,则读取状态寄存器的循环应为1万次,然后读取MSB和LSB寄存器应为1万次。

    他们可以给出什么输出,有什么猜测?

    流命令0620的作用是什么?

    谢谢!

    Vivek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Vivek,  

    如果需要获取多个数据样本,则必须在每个数据样本之前读取状态寄存器。 伪代码示例如下所示:  

    while (loop_count < 1万):

    SEND ('0320')//读取状态寄存器
    发送('0321')//读取RP LSB寄存器
    SEND ('0322')//读取RP MSB寄存器
    SEND ('0323')//读取 L LSB寄存器
    SEND ('0324')//读取 L LSB寄存器

    每个寄存器读取将返回其寄存器中的值。  然后可以组合每个数据的MSB和LSB值。  

    '0620'命令用于通过不断对多个数据点进行流化而不必逐个读取它们来收集这些数据点。 您使用此命令读取的数据在MATLAB脚本中看起来很好。  您可以保留现有数据,也可以根据 需要将其转换为十进制数据以供使用。  

    此致,  

    Justin Beigel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Justin,您好!

    我还有两个问题。 我有点困惑。 我尝试了你告诉我的操作,但当我将它转换为十六进制时,有许多零出现。

    1)当我读20,21,22,23和24时,会有什么输出(响应)? 是二进制还是十六进制还是ASCII? 如果是其中的任何一种,它们的尺寸是多少?  1字节,2字节,3字节??? 我之所以问您,是因为当我读取2个字节时,我得到了很多零。 从图2中可以清楚地看到这一点。

    2)假设我正在使用循环来收集" L "的前1万个样本,并在MATLAB中以整数格式绘制它们。 执行此操作的最佳方式是什么? 我的意思是,是否需要将这些字符数据转换为十六进制,然后转换为整数。 我无法判断来自23和24的数据包(字节)是多少。

    此致,

    Vivek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Vivek,  

    EVM的响应是 一个8字符ASCII阵列,但您似乎正在使用sprintf ('%02x',已接收)将其转换为Matlab代码中已存在的十六进制数组; 在代码中的该行之后,应该有一个8个十六进制值的数组(如hexpass变量中所示)。 从这里,您将数据正确解析为Rp变量,因此您只需在绘制值之前将其从十六进制转换为十进制。  

    如果通过单寄存器读取执行实现,则每次都将得到一个8个字符的数组,因此在绘制数据之前,必须丢弃多余的0并将每个数据集的MSB和LSB寄存器值相结合。  

    此致,  

    Justin Beigel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Justin,您好!

    我正在共享一个已修改的代码。 我想从你的上述评论中了解一些事情。

    首先,是否可以从“0620”流式传输命令获取RP/L数据? 请回答是/否

    情况1 a)如果是,那么是否需要读取寄存器21,22,23和24?

    使用 “0620”流式传输命令而不是“0320”-->"0321"-->“0322"会有什么问题?

    情况1 b)如果否,则 我将 使用哪些命令来获取连续的L (电感)数据?

    我再次与您共享这两段代码,使用streaming命令和reading命令循环重复读取寄存器。

    非常关注MATLAB代码中的这一行

     Received(count,:)=read(sObject,8,'Int16');%读取传入响应(8字节),该响应在 读取状态寄存器,第23和第24个寄存器后存储(整数16格式) Received变量中的传入响应。

    请告诉我哪一个是对的,我错了哪里?

    MainCode

    此致,

    Vivek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Vivek,  

    首先1101首先,408.081万,是否408.081万是否可以从"0620"流式传输命令获取Rp/L数据?

    是的,您可以从此命令获取Rp/L数据。  

    是否1101是否需要408.081万需要读取408.081万读取寄存器21,22,23和24?

    否。配置设备并进行流式传输后,此数据将已传输。  

    使用1101使用 流408.081万流式408.081万式传输命令而不是“0320"-->"0321"--->"quote"会0321会有什么问题?[/0322]

    0620 streaming命令要求您将数据解析为status,Rp和L部分:  

    这两种方法都可以实现,但 流式传输命令是为此用例设计的。  

    此致,  

    Justin Beigel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Justin,您好!

    这次很明显,0620命令实际上提供了我的Rp/L数据。

    我对 “L”数据很感兴趣。

    为此,我修改了我的代码,仅使用L测量(LHR模式)。

    我的下一个挑战是从收到的十六进制数据读取L_MSB,L_MID和L_LSB。

    如何将此数据转换为整数? 我的意思是,是否有更多的数学方法可以用来将它们转换成整数?

    我要附上我的代码以及与之相关的变量。

    请看一下,并建议我可以在MATLAB中做些什么

    L_MSB

    L_MID

    此致,

    Vivek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Vivek,  

    您可以将L数据作为一个变量读取,而不是将每个寄存器分开,因为寄存器已经通过流式传输命令正确排序。 尝试使用:  

    L (k,:)= L_hexpass (count,3:8);  

    这将以一个变量的形式提供L数据,然后您可以将其从十六进制转换为十进制。  

    此致,  
    Justin Beigel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Justin,您好!

    十六进制输出为“2BABD1”,转换为“286.2033万”。

    但我知道的实际电感是12.93uH。

    从您那里得到的与传感器线圈I并联使用的并联电容器是390pF。

    是否会对输出电感产生任何影响?

    请就此提供一些建议。

    此致,

    Vivek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Vivek,  

    如果您希望将数据代码转换为传感器的电感测量值,则可以按照 LDC1101数据表的9.1 9部分中的步骤操作:  

    使用您的器件配置和EVM上的电容,您可以根据数据代码计算电感。  

    请注意,由于板上的制造公差,预期电感和测量值之间可能存在一些差异。 因此,除非执行系统校准,否则这些设备最适合相对测量而非绝对测量目标。  

    此致,  

    Justin Beigel