515|1

28

帖子

0

资源

一粒金砂(中级)

【Silicon Labs BG22-EK4108A 蓝牙开发评测】 III. 修改范例工程,实现双路PWM输出 [复制链接]

本帖最后由 zhang1gong 于 2022-1-11 20:38 编辑

Silicon Labs公司在SSv5(Simplicity Studio 5)IDE中提供了很多范例工程(EXAMPLE PROJECTS),我们需要实现的很多实际工程都可以在这些范例工程的基础上扩充、修改而成。

我想实现通过蓝牙通信(比如通过手机端的app“EFR Connect”)控制BG22-EK4108A评估板的PWM端(已在评估板上引出)的脉冲宽度,其应用场景可以是直流电机调速。作为第一步,先实现PWM端的脉宽调制输出,然后进一步把这一功能整合到蓝牙通信相关的工程中(比如以“Bluetooth - soc Empry”范例工程为基础扩充,或者以“Bluetooth - soc Blinky”范例工程为基础删改)。

 

1 应用SSv5的处理器引脚配置和初始化软件生成功能

SSv5提供了一个范例工程“blink_pwm_baremetal”,这是个比较简单的裸片工程,通过处理器的PA4引脚输出PWM(脉宽调制)信号,而PA4上连接了LED,在PWM信号的作用下,实现呼吸灯功能。我以这个范例工程为蓝本实现我想要的功能。

 

首先在”EXAMPLE PROJECTS & DEMOS"中找到“Platform - Blink PWM”,生成(CREATE)一个新工程(最好改个名字)。在这个工程左侧的“Project Explorer”中找到扩展名为“.slcp”的文件并打开,在打开的窗口中选择“SOFTWARE COMPONENTS”,然后找到“PWM”,点击“Add New Instances”增加一个新的实例:

 

3-1.png

 

给实例命个名,然后点击“DONE”:

 

3-2.png

 

这时在“PWM”(部件)下会出现一个新的实例(我起的名字也叫“PWM”,和评估板上的引脚名字一致)。回到“xxx.slcp”文件,选“CONFIGURATION TOOLS",再打开“Pin Tool”,修改PB4引脚的配置,“Function“选”TIMER1_CC0”,“Software Component”选新添加的实例:

 

3-3.png

 

再次回到“xxx.slcp”文件,再次选“SOFTWARE COMPONENTS",找到新添加的实例并配置之:

 

3-5.png

 

2 修改、增加代码

完成处理器引脚和软件部件的配置后,从项目浏览器(Project Explorer)中可以看到增加了一些文件,打开新增加的文件可看到,包含了与配置有关的代码:

 

3-6.png

 

打开“blink_pwm_app.c”,增加几行代码:

 

3-7.png

 

编译、下载、运行(如果没有错误的话),大功告成。

 

3 运行结果

上视频:

 

LED呼吸灯和PWM端口同时工作.gif

 

示波器上显示的是评估板上PWM(PB4)引脚的输出波形。可以看到LED灯和PWM引脚上的脉宽调制信号同步变化。

 

4 小结

 

其实如果仅仅是要实现评估板PWM引脚的脉宽调制输出,大可不必这么麻烦,只要在“Pin Tool”中把原来PA4的配置移到PB4上,然后编译即可。当然这种做法LED肯定是不亮了。我现在的做法可以在LED原有功能不变的情况下,同步的实现PWM引脚的PWM输出。

 


回复

9244

帖子

21

资源

版主

脉宽调制的输出波形看起来挺漂亮


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    推荐帖子
    多层PCB板设计中接地经验谈

    据经验法则,在高密度和高频率的场合通常使用四层板,就EMC而言比二层板好20DB以上。 ...

    此电路图交流采样的原理

    这个电路图的作为交流采样的原理是什么?

    基于DSP芯片TMS320F2812的稀土超磁致伸缩换能器逆变电源

    基于DSP芯片TMS320F2812的稀土超磁致伸缩换能器逆变电源 稀土超磁致伸缩换能器是利用 ...

    做一个在DC18V上传输音频信号的电路,大家有没有什么好的电路可以参考下呢?

    做一个在DC18V上传输音频信号的电路,大家有没有什么好的电路可以参考下呢?

    选择PCB元件的六大技巧

    最佳PCB设计方法:在基于元件封装选择时需要考虑的六件事。本文中的所有例子都是用M ...

    请问各位大神有没有驱动openmv4P隐藏的引脚怎么驱动

    pin0 = Pin(Pin.cpu.I8, Pin.PULL_UP) (隐藏引脚) pin1 = Pin(' ...

    关闭
    站长推荐上一条 1/5 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表