查看: 7578|回复: 1

[S12] 【我要创作】基于S12ZVM的BLDC(4)——软件实现(1)

[复制链接]
  • TA的每日心情
    郁闷
    2021-3-10 19:44
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    126

    主题

    525

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2018
    最后登录
    2023-12-25
    发表于 2017-3-5 22:32:15 | 显示全部楼层 |阅读模式
    1.MC9S12ZVM配置
    BLDC无传感器应用框架设计用于满足以下技术规格:
    • 针对MC9S12ZVML128评估板(EVB)(有关更多信息,请参见MC9S12ZVM128MCBUG,MC9S12ZVML128评估板(EVB)用户手册以及MTRCKTSBNZVM128QSG, 采用MagniVMC9S12ZVML128 MCU的三相无传感器BLDC套件快速指南)
    • PWM输出频率 = 20 kHz
    • 电流环路采样周期为1 ms
    • 速度环路采样周期为1 ms
    • 用于准确的BEMF过零点检测的ADC采样线性近似值。 MC9S12ZVML128的内部分压电阻网络和多路选择器用于相电压测量。
    • 利用MC9S12ZVML128内部的电阻分压, ADC模块可以在HD脚测得母线电压。
    • 为直流母线电流测量使用内部运算放大器AMP0。
    MC9S12ZVML128器件包括多个模块,例如带故障保护功能的脉宽调制器(PMF)、一个可编程触发器单元(PTU)、一个模数转换器(ADC)、一个定时器模块(TIM)和一个适合控制应用(特别是电机控制应用)的栅极驱动单元(GDU)。这些模块直接相连,可配置为满足不同的电机控制应用需求。 下图展示了典型BLDC无传感器应用的模块互连。下面介绍了这些模块,可以在MC9S12ZVMRMV1, MC9S12ZVM系列参考手册中找到详细介绍。
    1.png
    参与输出执行、数据获取和执行与获取同步的模块构成了所谓的控制环。这种控制环包括PMF、GDU、 ADC和PTU模块。控制环的操作极为灵活,可以支持静态、动态或异步时序。PTU 和 ADC 按照存储在存储器中的列表操作。这些列表定义了PTU的触发点、 ADC的命令和ADC的结果。PMF重载事件启动每一个控制环周期。 PMF重载事件重新启动PTU时基。如果启用PTU,则重载将立即作为ptu_reload事件传递到ADC和GDU模块。PMF在所需的PWM重载频率中生成重载事件。
    为了从列表中获取首个触发时刻,并为ADCx生成ptu_reload信号,以便开始从命令顺序列表(CSL)载入ADC转换命令, PMF重载事件将导致PTU时基重新启动。当触发时刻到来时,对应的PTU触发器将为相关ADC生成trigger_x信号。对于同时采样, PTU将生成两个同步trigger_x信号,每个信号对应于一个ADC。确认是trigger_x信号, ADC开始启动CSL中下一个转换序列中的第一项转换(第一个A/D命令已下载)。如需了解更多信息,请参阅
    MC9S12ZVMRMV1, MC9S12ZVM系列参考手册。
    通过这种方式, PTU模块即可作为延迟单元,用于调度相对于PWM周期的起点和一个PWM周期以内的状态变量的多次获取。
    2.定时器与中断
    每个换向事件最初都是由定时器中断触发的。这样的中断可以定义为PWM重载信号。 PWM重载信号本身也会重载PTU模块中的触发器列表,并重启PTU计数器。在PTU计数器达到触发器列表中预定义的值(T1和T2)时, PTU将触发ADC测量。达到T1时触发直流母线电流测量。 T2时将触发另外两个同步测量,一个测量BEMF电压,另一个测量直流母线电压。 ADC转换结果将自动存储到存储器中预定义的队列内。 CPU由ADC转换完成中断触发。它将根据所存储的ADC值计算过零点事件。根据过零点周期计算下一次换向事件的时间。

    2.png

    TIM、 PTU、 GDU和ADC外设均基于母线时钟。为实现更高的PWM分辨率, PMF模块由内核时钟提供。内核时钟提供的分辨率是母线时钟的二倍。时钟模块使用4 MHz外部晶振,配置为可生成12.5 MHz的母线时钟和25 MHz的内核时钟。
      3.PMF
    带故障保护功能的脉宽调制器(PMF)模块配置为以20 kHz的频率(PMFMODA = 1250)生成边沿对齐(PMFCFG0_EDGEx = 1) PWM。为保护逆变器同一桥臂内的MOSFET器件,将死区时间设置为大约0.5 µs (PMFDTMA = 13)。 PWM生成器A作为主模块运行,并产生重载信号作为其他子模块的同步信号(PMFCFG2_REV[0:1] = 1)。每个PWM(PMFFQCA = 0)都会生成重载信号。A对、 B对和C对PWM同步到PWM生成器A (PMFCFG0_MTG = 0)。全部三对均使用值寄存器零(PMFCFG3_VLMODE = 1,写入值寄存器零的值也会写入到值寄存器1到5)设置占空比。每次发生换向事件时(PMFENCA_RSTRTA = 1), PWM发生器都会重启。为实现单极性PWM模式,一相采用互补PWM模式,第二相由软件控制模式(PMFOUTC、PMFOUTB)接地,第三相通过屏蔽输出(PMFCFG2[MSK5:MSK0])保持不通电。用于控制单极性PWM模式的寄存器(PMFOUTC、 PMFOUTB、 PMFCFG2[MSK5:MSK0])采用双缓冲模式(PMFCFG1_ENCE = 1)。双缓冲信号在换向事件发生时交换。 PWM脉宽PMFVAL寄存器也会采用双缓冲,并在GLDOK置位、 PWM重载信号发生时交换。 GLDOK是PTU模块生成的外部信号。 GLDOK在PWM模块中启用(PMFENCA_GLDOKA = 1)
    例如,在第一个周期中, A相由互补PWM信号供电,而B相的底部晶体管接地(PMFOUTC = 0x0C,PMFOUTB = 0x2A), C相未通电(PMFCFG2[MSK5:MSK0] = 0x34)。在90°电角度处发生换向事件后, A相仍然由互补PWM信号供电, B相断电(PMFCFG2[MSK5:MSK0] = 0x1C), C相转为接地(PMFOUTC = 0x30, PMFOUTB = 0x2A)。
    4.PTU
    可编程触发器装置(PTU)的目标是在控制周期内对于与时序有关的状态变量的采集时,可以完全避免CPU的干预。PTU模块包含2个触发生成器(TG)。每个TG分别有自己的使能位,因此两个TG可以独立使能。TG0连接到ADC0, TG1连接到ADC1。 PTU模块的触发的产生与到来的重载事件同步。此重载事
    件将重置并重启内部时基计数器,并确保载入实际触发器列表中的首个触发值。此外,对应的ADC将被告知新控制周期已开始。
    如果计数器值与当前的触发值相匹配,则将生成触发器事件。由当前触发值定义的母线时钟周期数将通过这种方式延迟重载事件。所有采集时间值均存储在全局存储器映像内;也就是说,以三维整数数组(PTUTriggerEventList[][][])的形式存储在系统存储内。采集时间值(PTUTriggerEventList[][][])在
    系统存储器内的准确位置由链接器命令文件指定,并在初始化阶段链接到PTU模块。

    1. PTUPTRL = (uint8_t)((long)PTUTriggerEventList);
    2. PTUPTRM = (uint8_t)(((long)PTUTriggerEventList) >> 8);
    3. PTUPTRH = (uint8_t)(((long)PTUTriggerEventList) >> 16);
    复制代码
    每个TG均仅使用一个列表从存储器载入触发值。主列表(TG0L0IDX/TG1L0IDX)的指针和备用列表(TG0L1IDX/ TG1L1IDX)的指针完全相同。

    1. TG0L1IDX = (uint8_t)(((long)&PTUTriggerEventList[0][0][0] - (long)PTUTriggerEventList) >> 1);
    2. TG1L0IDX = (uint8_t)(((long)&PTUTriggerEventList[1][0][0] - (long)PTUTriggerEventList) >> 1);
    3. TG1L1IDX = (uint8_t)(((long)&PTUTriggerEventList[1][0][0] - (long)PTUTriggerEventList) >> 1);
    复制代码
    即便TG逻辑是在两个指针之间切换, TG也仅使用一个触发器事件的物理列表。触发器列表末尾处启用了TG1的中断(PTUIEL_TG1DIE = 1)。此中断用于存储相应相电压的ADC测量时间。 PTU模块生成LDOK信号,用于通知其他模块软件已经对双缓冲的寄存器进行了更新。













    我知道答案 目前已有1人回答
    很开心
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16843
    最后登录
    1970-1-1
    发表于 2017-3-6 00:16:20 | 显示全部楼层
    不错,也来学习一下
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-28 05:16 , Processed in 0.081867 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表