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

网站 建设 业务需求表杭州网络优化公司排名

网站 建设 业务需求表,杭州网络优化公司排名,web中英文网站怎么做,海城百度公司 海城网站建设【S32M244 RTD200P04 LLD篇8】S32M244 PWM ADC LLD demo 一,文档简介二,PWMTRGMUXPDBADC 2ch 软件配置与实现2.1 软硬件版本平台2.2 Demo CT 模块配置2.2.1 引脚配置2.2.2 时钟配置2.2.3 外设配置 2.3主程序调用情况 三, 测试结果 一&#xf…

【S32M244 RTD200P04 LLD篇8】S32M244 PWM ADC LLD demo

  • 一,文档简介
  • 二,PWM+TRGMUX+PDB+ADC 2ch 软件配置与实现
    • 2.1 软硬件版本平台
    • 2.2 Demo CT 模块配置
      • 2.2.1 引脚配置
      • 2.2.2 时钟配置
      • 2.2.3 外设配置
    • 2.3主程序调用情况
  • 三, 测试结果

一,文档简介

S32M2XX系列是专门为电机控制而生的MCU系列:
S32M24X,延续S32K14X系列MCU,添加了AE预驱模块。
S32M27X,延续了S32K3系列MCU,添加了AE预驱模块。
NXP官方提供了S32M24X和S32M27X系列的EVB,可以配合一个三相PMSM/BLDC电机,实现单电阻电流采样方式的电机控制。研究电机控制的必经之路是要懂得怎么去控制PWM,实现在特定时刻采集电流,电压信号,并且经过计算再回调PWM控制。本文将基于S32M24X-EVB:
https://www.nxp.com/design/design-center/development-boards-and-designs/S32M24XEVB
讲解如何实现在S32M244上,输出带有死区的互补PWM,并且使用FTM_INT作为触发信号,通过PDB延迟触发ADC采样,将ADC采集的值通过UART打印到PC串口,另外通过TRGMUX模块实现不同模块的相互连接,比如FTM和PDB,还有将信号通过TRGMUX_OUT引脚输出。实现的框图结构如下:
(1)PWM+TRGMUX+PDB+ADC 单通道
配套附件代码:S32M244_FTM_TRGMUX_PDB_ADC_RTD200_P04

在这里插入图片描述

图 1

(2)PWM+TRGMUX+PDB+ADC 双通道
配套附件代码:S32M244_FTM_TRGMUX_PDB_ADC2ch_RTD200_P04_20k
在这里插入图片描述

图 2

这里讲解主要基于2通道ADC采样的demo,因为单通道的demo完全可以在2通道的基础上做裁剪,单通道的原则是分享代码。其实本文的主要目的是分享小编自己做的demo,如果熟悉电机控制的,也可以直接参考官方S32M244电机控制demo自行去做。

二,PWM+TRGMUX+PDB+ADC 2ch 软件配置与实现

2.1 软硬件版本平台

硬件:S32M244-EVB
软件:

  • S32DS : S32DS.3.5_b220726_win32.x86_64.exe Update 4 for
  • S32DS:SW32_S32DS_3.5.4_D2307.zip Development package for S32K1XX:
  • SW32K1_S32DS_3.5.4_D2307.zip Development package for S32M2XX:
  • SW32M2xx_S32DS_3.5.0_D2303.zip
  • RTD:
    S32K1_S32M24X Real Time Drivers AUTOSAR 4.4 & R21-11 Version 2.0.0
    S32K1_S32M24X Real Time Drivers AUTOSAR R21-11 Version 2.0.0 P04
  • S32M24x_AMMCLIB_RTM_1_1_39_BIN
  • S32M24XEVB Evaluation Board Motor
  • Control Application Software : S32M24XEVB-SW.exe
  • FreeMASTER tool 3.2 : FMASTERSW32.exe

