CC2530运行模式及PWM实现

时间:2022-06-10

    CC2530 结合了的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。CC2530 有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB 的闪存。CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。
    运行模式之间的转换时间短进一步确保了低能源消耗。CC2530F256 结合了德州仪器的业界的黄金单元ZigBee 协议栈(Z-Stack),提供了一个强大和完整的ZigBee 解决方案。CC2530F64 结合了德州仪器的黄金单元RemoTI,更好地提供了一个强大和完整的ZigBee RF4CE 远程控制解决方案。
    先看TImer1的操作模式,分别是Free-Running, Modulo, Up-and-Down。
    具体的讲,Free-Running就是在每个时钟沿到来是计数器加1,从0x0000一直加到0xFFFF(如果设置了溢出中断,则发生中断,默认开启中断,在TIMIF.T1OVFIM可以失能中断),计数范围固定不变,可以通过预分频来控制计数频率。

    Modulo则是通过设置T1CC0H,T1CC0L两个寄存器来改变TImer1的计数上限。但是,如果timer1启动时,计数值大于T1CC0H,T1CC0L,则timer1会继续向上计数到0xFFFF,然后产生溢出中断。如果timer1启动时,计数值小于T1CC0H,T1CC0L,则当计数值等于T1CC0H,T1CC0L,计数值重置。

    在这个模式下如果使用比较输出的话,T1CC0因为用做比较输出的值,所以通道0没有两种输出模式。在两种模式中,状态转换是与T1CC0和T1CCn(n表示通道)比较得出的。通道0重叠了!!
    另外有一点需要注意,在配置T1CC0H,T1CC0L确保定时器暂停,先写低位在写高位
    Up-and-Down,并不是pwm模式,我看网蜂pdf的定时器章节里,在T1CTL的描述中,把Up-and-Down写成了pwm。实际上,这并不是PWM模式。可以理解是,Modulo模式中加多一个到达计数值时,往回计数到0x0000时产生溢出中断。适用于中心对称PWM。

    其实,datasheet里面的图已经很清晰了。
    接下来是比较输出,设置T1CC0H,T1CC0L,当计数值与T1CC0H,T1CC0L相等时,相关通道产生输出。timer1总共有5个通道(0~4)。比较输出总共有9钟模式,但是要注意4~5,6~7这两对是对应着不同操作模式,通过T1CCTLn.CMP来设置。datasheet是这样描述的,还是挺好理解的。
    使用PWM的话,一般应该是选择后6种吧。前2种,如果不软件改变输出状态,那么状态就只改变,第3种则没有PWM效果,但是可以实现时间大于0xFFFF的输出翻转。还有就是不是每一个通道都有上述9种模式。比如通道0就没有两个模式。
    就是设置IO了,将对应的IO口设置为外设IO就可以了。先来看看外设IO分布情况
    可以看出来,timer1的对应的IO口和串口0,1重合,这里为了方便,可以通过PERCFG.U1CFG和PERCFG.U0CFG把IO设置到Alternative 2 location,也就是P1口。否则timer将不会有比较输出。
    弄清楚这些之后就是配置寄存器的问题了。(代码仅供参考,具体请根据datasheet配置相关寄存器)。先看定时器部分。

上一篇:PMDC 电机负载的 ACDC 电源启动注意事项
下一篇:一种应用MSP4 30单片机测量温度的方法

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料