ZHCA818 June 2018 AMC1305M25
根据规格书可知,AMC1305M25 的输入范围为正负312.5mV,当输入达到312.5mV,输出为近乎100% “1”码流;当输入位-312.5mV,输出为近乎100% “0”码流。另外,根据 F28377S 的规格书,可以得知:SDFM 模块支持两种数据格式,第一种为32 位二进制有符号补码;第二种为有符号16 位二进制有符号补码,在 SINC3 滤波器模式下,由于数据位宽过大,如果使用16 位表示数据,最终数据需要进行移位处理。不正确的移位和换算都会导致最终数字量结果和模拟量输入幅值不匹配。本章将以 SINC3 滤波器为例,分别给出了根据32 位数据格式和16 位数据格式计算输入电压的方法。
图 3-5 不同滤波器阶数和过采样率组合下SDFM输出范围,与公式(8)对应
图 3-6 AMC1305 采样前端接入100mV 电压为了验证输入模拟量幅值与数字量关系,在AMC1305M25 输入端连接100mV 电压源,作为参考。使用六位半电压表测得实际的输入电压幅值为100.12mV。
使用32 BIT 有符号位二进制补码(SDDPARMx.DR = 1):
在示例代码中,可以通过读取 SDFM1_READ_FILTER1_DATA_32BIT 寄存器得到SDFM 滤波器输出值。在计算输入电压时,首先将寄存器得到的数据由二进制补码转化为十进制,然后使用公式(8)和 图 3-5 即可得到对应的 AMC1305M25 输入端模拟量幅值。表 3-1 对比了在不同过采样率下使用公式(8)计算的结果,输入幅值皆为 100mV ±2%,与电压表测试结果相同。
R/OSR:过采样率;OUTDecimal:滤波后数据十进制表达,二进制有符号位补码,MSB为符号位;O:SINC 滤波器阶数;VClipping :为模拟前端动态范围最大值
从AMC1305M25 规格书可知VClipping = 312.5mV;
以下数据在 SINC3 滤波器不同过采样率,对数字采样信号进行1024 次采样平均之后得到的:
| Filter Type | 二进制补码转为十进制 | 𝑅𝑂 | Vin 计算 |
|---|---|---|---|
| SINC3 R/OSR64 | 84024 | 262144 | 100.16mV |
| SINC3 R/OSR100 | 319780 | 1000000 | 99.77mV |
| SINC3 R/OSR128 | 673092 | 2097152 | 100.14mV |
| SINC3 R/OSR256 | 5361067 | 16777215 | 99.86mV |
使用16 BIT 有符号位二进制补码(SDDPARMx.DR = 0):
当使用16 BIT 数据时,滤波器输出数据储存在寄存器SDFM1_READ_FILTER1_DATA_16BIT。由于数据溢出,F28377S 会自动对滤波结果进行右移位处理,图 3-7 给出了针对不同SINC 滤波器和过采样率下对应的移位个数。
图 3-7 不同过采样率下对应SINC 滤波器支持16BIT
输出时移位个数结合 图 3-7 和公式(8),可以得到公式(9),即为使用16 BIT 有符号位配置下,滤波器输出结果与输入模拟量幅值的对应关系。表 3-2 给出了实际测试中,当输入为100mV 时,F28377S 的数字量结果与模拟量幅值对应关系。
S:图 3-8 中 不同OSR 对应的寄存器移位个数
| 滤波器设置 | 二进制补码转为十进制 | 2𝑆 | 𝑅𝑂 | Vin 计算 |
|---|---|---|---|---|
| SINC3 R/OSR 64 | 5244 | 16 | 262144 | 100.02mV |
| SINC3 R/OSR 100 | 10003 | 32 | 1000000 | 100.03mV |
| SINC3 R/OSR 128 | 5244 | 128 | 2097152 | 100.02mV |
| SINC3 R/OSR 256 | 10495 | 512 | 1677216 | 100.09mV |