Nordic51822用PPI方式产生PWM注意事项

本文介绍了使用Nordic51822芯片通过PPI产生PWM信号的方法,包括使能定时器、GPIOTE任务和PPI通道的配置。在实现过程中需要注意裸机与带协议栈情况下的不同,如中断被协议栈打断可能导致PWM精度下降或反相问题。解决方案是在改变比较值前暂停PPI,但这样可能增加无效电平时间。附带了核心代码供参考。
摘要由CSDN通过智能技术生成

一般PPI实现PWM方法

1.使能time1,分配2个比较事件。注意只有周期时间是清除定时器,产生中断。
2.使能一个IO的GPIOTE任务。
3.分配2个PPI通道
4.绑定PPI通道1,定时比较事件1,IO翻转任务;
绑定PPI通道2,定时比较事件2,IO翻转任务;
5.中断里改变CC[0]和CC[1]的值。
达到的效果是,可改变周期,和占空比。

实现注意事项

1.跑裸机不带协议栈,PWM可以完美实现。SDK包里的示例就可以实现。使用我上面的方式则能达到周期可变的目的。
2.使用带协议栈,需要与手机保持连接。不能产生绝对准确的PWM。下面解释原因。
(1)因为我使用的是中断周期溢出中断,原本是想可以准确控制脉冲数。但是因为有协议栈,所以中断会被打断,PPI没有停止,所以脉冲数会变多。
(2)直接改变CC[0]和CC[1]的值导致可能反相。正常的PWM错误反相的PWM出现这个的原因如下:
因为中断周期性改变比较值,可能造成需要翻转那一次被跳过。
举例:占空比较值是100,当前跑到95,然后需要比较值减10变90,则这一次占空翻转跳过
周期比较值是200&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值