这里的软件平台是能够让电机demo都运行起来的这个平台, 如果不需要电机,只需要装S32DS, update,development,RTD即可。
具体的软件链接,建议直接到官网对应软件下载的地方去搜索下载对应版本即可。

2.2 Demo CT 模块配置

首先新建一个S32M244 S32DS 的工程, 然后再去配置引脚,时钟,和外设模块。对于外设主要设计几个模块:Adc_Ip, Ftm_Pwm, Pdb_Adc_Ip, Trgmux_Ip,Lpuart_Uart, Port_Ip

2.2.1 引脚配置

用到的引脚有如下情况:
在这里插入图片描述

图 3

两个FTM引脚是用于输出带有死区的一对互补PWM。ADC是用来采集板载的可调电位器电压,LPUART用来打印信息, TRGMUX相关引脚是用来输出相关测试信号。

2.2.2 时钟配置

时钟这里需要关注的是:主频时钟,FTM时钟,UART时钟,ADC时钟。

在这里插入图片描述

图 4

在这里插入图片描述

图 5

2.2.3 外设配置

使用到的外设情况如下:

在这里插入图片描述
在这里插入图片描述

图 6

(1)Port_Ip_1
讲port的配置,主要是Pcr值的设置原则。
在这里插入图片描述

图 7

PortPinPcr = PinId + PortId∗32
PortId:A=0,B=1,C=2,D=3,E=4;
PinId就是对应的引脚在port中的号。
上图中,FTM0_CH0是PTC0,则:
PortPinPcr = PinId(0) + PortId(2)∗32=64

(2)Ftm_Pwm模块配置
在这里插入图片描述

图8

在这里插入图片描述

图 9

(3)Adc_Ip模块
在这里插入图片描述

图 10

(4)Pdb_Adc_Ip
在这里插入图片描述

图 11

在配置PDB延迟的时候,需要注意,要考虑ADC转换时间,如果一个没转换完,又来一个触发会造成PDB触发时序出错问题。
(5)Trgmux_Ip
在这里插入图片描述

图 12

这里面包含两部分:FTM连接PDB,还有就是测试信号连接到TRGMUX_OUT输出。
(6)Lpuart_Uart
用于将信号通过printf输出到PC串口终端
在这里插入图片描述

图13

2.3主程序调用情况

配置完成之后,可以通过在main中调用如下代码实现PWM触发PDB采集ADC双通道的情况,PWM可以输出互补信号,并且还可以实现相关的触发信号通过TRGMUX_OUT引脚输出:

#include "Mcal.h"
#include "Port_Ci_Port_Ip.h"
#include "Gpio_Dio_Ip.h"
#include "Clock_Ip.h"
#include "Lpuart_Uart_Ip.h"
#include "string.h"
#include "stdio.h"
#include "retarget.h"
#include "Ftm_Pwm_Ip.h"
#include "Ftm_Pwm_Ip_HwAccess.h"
#include "IntCtrl_Ip.h"
#include "Adc_Ip.h"
#include "Pdb_Adc_Ip.h"
#include "Trgmux_Ip.h"#define PTD1_PORT    IP_PTD
#define PTD1_PIN     1U
#define LED_PORT     IP_PTE
#define LED_PIN      15U
#define INST_LPUART  (0U)
#define INST_FTM0	 (0U)#define WELCOME_MSG_1 "Hello, This message is sent via Uart!\r\n"
volatile Lpuart_Uart_Ip_StatusType lpuartStatus = LPUART_UART_IP_STATUS_ERROR;
uint32 remainingBytes;
uint32 T_timeout = 0xFFFFFF;uint16 pwmCycleCnt = 0,cntflag = 0,pwmCycleCnt1 = 0, ADCIsrDone = 0;
volatile boolean notif_triggered = FALSE;
volatile uint16 data;
volatile uint16 data2ch[2];
volatile int exit_code = 0;
/* User includes */
void TestDelay(uint32 delay);
void TestDelay(uint32 delay)
{static volatile uint32 DelayTimer = 0;while(DelayTimer<delay){DelayTimer++;}DelayTimer=0;
}
__attribute__((section (".ramcode")))
void PDB1_SequenceErrorNotif(uint8 ChanIdx, uint16 SeqErrMask)
{// Read ADCs Results registers to unlock PDB pre-triggers lock statesif (Adc_Ip_GetConvActiveFlag(ADCHWUNIT_0_INSTANCE)){}Adc_Ip_GetConvData(ADCHWUNIT_0_INSTANCE, 0);Adc_Ip_GetConvData(ADCHWUNIT_0_INSTANCE, 1);Ftm_Pwm_Ip_SetInitTriggerCmd(IP_FTM0, true);/* Unused parameter */(void)(ChanIdx);
}__attribute__((section (".ramcode")))
void FTMReloadNotif(void)
{pwmCycleCnt ++;
}__attribute__((section (".ramcode")))
void ADC1_ConversionCompleteNotif(const uint8 ControlChanIdx)
{(void)(ControlChanIdx);notif_triggered = TRUE;data2ch[0] = Adc_Ip_GetConvData(ADCHWUNIT_0_INSTANCE, 0);data2ch[1] = Adc_Ip_GetConvData(ADCHWUNIT_0_INSTANCE, 1);}int main(void)
{Adc_Ip_StatusType adcStatus;Clock_Ip_Init(&Clock_Ip_aClockConfig[0]);Port_Ci_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_BOARD_InitPins, g_pin_mux_InitConfigArr_BOARD_InitPins);IntCtrl_Ip_Init(&IntCtrlConfig_0);Lpuart_Uart_Ip_Init(INST_LPUART, &Lpuart_Uart_Ip_xHwConfigPB_0);/**** Part 1: Start ADC software trigger conversions ****/Adc_Ip_Init(ADCHWUNIT_0_INSTANCE, &AdcHwUnit_0);adcStatus = Adc_Ip_DoCalibration(ADCHWUNIT_0_INSTANCE);while (adcStatus != ADC_IP_STATUS_SUCCESS){adcStatus = Adc_Ip_DoCalibration(ADCHWUNIT_0_INSTANCE);}
#if 1/* Start a software trigger conversion */Adc_Ip_StartConversion(ADCHWUNIT_0_INSTANCE, ADC_IP_INPUTCHAN_EXT11, TRUE);/* Wait for the notification to be triggered and read the data */while (notif_triggered != TRUE);notif_triggered = FALSE;/* Start a software trigger conversion */Adc_Ip_StartConversion(ADCHWUNIT_0_INSTANCE, ADC_IP_INPUTCHAN_BANDGAP, TRUE);/* Wait for the notification to be triggered and read the data */while (notif_triggered != TRUE);notif_triggered = FALSE;#endifif (Adc_Ip_GetConvActiveFlag(ADCHWUNIT_0_INSTANCE)){}Adc_Ip_GetConvData(ADCHWUNIT_0_INSTANCE, 0);Adc_Ip_GetConvData(ADCHWUNIT_0_INSTANCE, 1);/**** Part 2: Start ADC hardware trigger conversions ****/Adc_Ip_SetTriggerMode(ADCHWUNIT_0_INSTANCE, ADC_IP_TRIGGER_HARDWARE);Trgmux_Ip_Init(&Trgmux_Ip_xTrgmuxInitPB);/* Initialize PWM driver */Ftm_Pwm_Ip_DisableNotification(INST_FTM0, FTM_PWM_IP_OVERFLOW_NOTIFICATION);Ftm_Pwm_Ip_EnableNotification(INST_FTM0, FTM_PWM_IP_RELOAD_POINT_NOTIFICATION);Ftm_Pwm_Ip_Init(INST_FTM0, &Ftm_Pwm_Ip_UserCfg0);Pdb_Adc_Ip_Init(PDBHWUNIT_0_INSTANCE, &PdbHwUnit_0);Ftm_Pwm_Ip_SetInitTriggerCmd(IP_FTM0, true);printf("S32M244 FTM TRIGMUX ADC demo RTD200P04.\r\n");for(;;){printf("pwmCycleCnt = %d \r\n",(int)pwmCycleCnt);Gpio_Dio_Ip_WritePin(LED_PORT, LED_PIN, 1U);TestDelay(480000);Gpio_Dio_Ip_WritePin(LED_PORT, LED_PIN, 0U);TestDelay(480000);while (notif_triggered != TRUE);notif_triggered = FALSE;printf("adc1_bandGap = %d \r\n",(int)data2ch[0]);printf("adc1_SE11 = %d \r\n",(int)data2ch[1]);if((pwmCycleCnt > 30000) && (cntflag==0)){cntflag = 1;Ftm_Pwm_Ip_UpdatePwmDutyCycleChannel(INST_FTM0,0,1000,TRUE);}else if((pwmCycleCnt < 30000) && (cntflag==1)){cntflag = 0;Ftm_Pwm_Ip_UpdatePwmDutyCycleChannel(INST_FTM0,0,3000,TRUE);}}return (0U);
}

