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.

[参考译文] TMS320F28377D:AMC1204/TMS320F28377D 从位转换为电压

Guru**** 2510095 points
Other Parts Discussed in Thread: AMC1204, TMS320F28377D, TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/608757/tms320f28377d-amc1204-tms320f28377d-conversion-from-bits-to-volts

器件型号:TMS320F28377D
主题中讨论的其他器件:TMS320F28379DAMC1204

我使用 AMC1204和 TMS320F28379D 来测量+/- 250mV 范围内的隔离电压。 一切都正常、我将 TMS320F28377D 的 SDFM SDDATA2寄存器读作 Int32。 正如预期的那样、当输入电压低于0V 时、我得到一个负数、当输入电压高于0V 时、我得到一个正数。

理论上、如果我要有一个具有3伏电压基准的12位 ADC、我会将我读取的0至4095位寄存器缩放3V/4095位、以获得原始电压。 我的问题是如何将从 SDDATA2寄存器读取的 Int32值"理论"调节到+/-250mV 范围内的输入电压。

我读取一个25mV 信号、并得到一个相应的5000位输出(5e-6V/位)。 这接近于+320mV - AMC1204的满量程范围-和2^16-1或65535位(4.88e-6V/位)。 这些增益值接近、但这毫无意义、因为我读取的是 Int32、而不是16位值。

如果有用、下面是我用于初始化 SDFM 的代码:

//allocate SDFMS to CPU1
EALLOW;
DevCfgRegs.CPUSEL4.bit.SD1 = 0;
DevCfgRegs.CPUSEL4.bit.SD2 = 0;




ED1U;//初始化 Sigma Delta 输入的 GPIO EALLOW;GpioRegs.GPBGMUX2=
59;GPIOL.CLUSDORT.GPIOL.59;GPIOL.CLUSORG.BOOL.59位



GpioCtrlRegs.GPBGMUX2.bit.GPIO58 = 1U;
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3U;
EDIS;

//启用 SDFM 模块时钟
EALLOW;
CpuCtrlRegs.PCLKCR6.bit.SD1 = 1U;CSysRegs./SDPS2.d2
= SDTLM2SDTRS/SDTLM2SDTRS.SDTLM2SDTLM2SDM2SDM2SDTRS.set








= SDTLSDM2SDTLM2SDM2SDM2SDTRS.SDTLSDM2SDM2SDTLM2SDM2SDTRS.SDTLM2SDM2SDTRS.SDTLSDM2SDM2SDM2SDM2SDTRS.SDTLM2SDTLSDM2SDTLSDM2SDM2SDTRS.SDTLSDM2SDM2SDTRS.SDTL

//为此
Sdfm2Regs.SDDFPARM2.bit.Fen 启用滤波器= 1U;
//将过采样率设置为(255 + 1)
Sdfm2Regs.SDDFPARM2.bit.DOSR = PARU;
//设置 SDIPARM2
//将数据字段的宽度设置为32位二补码 Sdfm2Regs.SdSDARM2.bit.DOSR = SDARM2.1u;//




将 SDM2RF2设置为 SDARM2RF2.1/ SDM2RF2.1u.SDM2RF2;//从 SDM2RF2位/SDM2RF2RF2RF2RF2.1/ SDM2RF2RF2RF2RF2.1/ SDM2RM2.1/ SDRM2RF2.1/复位/SDARM2RF2RF2RF2.1



//启用主中断使能
Sdfm2Regs.SDCTL.bit.MIE = 1;

//设置 SDMFILEN
//设置主过滤器使能
Sdfm2Regs.SDMFILEN.bit.MFE = 1U;
EDIS; 

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

    我认为可以在28377D 的 TRM 中找到答案。

    www.ti.com/.../spruhm8f.pdf

    第1504页的表13-3包含了 DOSR 与峰值数据值间的关系(以位数表示)

    //设置数据滤波器结构
    Sdfm2Regs.SDDFPARM2.bit.st = 2U;
    //将过采样率设置为(255 + 1)
    Sdfm2Regs.SDDFPARM2.bit.DOSR = 255U; 

    此代码显示我选择 SINC2滤波器和256 DOSR。 如果我查看表13-3中的相应条目、我会看到范围是-2^16到2^16-1、这正是我从处理器上的代码中看到的。

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

    感谢您将解决方案发布到您的问题。