0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于恩智浦MPC5744P的电机FOC控制中电流的采样

CHANBAEK 来源:嵌入式程序猿 作者:小猿 2023-04-20 14:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

摘要

本篇笔记主要记录基于恩智浦MPC5744P的电机FOC控制中电流的采样。

准备工作

  1. 安装S32DS for PA, 因为我们在S32DS下开发MPC5744P。
  2. 安装S32DS 的SDK, 我们使用最新版3.0.3

ADC

恩智浦的MPC5744P,含有的ADC子模块有四个,我们使用ADC0的通道0,和ADC1的通道0来做电流的同步采样,通过PWM触发CTU,CTU事件触发ADC电流采样,在CTU的中断中去获取电流的ADC值,经过滤波后就可以做电流算法的闭环控制,这个芯片的ADC 有两种模式。

图片

图片

我们使用电机控制模式,使用内部集成的CTU去触发ADC转换。也可以采用etimer去触发ADC,这次我们采用CTU触发,配置ADC,CTU时钟为80M.

图片

CTU

CTU的利用可以减少CPU的负担,具体的描述可以参考手册下面的描述

图片

CTU框图

图片

图片

因为做电机控制,电流的同步采样非常关键,根据这个框图可以看到,PWM的重装载可以作为触发CTU,CTU产生ADC命令请求去ADC转换。CTU操作的模式有触发模式和顺序模式。我们采用触发模式。

这里需要注意的是CTU的FIFO是不同的,0和1用来做快速采样,而2和3用来配置作为低速采样。

图片

配置和开发

在S32DS开发环境中配置CTU和ADC,

图片

图片

ADC配置

图片

更多参数的配置请参考收据手册,这个需要认真阅读手册配置,可以参考例程。配置完成后,生成驱动,如果没有错的话,我们这里需要完成CTU的中断去获取ADC值。

驱动添加

需要初始化ADC和CTU,添加相应的代码,使用生成的配置结构体

图片

然后还需要完成CTU的中断,

图片

转换结果的获取有两种API, 可以根据自己需要选择,第一种API

/ FUNCTION *********************************************************************

  • Function Name : CTU_DRV_GetConvData
  • Description : This function returns the conversion data result aligned according
  • to the alignment parameter.
  • Implements : CTU_DRV_GetConvData_Activity
  • END**************************************************************************/

uint16_t CTU_DRV_GetConvData (const uint32_t instance, const uint32_t fifoIdx, ctu_data_align_t alignment)

第二种API

/ FUNCTION *********************************************************************

  • Function Name : CTU_DRV_GetConvResult
  • Description : This function gets the full conversion result information, with
  • the conversion data aligned according to the alignment parameter.
  • Implements : CTU_DRV_GetConvResult_Activity
  • END**************************************************************************/

void CTU_DRV_GetConvResult (const uint32_t instance, const uint32_t fifoIdx, const ctu_data_align_t alignment, ctu_conv_result_t * const result)

两种都可以正确获取到ADC值,获取到原始值以后还需要做一些滤波来处理,这些流给大家去实现,因为你的应用不一样,可能采取的滤波算法也不一样。有时候还需要采用多种滤波算法实现对不同干扰的抗扰能力。

测试

添加完代码,没有问题后就可以编译下载到板子上调试观察,可以看到,正确实现了电流的多路采样,可以采集多组值,测量下这里就给大家简单观察下打断点采集到的结果。

图片

