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.

[参考译文] TMS320F2810:与 TMS320F2810的源代码 LVDT 接口

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/716923/tms320f2810-source-code-lvdt-interface-with-tms320f2810

器件型号:TMS320F2810

你好。

抱歉。 我不知道英语、并且使用 translate.google.com

请帮帮我。

块1。

1)*CMPR1 = PWM_Duty;//写入新的 PWM 占空比
2) ADC_Result =* ADCRESULT0;//存储 ADC 读数
3) ADC_INPUT = ADC_RESULT ^ BIT15;//双极输入
4)*PIEACK = PIEACK_Group3;//确认 PIE 组3
5)* EVAIFRB = 0x0001;//复位 T2PINT 标志

块2。

/*删除输入偏移*/
1) ADC_INPUT =(ADC_RESULT >> 4)和0x0FFF;//无符号缩放输入
2) AvgSumDelta = ADC_INPUT−*(AvgRec.dptr);//有符号读取差异
3) AvgSum += AvgSumDelta;//调整运行总和
4)*AvgRec.dptr = adc_input;//替换最早的值
5) NextIntPoint (&AvgRec);//修改数据指针
6) InputOffset =(int)(AvgSum >> 7);//缩放偏移
7)标称输入=(ADC_INPUT−InputOffset)<< 4;//标准化 ADC 读数

这 意味着什么? (Block1行2和3)&&(Block2行1和2)。

为什么行阻塞1行2和3? 如果在块2中更改了 ADC_INPUT。

2. 为什么线性化只是一个附加项? 不 是线性内插?

谢谢你。

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

    Anton、

    您要解释的是这种工作代码吗?  它来自哪里?

    如果我们不知道它应该做什么,就无法解释它的执行情况。  如果不是来自 TI 软件示例、我们可能无法提供帮助。

    Tommy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TMS320F2810:与 TMS320F2810的源代码 LVDT 接口[ https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/677810]

    此主题已锁定。

    然后按"提出相关问题"按钮。

    我的问题已发送至 Richard Poley [https://e2e.ti.com/members/22638]

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

    应用手册现在已经很旧了、因此它正在测试我的存储器!

    1、可能是块1、行2是一个看不见的地方。 我在某些原始代码版本中可能有这种情况、但并未将其删除。 正如您指出的那样、变量"ADC_INPUT"正被覆盖在块2的第1行中、因此它没有任何作用。

    2.使用的线性校正方法不是很好。 线性插值本来会更好。 我没有完全执行或测试此部件、因为当时我无法使用校准设备。

    感谢您指出这些内容。

    此致、

    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您在该线程中告知 ADC 数据已向左移位、并使用 XOR 来接收 Int16_t
    但在块2中、它不是这样。
    因此、我有一个问题#1。
    感谢您的回答。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Anton、

    嗯、我不记得确切的情况、我不保证代码中没有错误。  我所说的是:"..I 对包括 InputVoltage 在内的大多数变量使用了 IQ24格式、但 NormalInput 是一个有符号16位整数、表示校正后的左对齐12位 ADC 读数:

    标称输入=(ADC_INPUT - InputOffset)<< 4;"

    这是您的帖子第2块中的第7行。  

    在块2中、ADC 输入右移、因此它代表一个12位无符号整数(F2812上的 ADC 结果为左对齐)。  然后、在长整数 AvgSum 中保持总共128个读数、并在块2的第6行中除以128 = 2^7得出平均值。  此部件似乎正确。

    在第7行中、平均值从最新的 ADC 读数中删除、结果向左移位4、因此此时读数为左对齐无符号整数。

    我认为以下行旨在生成有符号 I12Q20整数、但符号位似乎错误:

    InputVoltage =(_IQ)((long)标称输入<5);

    我不确定这一点。  如果您要应用代码、则需要仔细检查。  它在我上次使用它时起作用、但它并不是不可能进行微调、也不可能在之后进行测试。

    此致、

    Richard