| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> ZigBee——使用CC2530的定时器生成指定的PWM波 -> 正文阅读 |
|
[嵌入式]ZigBee——使用CC2530的定时器生成指定的PWM波 |
由于在使用zigbee网络时往往有对电机、灯具等执行器进行控制的需要,而出于成本和简化系统的需求,我们又往往希望在CC2530上实现相关的控制及ZigBee的组网工作,使用CC2530芯片实现PWM输出则是一项重要的控制能力。 首先,需要选定输出PWM的IO口,查阅CC2530的数据手册关于GPIO与外设的映射关系如下: 为了方便程序编写,选择TIMER1作为PWM的定时器,选择其备用位置1作为PWM比较输出的位置。注意到TIMER1与USART0存在默认位置的冲突,故这里仅选用TIMER1的2、3、4通道,1、2通道留给USART0串口使用,方便程序调试。 对于这样的复用功能,由于串口的优先级往往更高,因此还需要对寄存器进行进一步的配置。查阅数据手册中配置USART0与TIMER1的优先级顺序的寄存器,如下图: 可以看到,相关寄存器位于P2DIR中,这是由于P2的IO口数量较少(不足8个),因此与其它功能共用一个8bit寄存器地址。(需要注意的是,我们需要配置的是位于P0的IO口,因此不要错误使用P2SEL对其它备用位置的IO进行优先级配置) 而定时器的启动及相关配置较为简单,在此不再赘述,可参考数据手册与代码增进理解。 仿照TI官方的HAL库写法,添加两个文件,分别是hal_pwm.h和hal_pwm.c。
代码中首先配置了系统时钟,若使用TI的Zstack协议栈则这些项目都是默认进行的配置(TI内部的OSAL系统使用TIMER4的1ms中断驱动操作系统工作)。 其次便是将定时器配置为1分频(不分频)模式,能够产生250KHz的最高频率,留给我们更多的配置空间。 通过对PERCFG寄存器的配置选择了TIMER0的位置选择,P2DIR则决定了这些IO上的优先等级。 P0DIR与P0SEL的功能与它们的名称一致,配置了IO映射到复用功能上,并设定方向为输出。 T1CC0则需要引起注意,由于我们选择的是输出的PWM频率与占空比皆可变化的“模”模式,因此T1CC0是PWM频率比较的基准,即使我们不使用TIMER1和通道0,也必须设置该寄存器。设置该寄存器即决定了整个PWM周期的频率,需要注意的是从0计算至T1CC0,因此设置值时需要注意减去1,对于频率敏感的场合尤其需要注意。 而T1CC2/T1CC3/T1CC4则默认设置为0,等待后续PWM配置函数进行计算和配置。 T1CCTL2/T1CCTL3/T1CCTL4则用于配置各个通道的输出模式与极性。在这里设置的值将使各个通道均工作在比较输出模式,并在计数值由0增加至T1CCx期间输出高电平,此后由T1CCx至T1CC0的过程中输出低电平,即输出正占空比,与一般的使用方式相符合。 在PWM_Set函数中,首先结合T1CC0的值,计算了PWM的实际占空比,并由此设置了3个输出通道的比较值。 在代码中,使用了TI公司提供的对数据结构进行转换的宏定义,摘录如下。
希望能够对大家学习CC2530及ZigBee有所启发~? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:36:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |