1. 概述
1.1 功能描述
在 MPC5746R_PVC 板子上實現 EMIOS 功能,本內容主要集中在 EMIOS
的PWM功能介紹,連接示波器驗證其功能
1.2 硬體開發工具
MPC5746R_ EVC 板
PEmicro 燒錄器
1.3 軟體開發工具
S32 Design Studio IDE for Power Architecture , 版本 2017.R1 , Build id: 171018
S32 SDK PA , BETA 2.9.0
1.4 參考相關程式
Example codes / MPC5746R_emios_pwm
2. 原理
2.1工作模式
- General-Purpose Input/Output (GPIO)
- Single-Action Input Capture (SAIC)
- Single-Action Output Compare (SAOC)
- Input Pulse-Width Measurement (IPWM)
- Input Period Measurement (IPM)
- Double-Action Output Compare (DAOC)
- Pulse/Edge Accumulation (PEA)
- Pulse/Edge Counting (PEC)
- Quadrature Decode (QDEC)
- Windowed Programmable Time Accumulation (WPTA)
- Modulus Counter (MC)
- Modulus Counter Buffered (MCB)
- Output Pulse-Width and Frequency Modulation (OPWFM)
- Output Pulse-Width and Frequency Modulation Buffered (OPWFMB)
- Center Aligned Output Pulse Width Modulation with Dead Time Insertion(OPWMC)
- Center Aligned Output Pulse Width Modulation with Dead Time Insertion Buffered(OPWMCB)
- Output Pulse-Width Modulation (OPWM)
- Output Pulse-Width Modulation Buffered (OPWMB)
- Output Pulse-Width Modulation with Trigger (OPWMT)
2.2 計數器來源
1. MC mode ( Modulus Counter )
MC 模式可使用來產生計數器或提供定時器時鐘源可分為 up mode與 up/down mode
2. MCB mode ( Modulus Counter with buffer )
MC with buffer,利用緩衝器儲存資料,當下個周期開始時更新並使用儲存的
Data。
3. PWM 種類與功能介紹
3.1 output Pulse-Width Modulation with Trigger (OPWMT)
可以在 PWM 週期中的任何點生成觸發信號,例如啟動 ADC 轉換,允許
每個 Channel 固定偏移,對於系統消除噪音有幫助。
3.2 output Pulse-Width and Frequency Modulation Buffered (OPWFMB)
3.3 Center Aligned Output Pulse Width Modulation with Dead Time Insertion Buffered(OPWMCB)
OPWMCB 根據上圖產生 PWM 訊號,Dead time 可選擇前緣或後緣輸入,
雙緩衝器。
3.4 output Pulse-Width Modulation Buffered (OPWMB)
3.5 output Pulse Width Modulation Mode(OPWM)
3.4 & 3.5.為 up mode PWM 差異為是否有緩衝區,沒有緩衝區能及時更新資料
,但是較不 Smooth ,反之擁有緩衝區 PWM 較 Smooth
4. 程式碼功能描述
4.1 功能概述
- EMIOS 功能選擇與 PIN腳選擇
- 2.EMIOS 計數器觸發 PWM 功能
4.2 程式流程圖
5. SDK相關 function 介紹
5.1 EMIOS_DRV_InitGlobal
5.1.1 功能描述
Low power mode 與 normal mode 選擇
是否允許進入 debug 模式
GlobalTimeBase 或者 ExternalTimeBase 啟用
分頻器設置
5.1.2 函式原型
EMIOS_DRV_InitGlobal ( INST_EMIOS_MC1, &eMIOS_Mc1_InitConfig0 ) ;
5.1.3 參數
參數名稱 |
類型 |
描述 |
INST_EMIOS_MC1 |
uint8_t |
指定EMIOS_MC函式模塊 |
eMIOS_Mc1_InitConfig0 |
emios_common_param_t |
EMIOS_MC 模式與時鐘設定 |
5.1.4 return 值
無
5.1.5 範例
EMIOS_DRV_InitGlobal ( INST_EMIOS_MC1, &eMIOS_Mc1_InitConfig0 ) ;
5.2 EMIOS_DRV_MC_InitCounterMode
5.2.1 功能描述
選擇 MC 時鐘來源
MC 計數器種類選擇
觸發模式
Flag 產生位置設置
5.2.2 函式原型
EMIOS_DRV_MC_InitCounterMode ( INST_EMIOS_MC1,EMIOS_CNT_BUSA_DRIVEN,&eMIOS_Mc1_CntChnConfig0 ) ;
5.2.3 參數
參數名稱 |
類型 |
描述 |
INST_EMIOS_MC1 |
uint8_t |
指定EMIOS_MC函式模塊 |
EMIOS_CNT_BUSA_DRIVEN |
Channel |
選擇 MC 使用的 TIME BUS 通道 |
eMIOS_Mc1_CntChnConfig0 |
emios_common_param_t |
EMIOS_MC 通道模式使用者設定 |
5.2.4 return 值
無
5.2.5 範例
EMIOS_DRV_MC_InitCounterMode ( INST_EMIOS_MC1,EMIOS_CNT_BUSA_DRIVEN, &eMIOS_Mc1 _CntChnConfig0 ) ;
5.3 EMIOS_DRV_PWM_InitMode
5.3.1 功能描述
選擇 PWM 模式與 Channel
PWM 週期設定與 PWM 輸出active high or low
Timebase 選擇與死區設定
Dutycycle 初始化
5.3.2 函式原型
EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1,8U,&eMIOS_Pwm1_PWMChnConfig0 ) ;
5.3.3 參數
參數名稱 |
類型 |
描述 |
INST_EMIOS_MC1 |
uint8_t |
指定EMIOS_MC函式模塊 |
8 |
Channel |
選擇 PWM使用的 Channel |
eMIOS_Pwm1_PWMChnConfig0 |
emios_pwm_param_t |
EMIOS_PWM 使用者設定 |
5.3.4 return 值
無
5.3.5 範例
EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 8U, & eMIOS_Pwm1_PWMChnConfig0 ) ;
EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 9U, & eMIOS_Pwm1_PWMChnConfig1 ) ;
EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 10U, & eMIOS_Pwm1_PWMChnConfig2 ) ;
EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 11U, & eMIOS_Pwm1_PWMChnConfig3 ) ;
EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 12U, & eMIOS_Pwm1_PWMChnConfig4 ) ;
EMIOS_DRV_PWM_InitMode ( INST_EMIOS_MC1, 13U, & eMIOS_Pwm1_PWMChnConfig5 ) ;
5.4 EMIOS_DRV_EnableGlobalEmios
5.4.1 功能描述
Emios 模塊啟動
5.4.2 函式原型
EMIOS_DRV_EnableGlobalEmios ( INST_EMIOS_MC1 ) ;
5.4.3 參數
參數名稱 |
類型 |
描述 |
INST_EMIOS_MC1 |
uint8_t |
指定EMIOS_MC函式模塊 |
5.4.4 return 值
無
5.4.5 範例
EMIOS_DRV_EnableGlobalEmios ( INST_EMIOS_MC1 )
5.5 EMIOS_DRV_PWM_SetDutyCycle
5.5.1 功能描述
更新 PWM 的 Dutycycle
5.5.2 函式原型
EMIOS_DRV_PWM_SetDutyCycle ( INST_EMIOS_MC1, 8U, dutyCycleCnt ) ;
5.5.3 參數
參數名稱 |
類型 |
描述 |
INST_EMIOS_MC1 |
uint8_t |
指定EMIOS_MC函式模塊 |
8 |
channel |
指定 PWM 通道 |
dutyCycleCnt |
uint32_t |
預更新的 dutycycle |
5.5.4 return 值
無
5.5.5 範例
EMIOS_DRV_PWM_SetDutyCycle ( INST_EMIOS_MC1, 8U, dutyCycleCnt ) ;
5.6 EMIOS_DRV_PWM_SetPeriod
5.6.1 功能描述
更新 PWM 的 Period
5.6.2 函式原型
EMIOS_DRV_PWM_SetPeriod ( INST_EMIOS_MC1,9U,new_period ) ;
5.6.3 參數
參數名稱 |
類型 |
描述 |
INST_EMIOS_MC1 |
uint8_t |
指定EMIOS_MC函式模塊 |
9 |
channel |
指定 PWM 通道 |
new_period |
uint32_t |
預更新的 period |
5.6.4 return 值
無
5.6.5 範例
EMIOS_DRV_PWM_SetPeriod ( INST_EMIOS_MC1,9U,new_period ) ;
5.7 其他 function
5.7.1 EMIOS_DRV_PWM_SetCenterAlignDeadTime ( uint8_t emiosGroup, uint8_t
channel, uint32_tnewDeadTime ) ;
更新死區設定
5.7.2 EMIOS_DRV_PWM_GetDutyCycle ( uint8_t emiosGroup, uint8_t channel ) ;
讀取 PWM Dutycycle
5.7.3 EMIOS_DRV_PWM_SetTrailingEdgePlacement ( uint8_t emiosGroup, uint8_t channel, uint32_t newTrailingEdgePlacement ) ;
PWM 後緣位置更改
5.7.4 EMIOS_DRV_PWM_SetTriggerPlacement ( uint8_t emiosGroup, uint8_t channel, uint32_t newTriggerPlacement ) ;
PWM 觸發位置更改
5.7.5 EMIOS_DRV_PWM_GetCenterAlignDeadTime ( uint8_t emiosGroup, uint8_t channel ) ;
讀取死區資料
評論