1. SDFM模块配置与Sinc滤波器在实时控制系统中的应用在电机驱动、数字电源或者高精度传感器测量这些实时控制领域里我们工程师常常面临一个经典难题如何既快又准地获取关键的模拟量信号比如相电流、母线电压或者温度。传统的逐次逼近型ADC虽然速度不慢但在高精度、高抗噪的场合下其成本和布线复杂度会急剧上升。这时Σ-Δ调制技术配合片上集成的Sinc滤波器就成了一种非常优雅的解决方案。它把高精度的模拟信号调理和模数转换部分“外包”给了外置的Σ-Δ调制器芯片而微控制器比如TI的TMS320F28004x则专注于用数字滤波器处理高速的1-bit数据流最终得到我们需要的多比特数字结果。这种架构的优势很明显抗干扰能力强差分信号传输、精度高轻松做到16位以上有效位数、隔离性能好而且节省了MCU的模拟引脚资源。但要把这套系统用稳、用准核心就在于对MCU内部那个Sigma-Delta滤波器模块的透彻理解和精细配置。这不仅仅是调用几个库函数那么简单从引脚配置、时钟模式选择到Sinc滤波器类型、过采样比的权衡再到数据同步与保护逻辑的实现每一步都藏着细节。搞懂了这些你才能真正发挥出SDFM在实时控制系统中的威力实现高精度采样与快速硬件保护的无缝结合。接下来我就结合手册内容和实际调试经验带你深入SDFM的世界。2. 硬件接口配置与“第一公里”稳定性保障任何外设的稳定运行都始于可靠的硬件连接对于SDFM这种直接处理高速时钟与数据流的模块更是如此。配置不当轻则数据跳动重则系统误触发保护因此我们必须重视这“第一公里”。2.1 GPIO多路复用与输入限定配置SDFM的输入信号SDx_Cy时钟和SDx_Dy数据需要通过GPIO引脚接入。TMS320F28004x的GPIO模块功能强大但配置有严格的顺序要求旨在消除引脚上的毛刺。配置顺序至关重要手册明确指出了配置顺序——先配置GPyGMUX寄存器同时保持对应的GPyMUX寄存器为默认值0然后再将GPyMUX寄存器写入目标值。这个顺序是为了在切换引脚功能时避免出现短暂的中间状态导致引脚输出不可控的电平毛刺。在实际编程中TI的驱动库GPIO_setPinConfig函数通常已经封装了这个顺序但如果你是在直接操作寄存器务必遵守此规则。输入限定模式的选择这是SDFM稳定性的第一道屏障。GPIO输入限定器可以对输入信号进行消抖或同步处理。SYNC同步模式这是TI官方推荐的选项。在此模式下输入信号会与系统时钟SYSCLK同步。这相当于一个简单的硬件滤波器可以滤除那些偶尔出现的、宽度小于一个SYSCLK周期的随机噪声毛刺。这对于SDx_Cy时钟引脚尤其重要因为任何时钟线上的毛刺都可能直接导致SDFM内部采样错乱产生错误数据甚至引发错误的比较器跳变。选择SYNC模式就是为时钟信号增加了一层保护。ASYNC异步模式此模式下输入信号直接进入无同步延迟。虽然延迟最小但它对输入信号上的噪声毫无抵抗能力任何毛刺都可能被采集进来。除非你的硬件电路非常“干净”信号完整性极佳并且系统对延迟极其敏感通常SDFM本身的滤波延迟远大于此同步延迟否则不建议使用ASYNC模式。重要提示无论选择SYNC还是ASYNC都必须确保你的信号满足数据手册中“SDFM Electrical Data and Timing”章节对应的时序要求。这包括SDx_Dy数据相对于SDx_Cy时钟的建立和保持时间。使用SYNC模式时需要额外考虑同步器带来的延迟。2.2 时钟极性处理与硬件设计要点时钟极性反转这是一个非常实用且容易忽略的细节。SDFM模块默认期望数据SD-Dx在时钟SD-Cx的下降沿变化并在时钟的上升沿对数据进行锁存。然而市面上有些Σ-Δ调制器芯片的输出时序恰恰相反数据在时钟上升沿变化期望接收端在下降沿采样。如果时钟和数据边沿关系不匹配采到的全是错位的数据。解决这个问题无需修改硬件电路只需利用GPIO模块的输入反转功能。通过设置对应SD-Cx时钟引脚的GPxINV寄存器位可以将输入的时钟信号极性反转。这样一来原本是上升沿的变成了下降沿从而与SDFM模块的预期采样边沿对齐完美兼容不同厂商的调制器。硬件布局与信号完整性 手册中的“CAUTION”部分用加粗强调必须认真对待。SDx_Cy时钟信号直接驱动SDFM模块内部逻辑其质量是生命线。串行端接如果时钟驱动源调制器芯片的输出阻抗与PCB走线的特征阻抗不匹配会在接收端MCU引脚产生信号反射和振铃Ringing。这种振铃在时钟边沿附近可能产生多次穿越逻辑门限的情况被SDFM误判为多个时钟脉冲。在时钟线上串联一个小电阻如22Ω-100Ω具体值需根据仿真或调试确定进行源端端接是抑制振铃的常用有效方法。布线隔离SDx_Cy和SDx_Dy走线应远离其他噪声源例如PWM输出线、电源开关节点、晶振电路等。建议采用差分走线即使信号是单端的也最好有紧邻的地线伴随并增加与噪声源的间距以减少耦合干扰。电源去耦为调制器和MCU的电源引脚提供充足、就近的退耦电容确保电源干净也是保证信号质量的基础。3. 输入控制单元与调制器时钟模式解析SDFM的输入控制单元是数据流的“海关”它负责接收来自调制器的比特流和时钟并根据配置的模式进行解码将串行的比特流转换为可供后续滤波器处理的并行数据。理解其工作模式是正确配置的前提。3.1 四种调制器时钟模式详解输入控制单元通过SDCTLPARMx.MOD位域支持四种工作模式以适应不同调制器的输出格式。模式0 (MOD0)标准模式描述调制器时钟SD-Cx频率与调制器数据率MDR相同。输入控制单元在每个调制器时钟的上升沿对数据SD-Dx进行采样。应用场景这是最常见、最标准的工作模式。绝大多数Σ-Δ调制器如TI的AMC130x系列都采用这种模式输出独立的时钟和数据信号。时序要点确保SD-Dx在SD-Cx上升沿之前和之后满足足够的建立和保持时间。模式1 (MOD1)半时钟模式描述调制器时钟频率是数据率的一半。输入控制单元在时钟的每个边沿上升沿和下降沿都采样数据。这意味着每个时钟周期传输两个数据位。应用场景用于某些为了节省引脚而将时钟速率减半的调制器。在此模式下数据速率是时钟频率的两倍。硬件连接时钟线连接不变但需要理解此时时钟的实际含义是“位时钟”的一半速率。模式2 (MOD2)曼彻斯特编码模式描述调制器时钟关闭SD-Cx引脚可悬空数据和时钟信息被编码在单一的SD-Dx信号中采用曼彻斯特编码。输入控制单元内部会自动进行连续校准以实现最佳解码性能。应用场景用于输出曼彻斯特编码的调制器进一步节省了一个引脚。这对于通道数多、引脚紧张的应用有吸引力。但需要注意曼彻斯特编码本身有50%的固定开销且解码电路会引入额外的延迟和复杂度。实操注意选择此模式后无需为SD-Cx引脚配置时钟功能。SDFM内部会从数据流中恢复时钟。模式3 (MOD3)双时钟模式描述调制器时钟频率是数据率的两倍。输入控制单元每隔一个时钟上升沿即每两个时钟周期采样一次数据。应用场景相对少见可能用于某些特定架构的调制器或需要更高时钟频率进行同步的场景。模式选择的核心逻辑选择哪种模式完全取决于你选用的Σ-Δ调制器芯片的数据手册。务必仔细阅读调制器手册中的“接口时序”或“数字输出”部分确定其输出的是标准时钟数据对、半速时钟、还是曼彻斯特编码。配置错误会导致数据完全无法正确解码。3.2 调制器满量程与输入范围注意手册中的“Note”提醒了一点为了达到理论上的最大输出值调制器需要工作在绝对的正或负满量程。但绝大多数调制器的推荐工作范围是其满量程的80%例如±250mV满量程的调制器推荐输入电压为±200mV。这意味着在设计前端模拟电路如采样电阻、运放增益时应该让被测信号的最大值落在调制器推荐输入范围的80%左右为信号留出一定的余量避免饱和失真同时也能充分利用调制器的动态范围。4. Sinc滤波器核心原理、参数计算与选型指南Sinc滤波器是SDFM模块的灵魂它负责将高速的1-bit Σ-Δ数据流“还原”成我们需要的低速、高分辨率的数字样本。它的配置直接决定了系统的精度、速度和延迟。4.1 Sinc滤波器的工作原理与频率响应Sinc滤波器本质上是一个低通滤波器加抽取器。其Z域传递函数为H(Z) [(1 - Z^-OSR) / (1 - Z^-1)]^N。你可以把它想象成一个“平均值计算器”。N是滤波器阶数OSR是过采样比。积分器(1/(1 - Z^-1))对输入的比特流进行累加。阶数N越高累加的“深度”越大。抽取器(Z^-OSR)每积累OSR个输入比特才输出一个结果从而将数据速率从调制器的高频如10MHz降低到可处理的中低频如几十KHz。微分器(1 - Z^-1)抵消积分器带来的直流增益并形成Sinc函数的频率响应。不同阶数滤波器的特性Sinc1 (N1)阻带衰减最慢滚降特性最平缓。延迟最小但抗混叠和抑制带外噪声的能力最弱。Sinc2 (N2)常见的二阶滤波器在延迟和抑制能力之间取得较好平衡。Sinc3 (N3)阻带衰减更快对带外噪声特别是调制器噪声整形后的高频噪声抑制能力更强。但延迟比Sinc2大50%。SincFast (N3但结构优化)同为三阶但通过结构优化在保持与Sinc3相近的阻带抑制能力的同时拥有更低的群延迟。这对于需要快速保护的电流环应用是极佳选择。频率响应选择参考手册中的频率响应图Figure 17-7。当OSR32调制器频率为10MHz时Sinc3和SincFast在低频段我们关心的信号带宽内响应几乎一致但SincFast的过渡带更陡。如果你的信号带宽是1kHz那么选择OSR256的Sinc3或SincFast其通带衰减都可以忽略不计。但如果你关心的是滤波器的阶跃响应速度即延迟SincFast则是更优解。4.2 关键参数计算数据速率、延迟与有效位数这是工程配置中的数学核心必须掌握。数据速率即滤波器输出结果的更新频率。数据速率 调制器数据率 / OSR举例调制器数据率 10 MHz OSR 256。计算数据速率 10,000,000 / 256 39,062.5 Hz ≈ 39.1 kSPS每秒千样本。滤波器延迟从滤波器使能或复位后到输出第一个稳定、正确结果所需的时间。延迟 滤波器阶数 / 数据速率举例接上对于Sinc3滤波器阶数3延迟 3 / 39,062.5 Hz 76.8 µs。对于Sinc2滤波器阶数2延迟 2 / 39,062.5 Hz 51.2 µs。对于SincFast滤波器阶数3但有效延迟通常介于Sinc2和Sinc3之间具体需查表或实测手册示例中按3阶计算为76.8µs但实际因其结构优化初始错误样本数更少见后文表17-6有效建立时间可能更短。延迟的工程意义这个延迟直接影响了系统的响应时间。在电流环控制中从采样到PWM更新这个延迟是总环路延迟的一部分。在过流保护中从故障发生到比较器触发这个延迟决定了保护的速度。SincFast在这里的优势就体现出来了。有效位数ENOB是一个结果性指标它由调制器性能、滤波器类型和OSR共同决定。它并非直接配置而是我们设计的目标。通常OSR越高ENOB越高但数据速率越低延迟越大。需要在分辨率、速度和延迟之间做权衡。最准确的方法是查阅你所使用的Σ-Δ调制器数据手册其中通常会提供不同滤波器类型和OSR下的ENOB典型值曲线。4.3 滤波器类型选型实战建议如何为你的应用选择合适的Sinc滤波器追求极致速度的保护回路如逐周期限流首选SincFast。它能在三阶滤波器的噪声抑制水平下提供接近二阶滤波器的延迟是实现快速硬件保护Comparator Filter的理想选择。数据手册表17-6指出SincFast仅前两个样本不正确而Sinc3也是前两个但SincFast的稳定速度更快。高精度数据采集回路如相电流反馈用于控制算法可以选择Sinc3。它提供最高的阻带抑制能更干净地滤除高频量化噪声在相同的OSR下理论上能得到略好于SincFast的SNR和ENOB。如果系统对这几十微秒的额外延迟不敏感Sinc3是稳妥之选。对延迟和精度要求均衡的通用场景Sinc2是一个折中的选择延迟比Sinc3小三分之一。对延迟极度敏感且噪声环境较好的场景可以考虑Sinc1但需谨慎评估其较弱的噪声抑制能力是否满足要求。一个常见的配置策略在电机控制中我们经常为同一个电流信号配置两个滤波器通道数据滤波器配置为Sinc3OSR256用于高精度电流环计算。数据速率约39kSPS延迟约77µs对于通常1-10kHz的电流环带宽这个延迟在可接受范围内。比较器滤波器配置为SincFastOSR32用于快速过流保护。数据速率高达312.5kSPS延迟仅约9.6µsSincFast按~3阶算3/(10MHz/32)能实现微秒级的硬件保护响应。5. 数据滤波器单元的深度配置与数据管理数据滤波器Primary Filter是我们获取高精度测量值的主要通道其配置灵活性很高也涉及一些容易出错的细节。5.1 输出格式32位与16位的抉择与移位配置数据滤波器的原生输出是26位有符号整数二进制补码格式。但我们可以选择以32位或16位格式来读取它。32位格式设置SDDPARMx.DR 1。这是最直接的方式CPU/CLA/DMA直接读取完整的26位数据存储在32位寄存器的低26位高6位为符号扩展。需担心数据溢出或精度损失编程简单。16位格式默认或设置SDDPARMx.DR 0。这是为了节省存储空间和总线带宽尤其是在使用CLA或需要存储大量样本时。但这里有一个巨大的坑16位有符号整数的范围是[-32768, 32767]而26位数据的范围远大于此例如Sinc3OSR128时范围为[-2097152, 2097152]。直接截取低16位会导致数据完全错误。解决方案是右移必须通过配置SDDPARMx.SH移位控制位来将26位数据右移使其最大值落在16位有符号范围内。移位操作相当于除以2^SH。如何确定SHIFT值手册表17-4是关键。它根据滤波器类型和OSR给出了推荐的移位值。举例Sinc3滤波器OSR128。查表可知OSR范围128-161对应Sinc3的SHIFT7。计算验证Sinc3在OSR128时峰值输出为±2,097,152。右移7位除以128后范围变为±16384完全落在16位有符号范围内。如果配置为SHIFT6除以64范围变为±32768此时正值327680x8000在16位有符号表示中恰好是负数最小值-32768的补码会导致正满量程被误表示为负满量程引发严重错误。核心要点使用16位输出格式时必须严格参照表17-4配置SHIFT位。错误的移位配置是导致数据滤波器输出值异常的最常见原因之一。一个调试技巧可以先配置为32位输出观察正常值的大小然后根据其动态范围手动计算并验证所需的移位位数。5.2 数据FIFO高效中断管理与同步采集每个数据滤波器通道都有一个32位宽、16级深的FIFO。它的存在不是为了缓存数据而是为了降低CPU中断频率实现批处理。为什么要用FIFO假设数据速率为39kSPS如果每个新数据都产生一个中断CPU将每秒被中断39000次开销巨大。通过FIFO我们可以让滤波器积累多个样本例如16个后再产生一次中断CPU在一次中断服务程序中批量读取16个数据将中断频率降低到原来的1/16约2.4kHz大大减轻了CPU负担。FIFO关键配置步骤使能FIFOSDFIFOCTLx.FFEN 1。使能FIFO中断SDFIFOCTLx.FFIEN 1。设置中断水位线SDFIFOCTLx.SDFFIL N(N0~16)。当FIFO中数据个数(SDFFST) N时触发中断。注意N0是一个特殊值表示FIFO非空即中断每有一个数据就中断失去了批处理意义。通常N设置为1到16之间的值例如8。选择数据就绪中断源为FIFO中断SDFIFOCTLx.DRINTSEL 1。“等待同步”功能这是实现与PWM开关事件精确同步采样的关键功能。在电机控制中我们希望在PWM开关事件的特定时刻例如PWM周期中心点进行电流采样以避开开关噪声。使能等待同步SDSYNCx.WTSYNCEN 1。配置同步源通过SDSYNCx.SYNCSEL选择来自哪个PWM模块的SOCA或SOCB事件作为同步信号。工作原理使能后FIFO会忽略所有数据就绪事件直到收到一个SDSYNC脉冲。收到脉冲后WTSYNFLG置1FIFO才开始收集数据。当收集的数据量达到设定的水位线N时触发中断。之后可以通过自动(WTSCLREN1)或手动(WTSYNCLR1)方式清除WTSYNFLGFIFO再次进入等待状态等待下一个同步脉冲。FIFO同步清除还可以设置FFSYNCCLREN1使得在每次收到SDSYNC事件时自动清空FIFO。这确保了每次同步采集周期都是从全新的FIFO开始避免了新旧数据混合。同步功能的应用场景在采用双采样例如PWM周期开始和中间各采样一次的电机控制中可以为两个采样点配置不同的SDSYNC源如SOCA和SOCB并让FIFO等待对应的同步信号从而实现严格时间对齐的采样序列。5.3 初始无效样本问题手册表17-6揭示了一个重要现象Sinc滤波器在使能、重新配置或收到SDSYNC事件后输出的前几个样本是不正确的。Sinc1无错误样本。Sinc2第1个样本错误。Sinc3/SincFast前2个样本错误。这对我们意味着什么数据滤波器在启动或同步后应该丢弃前几个样本例如对于Sinc3丢弃前2个或者等待超过滤波器延迟时间后再开始使用数据。在FIFO使能且与同步功能结合时尤其要注意第一个同步周期采集的数据可能包含无效样本。比较器滤波器更为关键手册用“CAUTION”警告必须在配置比较器滤波器后等待足够长的建立时间才能使能比较器中断IELx和IEHx。这个“足够长的建立时间” 比较器滤波器延迟 5个SD-Cx时钟周期。如果提前使能滤波器初始的错误输出值可能会意外触发过压或欠压保护导致系统误动作。这是一个非常实际的“坑”。在初始化代码中配置完比较器滤波器后必须插入一段延时软件循环或利用定时器然后再使能其中断。6. 比较器滤波器实现快速硬件保护比较器滤波器Comparator Filter是SDFM的“哨兵”它的目标不是高精度而是快速检测输入信号是否越界并立即触发保护动作如PWM关断。6.1 比较器工作模式与配置与数据滤波器不同比较器滤波器输出为16位无符号格式低电平为0高电平为1结果始终为正。它的OSRCOSR范围较小1-32意味着数据速率更高延迟更低专为速度优化。比较器单元结构如图17-9所示比较器滤波器的输出SDCDATAx会同时送到三个数字比较器高阈值比较器当SDCDATAx HLT时触发COMPHx事件。高阈值Z比较器当SDCDATAx HLTZ时触发COMPHZx事件。注意此事件不能直接触发SDFM错误中断但可连接至eCAP模块用于测量阈值穿越的频率或占空比。低阈值比较器当SDCDATAx LLT时触发COMPLx事件。阈值设置技巧阈值寄存器HLT、HLTZ、LLT的值是基于比较器滤波器输出范围的。例如使用SincFastCOSR32从表17-7可知其输出范围为0~2048。如果你希望在实际电流达到50A时触发保护而你的信号调理电路使得50A对应调制器满量程的80%那么你需要计算50A对应的数字码值并据此设置阈值。务必使用无符号数进行比较。6.2 保护逻辑的实现与中断配置比较器事件的典型用途是触发PWM跳变Trip实现纳秒级的硬件保护。配置比较器滤波器选择快速滤波器类型如SincFast设置合适的COSR如16或32在延迟和分辨率间权衡。设置阈值根据保护点计算并设置HLT过流点和LLT欠流点可能用于检测开路。连接至PWM跳变模块通过X-Bar交叉开关将COMPHx或COMPLx事件路由到对应PWM模块的Trip输入源。这一步通常在SysConfig图形化工具中配置更直观。配置中断可选如果需要CPU记录保护事件或进行复杂处理需使能主中断SDCTL.MIE1和对应的比较器中断使能位SDCPARMx.IEH或SDCPARMx.IEL。再次强调使能中断前必须等待“比较器滤波器延迟5个SD-Cx周期”。高阈值Z比较器的特殊用途COMPHZx事件专为连接eCAP而设计。例如设置HLTZ0x4000对应中间值使能HZEN并将COMPHZx通过X-Bar输入到eCAP。这样eCAP可以精确测量信号过零或过某个阈值的频率或占空比常用于无传感器控制中的位置估算。比较器滤波器无法同步请注意比较器滤波器不能像数据滤波器那样使用SDSYNC事件进行同步。它始终以最高速度连续运行以确保保护的实时性。7. 中断系统与实战配置解析SDFM的中断分为两大类错误中断和数据就绪中断。清晰地理解其结构才能高效地处理各种事件。7.1 SDFM错误中断错误中断SDy_ERR是一个聚合中断源任何通道发生以下四种错误之一都会触发它比较器低阈值事件COMPLx。需使能SDCPARMx.IEL1。比较器高阈值事件COMPHx。需使能SDCPARMx.IEH1。调制器时钟失效事件MFx。当SD-Cx时钟信号超过64个SYSCLK周期没有跳变时触发。需使能SDCPARMx.MFIE1。此功能用于检测调制器是否掉线或信号断开是重要的诊断功能。FIFO溢出事件SDFFOVFx。当CPU/CLA读取FIFO的速度跟不上数据产生的速度导致16级FIFO被写满后仍有新数据到来时触发。需使能FIFO(FFEN1)和溢出中断(OVFIEN1)。错误中断处理流程进入SDy_ERR中断服务程序后第一步是读取SDIFLG寄存器检查是哪个标志位被置起以确定错误类型和通道。处理完毕后必须向SDIFLGCLR寄存器的对应位写1来清除标志位。注意清除标志位的前提是中断源已消失例如过流条件已解除否则标志位会再次立即置起。7.2 数据就绪中断数据就绪中断SDy_DRINTx是每个数据滤波器通道独立的中断共4个用于通知CPU/CLA有新数据可读。其触发源有两种选择由SDFIFOCTLx.DRINTSEL控制DRINTSEL0中断源为AFxAcknowledge Flag。即每个新数据产生就触发一次中断。不推荐使用此模式除非OSR极大、数据速率极低。DRINTSEL1中断源为SDFFINTxFIFO中断。即当FIFO中数据量达到预设的水位线SDFFIL时才触发中断。这是推荐模式能有效降低中断频率。数据就绪中断配置流程配置数据滤波器参数类型、OSR等并使能。使能FIFO (FFEN1)。使能FIFO中断 (FFIEN1)。设置FIFO中断水位线 (SDFFIL8)。选择数据就绪中断源为FIFO中断 (DRINTSEL1)。使能该通道的数据滤波器中断 (SDDFPARMx.AE 1)。注意此位在FIFO中断模式下仍需要使能。7.3 实战中的中断服务程序设计要点效率在SDy_DRINTx中断中应使用循环或DMA方式快速读取FIFO中的所有数据从SDDATFIFOx寄存器读取读指针会自动递增。避免在中断内进行复杂的数学运算。同步如果使用了“等待同步”功能在中断中读取数据后可能需要手动清除WTSYNFLG标志以准备接收下一批同步数据。错误处理在SDy_ERR中断中除了处理标志位还应考虑实现恢复逻辑。例如发生FIFO溢出可能意味着主循环任务过载需要检查系统负载发生调制器失效可能需要尝试重新初始化调制器或触发系统故障安全流程。中断优先级SDy_ERR保护相关应设置为高优先级确保能及时响应。SDy_DRINTx数据采集优先级可稍低。注意协调好与PWM、ADC等其他关键外设中断的优先级关系。8. 理论输出计算与系统校准手册第17.7节提供的公式是连接模拟世界与数字世界的桥梁。理解这些公式不仅能验证系统工作是否正常更是进行系统校准将数字码值转换为实际物理量如安培、伏特的基础。8.1 从电压到数字码一步步计算我们以手册示例中的AMC1306x25调制器为例复盘计算过程。假设调制器型号AMC1306x25增益为x25满量程差分电压Vclipping ±320mV。实际输入差分电压V_in AINP - AINN 100mV。SDFM配置数据滤波器为Sinc3DOSR 100比较器滤波器为Sinc3COSR 32。步骤1计算比特流中‘1’的密度公式(13)密度 (输入电压 Vclipping) / (2 * Vclipping)密度 (100mV 320mV) / (2 * 320mV) 420mV / 640mV 0.65625这个值表示在调制器输出的高速比特流中逻辑‘1’所占的比例约为65.625%。步骤2计算比较器滤波器输出16位无符号公式(14)比较器输出 密度 * 最大滤波器输出(滤波器类型, COSR)查表17-7Sinc3在COSR32时的最大输出值为32768。比较器输出 0.65625 * 32768 21504这个值会出现在SDCDATAx寄存器中。步骤3计算数据滤波器输出32位有符号公式(15)和(16)合并理解首先计算一个中间值FilterOutput。FilterOutput (|输入电压| / Vclipping) * 最大滤波器输出(滤波器类型, DOSR) (100mV / 320mV) * 最大输出查表17-3Sinc3在DOSR100时的最大输出值需要估算。DOSR128时是2097152DOSR64时是262144。对于DOSR100可以通过插值或根据公式最大值 (OSR)^3来估算100^3 1,000,000。更准确的方法是使用公式对于Sinc3峰值输出 (OSR)^3。所以最大值 100^3 1,000,000。FilterOutput (100/320) * 1,000,000 0.3125 * 1,000,000 312,500由于输入电压是正的100mV所以32位数据滤波器输出就是这个正值312,500。 如果输入电压是-100mV则32位输出应为312,500的二进制补码即 -312,500 的补码表示。步骤4计算数据滤波器输出16位有符号公式(17)16位输出 32位输出 SHIFT查表17-4对于Sinc3DOSR100落在102-127区间对应的SHIFT6。16位输出 312,500 6 312,500 / 64 ≈ 4882但手册示例给出的结果是9765右移了5位。这里存在差异可能是因为手册示例中的DOSR100是近似描述实际计算时采用了表17-4中128-161区间对应的SHIFT7或者是最大值计算方式不同这正说明了查表17-4的重要性。在实际工程中我们不应自己计算移位值而应严格根据滤波器类型和OSR直接查表17-4获取SHIFT值。假设对于此配置查表得SHIFT5则312,500 / 32 9765.625取整为9765与手册一致。8.2 工程校准实践在实际项目中我们更常做的是“校准”已知一个精确的输入物理量如50A电流读取对应的SDFM输出码值从而建立码值与物理量之间的比例关系。前端标定在信号进入调制器之前使用精密电源施加几个已知的差分电压如-200mV, 0mV, 200mV覆盖整个预期输入范围。数据采集对于每个输入电压让系统稳定运行然后通过调试器或串口读取大量SDFM的输出数据32位格式计算其平均值。建立线性关系以输入电压为X轴SDFM输出码值为Y轴进行线性拟合。得到斜率K码值/伏特和零点偏移Offset。换算到物理量结合你前端传感器如电流采样电阻、运放增益的变换关系将电压斜率K转换为最终的物理量斜率如码值/安培。电流(A) (SDFM_Code - Offset) / K验证施加另一个已知的测试点用上述公式反算验证计算出的物理量是否与真实值吻合。注意事项校准应在系统实际工作的温度下进行以减小温漂影响。使用32位数据进行校准计算以获得最高精度。最终在控制算法中可以根据需要转换为16位或浮点数。对于比较器保护的阈值也需要根据校准后的比例将物理保护点如75A换算成对应的数字阈值HLT。