同时CTU还有其他一些触发源,大家也可以实验一下,也可以软件触发。但在电机控制中,为了达到同步和快速的电流采样,都是用触发同步采样,提供给算法实施闭环控制。有兴趣的可以多研究研究。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 恩智浦
    +关注

    关注

    14

    文章

    6122

    浏览量

    153798
  • adc
    adc
    +关注

    关注

    100

    文章

    7946

    浏览量

    556871
  • 电机
    +关注

    关注

    145

    文章

    9703

    浏览量

    154786
  • FOC
    FOC
    +关注

    关注

    21

    文章

    402

    浏览量

    46442
  • MPC5744P
    +关注

    关注

    1

    文章

    9

    浏览量

    8461
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    设计了一个关于mpc5744p板子,电路设计基本上都是按照mpc5744p电路,请问为什么烧写程序烧不进去?

    我有个问题,我设计了一个关于mpc5744p板子,电路设计基本上都是按照mpc5744p电路,为什么烧写程序烧不进去??
    发表于 06-29 11:45

    MPC5744P的Overlay RAM相关资料分享

    内容提要引言1. MPC5744P的Overlay RAM工作原理介绍2 MPC5744P的Flash Overlay配置详解2.1 平台Flash标定区域描述字寄存器配置字
    发表于 11-04 07:53

    如何学习MPC5744P CAN总线?

    如何学习MPC5744P CAN总线?
    发表于 02-07 08:58

    如何对MPC5744P进行编程?

    目前我正在学习如何对 MPC5744P 进行编程,但在尝试创建简单的 UART 应用程序时目前无法解决此问题。当我将 UART + CAN 示例用于 MPC5744P 时,UART 和 CAN 在环
    发表于 03-16 08:36

    MPC5744P标志如何保留在RAM

    我正在为 MPC5744P 编写引导加载程序。当在 APP 检测到下载请求时,看门狗复位用于从 APP 跳转到引导加载程序。我想将此请求标志保存在 RAM 。当项目重置时,标志如何保留在 RAM
    发表于 03-27 09:10

    如何为MPC5744P配置内存保护单元?

    我想知道更多关于如何为 MPC5744P 配置内存保护单元,我需要知道如何使用这个配置器。
    发表于 04-04 09:03

    如何读取或访问MPC5744P控制的通用寄存器R1?

    大家好,如何读取或访问MPC5744P控制的通用寄存器R1?谢谢
    发表于 04-06 07:26

    求助,索取有关在带有MPC5744P MCU的RD33771 EVB启用锁步功能的文档

    关在 MPC5744P MCU 上启用锁步功能的详细文档,我将不胜感激。具体来说,我正在寻找有关在 S32 Design Studio IDE 为此特定微控制器启用锁步模式所需的配置步骤和选项的信息。 我在
    发表于 05-24 08:27

    MPC5744P_DataSheet

    最近(2015年1月)飞思卡尔MPC5744p芯片资料,需要的速来。
    发表于 02-24 16:30 37次下载

    NXP MPC5744P 32位200MHzMCU开发方案

    本文介绍了MPC5744P主要特性,框图,以及三相PSMS马达开发板MTRCKTSPS5744P主要特性,框图和电路图。
    的头像 发表于 06-17 18:54 2.7w次阅读
    NXP <b class='flag-5'>MPC5744P</b> 32位200MHzMCU开发方案

    基于MPC5744P的CAN驱动开发和测试

    S32DS下开发MPC5744P。 安装S32DS 的SDK,  我们使用最新版3.0.3 CAN MPC5744P控制器局域网络C
    的头像 发表于 09-03 11:35 5209次阅读
    基于<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>MPC5744P</b>的CAN驱动开发和测试

    基于MPC5744P的SAE J1939协议栈开发

    和标准,特别是J1939-21和J1939-81。 CAN MPC5744P控制器局域网络CAN,跟我们之前使用的
    的头像 发表于 09-24 16:15 9219次阅读
    基于<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>MPC5744P</b>的SAE J1939协议栈开发

    MPC5744P控制器芯片手册

    MPC5744P控制器芯片手册免费下载。
    发表于 03-04 16:06 23次下载

    MPC5744p的CAN通信波特率计算

    本篇笔记主要记录MPC5744p的CAN通信波特率计算,以及需要注意的问题。
    的头像 发表于 07-10 17:40 3685次阅读

    MPC5744p的CAN通信波特率如何计算

    本篇笔记主要记录MPC5744p的CAN通信波特率计算,以及需要注意的问题
    的头像 发表于 01-20 14:58 3389次阅读
    <b class='flag-5'>MPC5744p</b>的CAN通信波特率如何计算