TMS320F28388D 学习笔记3 ADC后处理块(Post-Processing Blocks)

每个ADC模块包含4个后处理块(PPB)。这些块可以使用ADCPPBxCONFIG寄存器与16个结果寄存器中的任何一个相关联。每个PPB可以同时消除与ADCIN通道相关的偏移量,减去参考值,标记过零点,以及标记上越限或下越限。此外,过零和越限标记可以触发PWM和/或产生中断。PPB还能够记录SOC与实际开始采样之间的延迟。图20-9显示了每个PPB的结构。后续章节将解释每个子模块的使用。
在这里插入图片描述

偏移校正

在许多应用中,外部传感器和信号源会产生偏移。ADC偏移的全局微调不足以补偿这些偏移,因为这些偏移因通道而异。PPB可以以零开销消除这些偏移,从而在紧凑的控制循环中节省大量周期。
为了使用此功能,将ADCPPBxCONFIG.CONFIG配置至所需SOC,然后将偏移校正值写入ADCPPBxOFFCAL.OFFCAL寄存器。PPB将自动从原始转换结果中添加或减去OFFCAL寄存器中的值,并将其存储在ADCRESULT寄存器中。对于12位或16位模式,此加法/减法的结果将分别在0和4095或65535饱和。

  • 将0写入OFFCAL寄存器将有效禁用偏移校正功能,并将原始结果不变地传递给ADCRESULT寄存器。
  • 可以将多个PPB指向同一SOC。在这种情况下,实际应用的OFFCAL值将是具有最大编号的那一个PPB。
  • 在SOC0上使用PPB时需要小心,因为默认情况下,所有PPB都指向该SOC。这可能会导致编号较低的PPB的偏移校正被编号较高的PPB意外覆盖。

误差计算

在许多应用中,必须计算ADC采样结果与设定点或参考值的误差。另一些时候,双极信号对于控制算法的计算是必要的或方便的。PPB可以自动执行这些功能,减少采样到输出的延迟,并减少软件开销。
为了使用此功能,将ADCPPBxCONFIG.CONFIG配置至所需SOC,然后将值写入ADCPPBxOFFCAL.OFFREF寄存器。PPB将自动从ADCRESULT值中减去OFFREF寄存器中的值,并将其存储在ADCPPBxRESULT寄存器中。此减法将产生带符号的32位结果。通过在ADCPPBxCONFIG寄存器中设置TWOSCOMPEN位,也可以在存储到ADCPPBxRESULT寄存器之前选择性地为计算值取反。

  • 在12位模式下,不要将大于12位的值写入OFFREF寄存器。
  • 由于每个PPB的PPBxRESULT寄存器是唯一的,因此可以将多个PPB指向同一SOC,并为每个PPB获得不同的结果。
  • 将0写入OFFREF寄存器可禁用误差计算功能,将ADCRESULT值不变地传递给ADCPPBxRESULT寄存器。

越限检测和过零检测

许多应用对ADC转换结果执行越限检查。根据上限和下限或ADCPPBxRESULT改变符号,PPB可以自动执行检查。基于这些比较,它可以自动生成PWM trip和/或中断,从而降低采样到ePWM的延迟并减少软件开销。此功能还允许应用程序基于超出范围的ADC转换触发ePWM,而无需任何CPU干预。
要启用此功能,请首先配置ADCPPBxCONFIG.CONFIG至所需SOC,然后将值写入其中一个或两个寄存器ADCPPBxTRIPHI.LIMITHI 和ADCPPBxTRIPLO.LIMITLO(过零检测不需要进一步配置)。每当越限时,ADCEVTSTAT寄存器中将设置PPBxTRIPHI位或PPBxTRIPLO位。请注意,ADCEVTSTAT寄存器中的PPBxZERO位由EOC选通,而不是由ADCPPBxRESULT寄存器中的符号更改选通。ADCEVTCLR寄存器具有相应的位来清除这些事件标志。ADCEVTSEL寄存器具有相应的位,允许事件传播到PWM。ADCINTSEL寄存器具有相应的位,允许事件传播到PIE。
一个PIE中断在给定ADC模块的所有PPB之间共享,如图20-10所示。

  • 如果需要对来自同一ADC模块的不同PPB事件采取不同的措施,则ADCEVTINT ISR必须读取ADCEVTSTAT寄存器中的PPB事件标志,以确定导致中断的事件。
  • 如果需要为高比较、低比较和/或过零分别生成不同的ePWM trips,可通过将多个PPB指向同一SOC来实现。
  • 过零检测电路认为结果0为正。

在这里插入图片描述

采样延迟捕获

当多个控制回路在同一ADC上异步运行时,来自两个或多个回路的ADC请求有可能发生冲突,从而导致其中一个采样延迟。这在系统中显示为测量误差。通过了解延迟发生的时间和延迟量,软件可以采用外推技术来减少误差。
为此,每个PPB在ADCPPBxSTAMP寄存器中都有DLYSTAMP字段。该字段将记录触发SOC至开始转换之间的SYSCLK数。这是通过基于SYSCLK的全局12位自由运行计数器实现的,其位于ADCCOUNTER寄存器的FREECOUNT字段中。当相关SOC的触发到达时,该计数器的值加载到ADCPPBxTRIPLO.REQSTAMP。当SOC的实际采样窗口开始时,REQSTAMP中的值将从当前FREECOUNT值中减去,并存储在DLYSTAMP中。

  • 如果SOC触发和SOC采样的实际开始之间经过4096个SYSCLK周期以上,则FREECOUNT寄存器可能会溢出不止一次,从而导致DLYSTAMP值不正确。使用非常慢的转换时要小心,以防止发生这种情况。
  • 如果通过软件触发相关SOC,则采样延迟捕获将不起作用。但是,如果不同SOC的软件触发导致与PPB相关的SOC延迟,则会正确记录。
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TMS320F28003Xc是德州仪器(Texas Instruments)公司推出的一款高性能数字信号处理器(DSP)。它采用了C28x内核,主要用于工业控制、电机驱动、太阳能逆变器等领域。 以下是一些TMS320F28003Xc学习笔记的主要内容: 1. 架构和功能: - TMS320F28003Xc采用了32位的C28x内核,提供高性能的浮点运算能力和高精度的定时器。 - 它具有丰富的外设,包括模数转换器(ADC)、PWM输出、通用输入输出引脚(GPIO)等,可满足不同应用需求。 - 内置的专用硬件加速器可以提高运算效率,减少处理时间。 2. 开发环境: - TMS320F28003Xc可以使用Code Composer Studio(CCS)进行开发和调试。CCS是德州仪器的集成开发环境(IDE),提供了丰富的调试工具和代码生成器。 - CCS支持C语言和汇编语言的开发,可以方便地编写、调试和测试代码。 3. 程序设计: - 在TMS320F28003Xc上进行程序设计时,可以利用CCS提供的库函数和例程快速开发应用。 - 使用C语言编写程序时,可以利用C28x内核的浮点运算支持和优化指令集,提高程序的运行效率。 - 汇编语言编程需要更加深入地了解芯片的内部结构和寄存器,可以实现更高级的优化和控制。 4. 资源和学习材料: - 德州仪器官方网站提供了TMS320F28003Xc的技术手册、应用指南和代码示例等资源,可以帮助你更好地理解和使用这款DSP。 - 在线论坛和社区也是学习和交流的好地方,你可以通过与其他开发者的讨论和分享经验,提高自己的技能。 希望这些学习笔记对你有所帮助!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值