DTC
DTC模块为PWM子模块,设计用于电机控制
备注
SWM模块寄存器参看PWM寄存器 PD - DTC_CTL
简介
模式为3对即共6路PWM输出通道构成,3对输出命名分别为U、V、W,由一个参数控制输出周期,由三个不同参数控制占空比,每对输出通道由H、L两路输出通道构成
DTC详情:PWM模块中对DTC的描述
-
enum dtc_source_clk_t
DTC工作时钟
DTC_Clock_OSCPMU: 32kHz时钟
DTC_Clock_OSCAUDIO: 49.152MHz时钟
DTC_Clock_OSCCORE: corepll时钟,大小由corepll配置决定,参看时钟配置模块 XX
DTC_Clock_EXTCLK: 外部输入时钟
-
enum dtc_it_type_t
DTC中断
DTC_Half_IT: 单个脉冲输出一半时中断
DTC_End_IT: 单个脉冲输出完成中断
- 说明
DTC_End_IT 一个脉冲周期输出完毕pending
DTC_Half_IT 一个脉冲输出一半pending,只有当输出为中心对称是有效,次参数在通道初始化参数指定
-
enum dct_align_type_t
DTC上下边输出对齐方式
DTC_Align_Type_Up_Right: 右边上升沿对齐
DTC_Align_Type_Center: 中心对齐
DTC_Align_Type_Down_Left: 左边下降沿对齐
-
enum dct_channel_t
DTC模式通路,由UVW三通道构成,每个通道由两路互补输出构成。即DTC模式总共有6路脉冲输出
DTCW: W通路
DTCV: V通路
DTCU: U通路
-
struct dtc_parameter_t
DTC初始化参数
period: 周期,范围1-256
w_duty: w通道高电平数量,范围0-256
v_duty: v通道高电平数量,范围0-256
u_duty: u通道高电平数量,范围0-256
low_idle_polarity: 空闲时底边的极性,参数选择soc_set_t
high_idle_pilarity: 空闲时高边的极性,参数选择soc_set_t
low_out_polarity: 决定输出是否反向,也会影响空闲的极性,参数选择soc_set_t
high_out_pilarity: 决定输出是否反向,也会影响空闲的极性,参数选择soc_set_t
aligned_type: 高低边对齐方式,参数选择dct_align_type_t
dead_time: 高低边死区时间,cycles .参数范围0-255
- 说明
三对通道的占空比值不能大于周期之,即w_duty、v_duty、u_duty都不能大于period
空闲极性也受输出翻转的影响,如,当空闲极性为高,但输出反正也使能,空闲时会输出低。
死区时间指每对通道的高低边输出占空比的时间差。当占空比不足死区时间,则输出占空比为0的脉冲
-
void dtc_clock_set(dtc_source_clk_t source_clk, uint32_t div)
DRC模式时钟设置
- 参数
source_clk – source_clk可选时钟源,参数选dtc_source_clk_t
div – 时钟分频系数,范围1-8192
- 返回
无
-
void dtc_init(dtc_parameter_t *dtc_parameter)
DTC模式初始化
- 参数
dtc_parameter – dct参数,参数范围dtc_parameter_t
- 返回
无
-
void dtc_set(uint32_t u_duty, uint32_t v_duty, uint32_t w_duty)
DTC模式占空比参数设置
- 参数
u_duty – u通道占空数 0-256
v_duty – v通道占空数 0-256
w_duty – w通道占空数 0-256
- 返回
无
-
void dtc_deinit()
DTC模式去初始化
- 返回
无
-
void dtc_start(dct_channel_t DTCx)
DTC开始输出pwm
- 参数
DTCx – dtc通道,参数范围dct_channel_t
- 返回
无
-
void dtc_abort(dct_channel_t DTCx)
DTC停止输出pwm
- 参数
DTCx – dtc通道,参数范围dct_channel_t
- 返回
无
-
void dtc_brake_enable(soc_set_t pause_polarity, soc_set_t low_polarity, soc_set_t high_polarity)
使能GPIO控制DTC暂停输出pwm功能,通过DTC_EMB_PIN控制暂停输出
- 参数
pause_polarity – 表示暂停的控制脚电平极性
low_polarity – 低边暂停后输出
high_polarity – 高边暂停收输出
- 返回
无
-
void dtc_brake_disable()
失能GPIO控制DTC输出pwm功能
- 返回
无
-
void dtc_irq_enable(dtc_it_type_t it_type)
使能DTC中断
- 参数
it_type – 中断类型,参数选择dtc_it_type_t - DTC_End_IT: 一个PWM输出完毕时产生 - DTC_Half_IT: 一个PWM输出的中间时产生,只有中心对称时有效,否则和DTC_End_IT一起到来
- 返回
无
-
void dtc_irq_disable(dtc_it_type_t it_type)
失能DTC中断
- 参数
it_type – 中断类型,参数选择dtc_it_type_t - DTC_End_IT: 一个PWM输出完毕时产生 - DTC_Half_IT: 一个PWM输出的中间时产生,只有中心对称时有效,否则和DTC_End_IT一起到来
- 返回
无
-
soc_set_t dtc_irq_get_flag(dtc_it_type_t it_type)
获取DTC中断pending
- 参数
it_type – 中断类型,参数选择dtc_it_type_t - DTC_End_IT: 一个PWM输出完毕时产生 - DTC_Half_IT: 一个PWM输出的中间时产生,只有中心对称时有效,否则和DTC_End_IT一起到来
- 返回
pending状态
- 返回值
Reset – pending未置位
Set – pending置位
-
void dtc_irq_clear_flag(dtc_it_type_t it_type)
清除DTC中断pending
- 参数
it_type – 中断类型,参数选择dtc_it_type_t - DTC_End_IT: 一个PWM输出完毕时产生 - DTC_Half_IT: 一个PWM输出的中间时产生,只有中心对称时有效,否则和DTC_End_IT一起到来
- 返回
无
-
void dtc_irq_handler()
DTC中断处理函数
- 返回
无
- Note
需要在pwm_irq_entry中调用
- Note
弱函数,用户可再定义同名函数
API使用
确认通道未使用
调用dtc_clock_set(source_clk,div)设定工作时钟
调用dtc_init(dtc_parameter_addr)参数初始化
调用dtc_start(DTCx)使能通道输出
根据情况调用dtc_brake_enable(pause_polarity,low_polarity,high_polarity)使能刹车功能
调用dtc_set(u_duty,v_duty,w_duty)修改占空比
![]()