三, 测试结果

测试结果包括两部分:打印结果看ADC采样值情况,以及PWM输出和PDB触发位置的关系情况。打印结果如下,可以看到ADC的两个通道的值是正确的:
在这里插入图片描述

图 14

PWM波形测试情况如下:
CH1: PTC0
CH2: PTC1
CH3: PTD0
CH4: PTD1
CH5: PTE11
在这里插入图片描述

图 15
文档配套代码链接: [https://community.nxp.com/t5/S32M-Knowledge-Base/S32M24x-S32K14x-gt-FTM-Complementary-mode-and-dead-time/ta-p/1980586](https://community.nxp.com/t5/S32M-Knowledge-Base/S32M24x-S32K14x-gt-FTM-Complementary-mode-and-dead-time/ta-p/1980586)
http://www.dtcms.com/wzjs/75757.html

相关文章:

  • 房地产开发公司网站建设方案郑州千锋教育培训机构怎么样
  • 微信公众号平台登录入口新网站seo
  • 电子商务网站建设课件seo优化公司排名
  • 昆明医院网站建设制作一个网站的全过程
  • 网站建设推广语百度云搜索资源入口
  • 制作大型网站开发营销型网站建设怎么做
  • 网站开发产品需求说明优化网络的软件
  • 2010年最具人气的平面设计师必备网站广东网站seo营销
  • 公司官方网站一般什么公司做google推广专员招聘
  • 做网站需注重的几点搜狗收录提交入口
  • 织梦手机网站制作教程营销策划与运营团队
  • 网站关于我们怎么做单页面模板上海网站建设开发
  • python在线运行seo外包资讯
  • 潍坊网站设计企业管理8大系统
  • 网站流量劫持怎么做广告主平台
  • 魔都网站建设百度免费推广方法
  • 做网站销售门窗怎么做徐州百度seo排名优化
  • 如何做网站连接深圳网站优化公司哪家好
  • wordpress php.ini在哪里关键词推广优化app
  • 做网站开发淘宝权重查询入口
  • 网站在线客服源码seo发包软件
  • 太平洋建设21局网站福州百度seo代理
  • 怎么建网站站点太原百度快速排名提升
  • 公司做网络宣传哪个网站比较好客源引流推广app
  • 做网站运营需要学什么软件比百度还强大的搜索引擎
  • 网站建设公司国内技术最强网络营销策划目的
  • 如何制作效果图北京网站seo公司
  • 免费咨询图片大全上海seo推广外包
  • 国际域名注册查询seo兼职接单平台
  • 徐州 商城网站建设seo网络排名优化