1.5. mcpwm
mcpwm模块支持两路输出pwm,支持故障保护功能,支持复用。
1.5.1. mcpwm_init
mcpwm功能初始化。
原型:
u32 mcpwm_init(const struct mcpwm_config *cfg);
参数:
cfg
mcpwm配置
返回值
mcpwm配置句柄(id号)
1.5.2. mcpwm_deinit
mcpwm功能释放。
原型:
u32 mcpwm_deinit(u32 id);
参数:
id
init时返回的句柄(id号)
返回值
0
1.5.3. mcpwm_start
mcpwm功能启动。
原型:
u32 mcpwm_start(u32 id);
参数:
id
init时返回的句柄(id号)
返回值
0
1.5.4. mcpwm_pause
mcpwm功能暂停。
原型:
u32 mcpwm_pause(u32 id);
参数:
id
init时返回的句柄(id号)
返回值
0
1.5.5. mcpwm_resume
mcpwm功能恢复。
原型:
u32 mcpwm_resume(u32 id);
参数:
id
init时返回的句柄(id号)
返回值
0
1.5.6. mcpwm_set_frequencys
设置mcpwm输出频率,单位Hz。
原型:
u32 mcpwm_set_freq(u32 id, u32 freq);
参数:
id
init时返回的句柄(id号)
freq
频率,单位:Hz
返回值
0
1.5.7. mcpwm_set_duty
设置mcpwm输出占空比。
原型:
u32 mcpwm_set_duty(u32 id, u32 h_duty, u32 l_duty);
- 参数:
id
init时返回的句柄(id号)
h_duty
H通道占空比,如:5123, 51.23%
l_duty
L通道占空比,如:5123, 51.23%
返回值
0
1.5.8. mcpwm_set_irq_callback
设置mcpwm 回调函数,一般用于故障保护功能。
原型:
u32 mcpwm_set_irq_callback(u32 id, u32 priority, mcpwm_detect_irq_cb irq_cb);
- 参数:
id
init时返回的句柄(id号)
priority
中断优先级
irq_cb
回调函数
返回值
0
1.5.9. mcpwm_info_dump
打印对应 id 的mcpwm 配置。
原型:
u32 mcpwm_info_dump(u32 id);
- 参数:
id
init时返回的句柄(id号)
返回值
0
1.5.10. mcpwm参考demo,也可参考 mcpwm_demo.c 文件
static void mcpwm_detect_callback_0(u32 ch)
{
log_debug("mcpwm_detect_callback_0\n");
mdelay(500);
mcpwm_hw_detect_pnd_clr(ch);
mcpwm_hw_enable(ch);
}
static const struct mcpwm_config cfg_0 = {
.ch = MCPWM_CH0, //选择mcpwm_ch0
.mode = MCPWM_EDGE_ALIGNED, //边沿对齐
.freq = 1000, //频率1K Hz
.h_duty = 5000, //H通道占空比 50.00%
.h_pin = IO_PORTA_01, //H通道选择 PA1
.l_duty = 5000, //L通道占空比 50.00%
.l_pin = IO_PORTA_02, //H通道选择 PA2
.detect_port = IO_PORTA_03, //故障保护IO选择 PA3
.edge = MCPWM_EDGE_FAILL, //故障保护检测边沿为 下降沿检测
.irq_cb = mcpwm_detect_callback_0, //回调函数
.irq_priority = 3, //中断优先级
.dead_time = 10 * 1000, //死驱时间,单位 ns
};
u32 id = mcpwm_init(&cfg_0);
mcpwm_start(id); //启动
mdelay(1000);
mcpwm_pause(id); //暂停
mdelay(1000);
mcpwm_resume(id); //恢复
mdelay(1000);
mcpwm_set_freq(id, 2 * 1000); //频率设为 2K Hz
mcpwm_set_duty(id, 9500, 500); //H通道占空比设为 95%,L通道占空比设为 5%
mcpwm_info_dump(id); //打印 id 对应的配置
mcpwm_reg_dump(MCPWM_CH0); //打印 MCPWM_CH0 所有寄存器