完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想请教一下站内大神,想要产生如下图所示含有死区时间的互补的pwm,具体的编程语言怎么写。我自己写的这一段只能在上升沿出有死区。
always@(posedge CLK50M or negedge Rst_n) begin if(!Rst_n)begin cntd1<=5'd0; dpwm_od1<=1'b0; end else begin if(pwm_od1i==1'b0)begin cntd1<=5'd0; dpwm_od1<=1'b0; end else if(cntd1==d_set)begin cntd1<=d_set; dpwm_od1<=1'b1; end else begin cntd1<=cntd1+1'd1; dpwm_od1<=1'b0; end end end 有大神可以解答一下吗,非常感谢!
|
|
相关推荐
6个回答
|
|
用高级定时器TIM1产生一组互补PWM,用通用定时器TIM3输入捕获,测量PWM的频率和占空比。
1、互补PWM输出 使用高级定时器1的CH1和CH1N通道,该定时器可以选用144M的高频率,对应选用输出引脚PA8和PA7,参考库函数使用手册的步骤,大概概括一下: 1.使能时钟和配置相应GPIO,几乎所有外设使用的第一步 2.配置定时器分频值,重装载值,计数模式等基本参数 3.配置OC参数,也就是OCInitStructure结构体,注意CHxN的输出状态要使能,才能输出互补 4.完成上面步骤就可以输出互补PWM了,如果需要死区等功能,再配置BDTR 5.打开定时器,使能PWM输出 下面是使用144M频率产生100k PWM的主要部分代码:
复制代码 用示波器可以查看输出波形。 2、PWM输入捕获 用这个功能可以测量输入波形的频率或(和)占空比,使用的是定时器TIM3的Input capture mode,可以测量频率或者占空比,为了方便同时测量这两个量,使用该模式中的特殊情况PWM input mode,如图: (截图自ST参考手册) 根据库函数说明手册的步骤: 1.开启时钟和配置GPIO 2.如果需要,配置定时器基本参数,如果不配置,将按默认配置运行 3.配置输入参数TIM_ICInitStruct,调用Call TIM_ICInit(TIMx, &TIM_ICInitStruct)配置测量频率或占空比中的一个,或者调用TIM_PWMIConfig(TIMx, &TIM_ICInitStruct)同时测量者两个量 4.开启中断或者DMA并初始化,用来读取结果数据 5.如果用PWM input mode需要把定时器设为主从Reset模式 6.打开定时器,在中断或者DMA读取数据 (细节参考ST参考手册PWM input mode部分和库函数说明手册Input Capture management functions部分) 主要代码:
复制代码 中断处理函数:
复制代码 将1、中输出引脚短接到2、中的输入引脚,即可以在串口打印出测量的结果,在一定误差范围内测量正确。 完整的源码: |
|
1 条评论
|
|
就是把死区时间化成两个比对数,通过比对两个数来产生死区。
|
|
|
|
|
|
1 条评论
|
|
|
|
|
|
学习学习,学习学习。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1779 浏览 1 评论
1518 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1735 浏览 0 评论
954 浏览 0 评论
2525 浏览 0 评论
1571 浏览 39 评论
5804 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 19:55 , Processed in 0.761544 second(s), Total 88, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号