使用STM32 FOC 5.2的电机库,硬件做电流采样时使用的是反向放大,但是电机库中使用的是同向放大,ST的配置上位机中的电流采样参考如下图:

可是我们的电流采样电路如下:

所以要修改ST的FOC电机库源码,路径是:../MCSDK_v5.2.0-Full/MotorControl/MCSDK/MCLib/F1xx/Src/r3_hd2_pwm_curr_fdbk.c 对应函数改动如下:

void R3HD2_GetPhaseCurrents( PWMC_Handle_t * pHdl, Curr_Components* pStator_Currents )
{uint8_t bSector;int32_t wAux;PWMC_R3_HD2_Handle_t * pHandle = (PWMC_R3_HD2_Handle_t *) pHdl;/* Deactivate TIMx CH4 to disable next triggers using bit-banding access */*(uint32_t*) (pHandle->wTIMxCH4_BB_Addr) = 0u;/* Reset the SOFOC flag to indicate the start of FOC algorithm*/pHandle->bSoFOC = 0u;bSector = (uint8_t) pHdl->hSector;switch ( bSector ){case SECTOR_4:case SECTOR_5:/* Current on Phase C is not accessible     *//* Ia = PhaseAOffset - ADC converted value) */wAux = (int32_t)( ADC1->JDR1 );wAux *= 2;wAux = wAux - (int32_t)( pHandle->wPhaseAOffset ) ;/* Saturation of Ia */if ( wAux < -INT16_MAX ){pStator_Currents->qI_Component1 = -INT16_MAX;}else if ( wAux > INT16_MAX ){pStator_Currents->qI_Component1 = INT16_MAX;}else{pStator_Currents->qI_Component1 = (int16_t) wAux;}/* Ib = PhaseBOffset - ADC converted value) */wAux = (int32_t)( pHandle->pParams_str->ADCx2->JDR1 );wAux *= 2;wAux = wAux - (int32_t)( pHandle->wPhaseBOffset ) ;/* Saturation of Ib */if ( wAux < -INT16_MAX ){pStator_Currents->qI_Component2 = -INT16_MAX;}else if ( wAux > INT16_MAX ){pStator_Currents->qI_Component2 = INT16_MAX;}else{pStator_Currents->qI_Component2 = (int16_t) wAux;}break;case SECTOR_6:case SECTOR_1:/* Current on Phase A is not accessible     *//* Ib = PhaseBOffset - ADC converted value) */wAux = (int32_t)( ADC1->JDR1 );wAux *= 2;wAux =  wAux - (int32_t)( pHandle->wPhaseBOffset ) ; //Ib/* Saturation of Ib */if ( wAux < -INT16_MAX ){pStator_Currents->qI_Component2 = -INT16_MAX;}else if ( wAux > INT16_MAX ){pStator_Currents->qI_Component2 = INT16_MAX;}else{pStator_Currents->qI_Component2 = (int16_t) wAux;}/* Ia = -Ic -Ib */wAux = (int32_t)( pHandle->pParams_str->ADCx2->JDR1 );wAux *= 2;wAux = (int32_t) pHandle->wPhaseCOffset - wAux;  //IcwAux -= (int32_t) pStator_Currents->qI_Component2; //-Ic-Ib wAux = -wAux-pStator_Currents->qI_Component2/* Saturation of Ia */if ( wAux > INT16_MAX ){pStator_Currents->qI_Component1 = INT16_MAX;}else if ( wAux < -INT16_MAX ){pStator_Currents->qI_Component1 = -INT16_MAX;}else{pStator_Currents->qI_Component1 = (int16_t) wAux;}break;case SECTOR_2:case SECTOR_3:/* Current on Phase B is not accessible     *//* Ia = PhaseAOffset - ADC converted value) */wAux = (int32_t)( ADC1->JDR1 );wAux *= 2;wAux =  wAux - (int32_t)( pHandle->wPhaseAOffset ) ;/* Saturation of Ia */if ( wAux < -INT16_MAX ){pStator_Currents->qI_Component1 = -INT16_MAX;}else if ( wAux > INT16_MAX ){pStator_Currents->qI_Component1 = INT16_MAX;}else{pStator_Currents->qI_Component1 = (int16_t) wAux;}/* Ib = -Ic -Ia */wAux = (int32_t)( pHandle->pParams_str->ADCx2->JDR1 );wAux *= 2;wAux = (int32_t) pHandle->wPhaseCOffset - wAux;wAux -= (int32_t) pStator_Currents->qI_Component1;/* Saturation of Ib */if ( wAux > INT16_MAX ){pStator_Currents->qI_Component2 = INT16_MAX;}else if ( wAux < -INT16_MAX ){pStator_Currents->qI_Component2 = -INT16_MAX;}else{pStator_Currents->qI_Component2 = (int16_t) wAux;}                     break;default:break;}pHandle->_Super.hIa = pStator_Currents->qI_Component1;pHandle->_Super.hIb = pStator_Currents->qI_Component2;pHandle->_Super.hIc = -pStator_Currents->qI_Component1 - pStator_Currents->qI_Component2;
}

STM32 FOC5.2电机库中中的电流采样改为反向放大相关推荐

  1. ST电机库v5.4.4源代码分析(1): FOC原理(结合ST电机库)

    编者:沉尸 (5912129@qq.com) 本文字描述电机FOC的原理性内容,大部分取材于网络,但是我对于某些细节进行了比较详细的描述.因为很多最初的出处链接没有记录下来,所以没有标明,忘谅解!本文 ...

  2. 5加载stm32 keil_STM32在SRAM、FLASH中调试代码的配置方法(附详细步骤)

    因为STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试.除此之外,SRAM 存储器的写入速度比在内部 FLASH 中要 ...

  3. STM32为何能在众多单片机中脱颖而出?

    现在STM32资料教程如此丰富,但还是很多人学不会- 假如STM32像10年前的NXP单片机资料一样少,估计学不会的人会更多. 大家好,我是无际,一个踩坑单片机开发10年的老油条. 这些年,我用过很多 ...

  4. 聊聊电商系统中常见的9大坑,库存超卖、重复下单、物流单ABA...

    做为一名程序员,发展方向大致可以分为两个方面:一个是业务架构,一个是技术架构(中间件方向). 业务架构,取其核心关键词,主要是围绕这不同的业务场景.业务规则,完成业务系统的落地建设,为用户提供在线化的 ...

  5. 转)SSO单点登录在互联网电商应用中的解决方案(基于CAS的改造)

    电商平台中无论是前端还是后端会存在大量的业务应用,在整个交易的过程中请求是在各个业务应用中流转的,对于用户来讲只需要登录一次就可以访问所有的业务,这就是单点登录SSO. 单点登录开源有很多的解决方案, ...

  6. PHP电商的sku,tech| 关于电商系统中sku与spu的一个难题

    date: 2018-8-1 21:17:14 title: tech| tech| 关于电商系统中sku与spu的一个难题 description: 业务上碰到的关于电商系统中sku与spu的一个难 ...

  7. 小工匠聊架构-布隆过滤器在亿级流量的电商系统中的应用

    文章目录 Pre 无效请求超高并发,会导致崩溃 预防缓存穿透"神器":布隆过滤器 布隆过滤器在电商商品中的实践 如何减少布隆过滤器的误判? 布隆过滤器在 Java 中的应用 布隆过 ...

  8. 电子商务(电销)平台中用户模块(User)数据库设计明细

    原文:电子商务(电销)平台中用户模块(User)数据库设计明细 以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 用户基础表(user_ba ...

  9. 用户在电商网站中购买成功了,那么 TA 在微服务中经历了什么?

    题目:用户在电商网站中购买成功了,那么它在微服务中经历了什么? 当我傻啊,用户在电商网站购买成功,还在微服务中,那肯定就是有一套微服务架构的电商系统. 设计一套电商系统还不简单 简单想象一下,既然是一 ...

  10. 在电商运营中与客户建立信任的4种方法

    在电商运营中与客户建立信任的4种方法 在众多人的财务和消费行为数据被泄露或非法收集之后,网络购物所带来的风险已成为消费者最为关注的问题之一. 建立客户的信任绝对不是一件容易的事情,尤其是对于电商企业来 ...

最新文章

  1. linux高效办公环境配置(vim、tmux、bash_profile)
  2. flask 控制台输出到文件
  3. 数据仓库中的维度表和事实表概述
  4. MySqlClient访问tinyint字段返回布尔值
  5. python源代码最多的学习网站_史上最全Python学习资料大合集分享
  6. lol什么服务器出无限活力,《LOL》无限火力模式什么时候出 无限火力模式上线时间一览...
  7. boost安装_编译安装Mysql详细步骤
  8. jzoj3347,bzoj3257-[NOI2013模拟]树的难题【树形dp】
  9. Servlet使用适配器模式进行增删改查案例(BaseDaoUtilImpl.java)
  10. 复述-软考高级-网规-数据灾备
  11. 三级网络-不单单是学知识
  12. sdram 时钟相位_SDRAM小结 — Windows Live
  13. pip 清华大学镜像_pip源很慢,更改成清华的镜像地址
  14. java毕业设计选题之《校园管理、教育教学类》
  15. BZOJ1064[NOI2008] 假面舞会
  16. VB调用周立功CAN接口卡接口库函数
  17. win10pe命令打开计算机,win10系统制作PE启动盘的操作方法
  18. 反向传播(Backpropagation)算法详解
  19. html form提交heard,德普前妻Amber Heard戛纳合辑
  20. 仿网易云音乐小程序-uniapp

热门文章

  1. 联想笔记本电脑安装完Ubuntu16.04出现搜索不到wifi的问题
  2. java素数(质数)计算
  3. Xftp连接Linux 虚拟机
  4. u盘安装centos8故障failed to load ldlinux.c32
  5. 【软件工程】对于Why Software Development Methodologies Suck(为什么软件开发方法论让你觉得糟糕)问题的探讨
  6. 删除计算机网络无用设备,如何删除我的电脑/计算机中无效的设备和驱动器图标...
  7. 《Java就业培训教程》_张孝祥_书内源码_03
  8. 单片机交通灯灯c语言程序,51单片机控制交通灯原理图及C语言程序
  9. windows server 2003 下载
  10. 手输Unicode字符的方法