当前位置: 首页 > news >正文

使用DFSDM模拟看门狗做过流保护以及封波应用 LAT1612

关键字:DFSDM,模拟看门狗,过电流保护,周期封波

1. 前言

在伺服应用中,客户使用DFSDM需要搭配TIM1输出做过电流保护同时做周期封波,如果 只用DFSDM模块,我们只能使用模拟看门狗的break信号做其中一种,要么用于过电流保护 (OC:Over Current),要么只做周期封波(CBC:Cycle-by-Cycle),而同时完成则需要加入 其他外设。本文将就针对这个应用做介绍,硬件测试板为Nucleo-H723ZG。

2. DFSDM看门狗输出Break信号

伺服应用中TIM1产生3对互补输出(6路)PWM用于驱动电机,而电流采样则使用 Sigma Delta采样,会使用到STM32H723内部的DFSDM进行数字滤波,滤波输出作为 正常电流信号用于电机控制,同时输入电流信号到模拟看门狗,做电流保护功能。

STM32H723的模拟看门狗可以监测电流信号,当超过阈值后,会有Break信号输出, 这个信号内部连接到TIM1的Break模块,可以立刻关闭PWM输出,也可以结合TIM1 输出自恢复功能(AOE =1)去做CBC功能,见如下结构:

图1. 电流输入基本路径

图2. DFSDM break关联TIM的break

当我们需要同时做OC以及CBC功能时候,这时候单独的模式就不能实现了,需要结合 其他外设去硬件实现。

3. 实现方式思考

我们知道ETR的clear功能可以实现CBC,这样我们需要引进另外一个TIM16,它的 输出连接到TIM1的ETR管脚上。同时使用到两个AWD模块,一个输出OC的break信 号,一个输出CBC的break信号。

图3. 同时实现OC和CBC框图

  • DFSDM的Break[0]作为OC(大电流)封波信号,内部输入到TIM1的BKIN1
  • DFSDM的Break[1]作为CBC信号,内部输入到TIM16的BKIN
  • TIM16通道1外接TIM1的ETR管脚,作为ETR信号(TIM1 CBC控制), TIM16 工作在自动输出模式BDTR->AOE=1
  • 正常情况下CH1输出高电平,当DFSDM的Break[1]信号产生后, TIM16_CH1 输出低电平,TIM1输出低
  • 当DFSDM的Break[1]信号消失后, TIM16_CH1继续输出高电平,TIM1继续 PWM输出 

4. 功能的CubeMx配置

4.1. DFSDM模块的配置

为了简化测试,我们这边用一个Filter对三个电流通道进行滤波,当然也可以使用三个 Filter分别对三个电流信号滤波,对于看门狗的模块则必须三个通道同时输入到同一个看门 狗比较模块中,在CubeMx中无此配置,我们需要使用程序单独配置。

图4. DFSDM通达以及模拟看门狗参数配置

图5. 正常电流滤波器配置

 图6. 注入组DMA通道配置

图7. 使能Filter1

4.2. TIM1的配置

作为产生PWM输出的TIM1,需要配置三对互补输出,这边不做详细的配置说明,本 例中死区未配置,需要根据实际情况进行配置。这边必须用到两个功能,一个是DFSDM的 OC Break功能,一个是ETR的Clear功能,用来做CBC。

图8. TIM1的DFSDM Break功能使能

图9. ETR Clear功能配置

4.3. TIM16的配置

对于TIM16,我们需要配置DFSDM的Break功能,并且TIM16 CH1要输出100%占 空比波形,要连接TIM1的ETR,要使能AOE功能,用于CBC功能。

图10. TIM16配置

5. DFSDM模拟看门狗配置

模拟看门狗没有CubeMx的相关配置,需要在程序中进行配置,这边我们需要使用快速 模式AWFSEL = 1,外部数据需要是串行输入,独立的看门狗滤波参数,独立运行于电流信 号采集,主要配置通道使用(FLTCR2-> AWDCH[7:0]),看门狗上下阈值的配置 (FLTAWHTR,FLTAWLTR),Break功能的输出(FLTAWHTR-> BKAWH [3 :0], FLTAWLTR ->BKAWL[3 :0]),做为OC功能的AWD0的配置如下:

/* * Filter 0 AWD used for CH0,CH1,CH2, work in fast mode * AWHTR/AWLTR should set to OC threshold * DFSDM BK[0] used for TIM1 break input 
*/ 
void DFSDM_AWD_Init(void) 
{ /* AWFSEL = 1, select AWD self filter for fast response */ DFSDM1_Filter0->FLTCR1 |= (1<<30); /* AWD used channel config, here config CH0,CH1,CH2 use same FILTER AWD*/ DFSDM1_Filter0->FLTCR2 |= (0x07<<16); /* Set threshold of AWD high and low  * Threshold is signed value, range [-32768,32767] */ DFSDM1_Filter0->FLTAWHTR = (20000<<16); DFSDM1_Filter0->FLTAWLTR = -(20000<<16); /* Clear Flags */ DFSDM1_Filter0->FLTAWCFR = 0xFFFF; //---Just example how to reconfig AWD filter parameter, also can config through 
Cubemx   /* Disable channel */ DFSDM1_Channel0->CHCFGR1 &= ~(1<<7); /* Set AWD filter parameter, config AWFORD(0~3) and AWFOSR(0~31) */ DFSDM1_Channel0->CHAWSCDR = (0x02<<22) + (0x02<<16); DFSDM1_Channel0->CHCFGR1 |= (1<<7); 
//-------------------------------------------------------------//  /* Config break output to TIM1 */ DFSDM1_Filter0->FLTAWHTR |= 0x01; DFSDM1_Filter0->FLTAWLTR |= 0x01; 
}

