主题中讨论的其他器件:TMS320F28379D、 AMC1204
我使用 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;