做为CBC功能的AWD1,配置的阈值上下限需要小于OC功能的AWD0,配置如下:

/* * Filter 1 AWD used for CH0,CH1,CH2, work in fast mode * AWHTR/AWLTR should set to CBC threshold * DFSDM BK[1] used for TIM16 break input * AWD work under continous mode, independent from inject convert, not need 
trigger 
*/ 
void DFSDM_AWDCBC_Init(void) 
{ /* AWFSEL = 1, select AWD self filter for fast response */ DFSDM1_Filter1->FLTCR1 |= (1<<30); /* AWD used channel config, here config CH0,CH1,CH2 use same FILTER AWD*/ DFSDM1_Filter1->FLTCR2 |= (0x07<<16); /* Set threshold of AWD high and low  * Threshold is signed value, range [-32768,32767] */ DFSDM1_Filter1->FLTAWHTR = (10000<<16); DFSDM1_Filter1->FLTAWLTR = -(10000<<16); /* Clear Flags */ DFSDM1_Filter1->FLTAWCFR = 0xFFFF; /* Config break output to TIM16 */ DFSDM1_Filter1->FLTAWHTR |= 0x02; DFSDM1_Filter1->FLTAWLTR |= 0x02; 
}

 6. 正常电流信号的DMA配置

使用CubeMx默认生成STM32H723的RAM没有包含D1域中的RAM,如果定义数组可 能会定义到DTCM区域,这个区域无法被DMA1访问,因此我们要定义数组的存储地址,如果 使能Cache,还需要在MPU中配置存储属性,这边我们定义存储正常电流信号的DMA数组在 SRAM1中(0x30000000),这样在link file中要定义好,数组也要做特别定义。

比如link file中定义SRAM1区域

SRAM1 0x30000000 0x00004000  { .ANY (+RW +ZI) .ANY (.sram1) } 

定义数组到SRAM1中

/* Define Array to get inject DFSDM value */ 
int32_t FLT1_JData[3] __attribute__((section (".sram1"))); 

启动DFSDM,并且配置DMA源,目标地址,以及DMA传输长度

/* Start filter 0 using inject DMA mode */  HAL_DFSDM_FilterInjectedStart_DMA(&hdfsdm1_filter0,FLT1_JData,3);

7. 测试功能

我们外部连接TIM16 CH1(PF6)到TIM1的ETR管脚(PE7),使用SPI模拟Sigma Delta 输入,同时可以实时改变AWD的阈值,用于模拟OC功能或者CBC功能波形,在 DFSDM_FLTxAWS寄存器可以读取是哪路信号产生的结果。可以看到下面的功能波形。

图11. CBC波形

图12. OC波形

意法半导体公司及其子公司 (“ST”)保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产品 的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息,我 们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利

http://www.dtcms.com/a/593746.html

相关文章:

  • 远程传输大文件的软件有哪些?
  • 北京建设官方网站渠道网络大厦
  • 鸿蒙 Next 如何使用 AVRecorder 从0到1实现视频录制功能(ArkTS)
  • 动态背景网站北京网站设计制作费用
  • LSTM模型做分类任务2(PyTorch实现)
  • 企业网站模板 简洁wordpress 水印
  • PostgreSQL模式:数据库中的命名空间艺术
  • 数据库的4个基本概念
  • 做a网站wordpress 导入xml
  • zzcms网站开发wordpress 文章密码保护
  • 51-55 函数
  • 社交网站图片展示上门做网站公司哪家好
  • 请求头中传递错误信息
  • 安装使用IDEA完整过程(含maven,tomcat配置)
  • Vue3中的常用指令
  • C语言算法:排序算法进阶
  • Unity2D光照 - Spot Light 2D和Shadow Caster 2D的实践
  • LED蜡烛灯/火焰灯MCU控制方案开发设计
  • 技术融合新纪元:小鹏机器人+轻语AI+亚马逊倒模,能否打造革命性伴侣机器人
  • 中国各大网站网站域名好了下一步
  • 网站建设板块建议北京兼职网站建设
  • 两个浮点数如何判断相等
  • 盐城哪里做网站如何在网上推广app
  • 直播预告|AI + MCP 双驱,重塑操作系统交互逻辑,一键开启智能办公新范式
  • 佛山市 骏域网站建设除了凡科建站还有什么网站吗
  • 深入解析 Reactor 模式:从基类设计到模块协同的高性能服务器实现
  • 南阳网站建设seo安阳后营贴吧
  • 网站开发主流技术国产服务器系统免费的有哪些
  • 提升机器学习效率的秘密武器:GGML Tensor库
  • 管家婆软件登录提示:您连接的服务器版本不对,请重新升级安装服务器应用程序