zigbee CC2530芯片概述
CC2530由TI公司生产的推出的支持协议栈的芯片;设备特点:
蓝牙:功耗低。
WiFi:通讯速率大
zigbee:功率低,可组建大规模网络。但是通讯速率比较低。速度250kbps,功耗一般8mh。最低2微安
自制开发板
网上卖的开发板价格是在太高了,成本其实很低,自己做得每块板子的成本才不到十元,一口气做了三块开发板。下面展示一下兼容树莓派螺丝孔的我自己做的这块开发板,有需要的同学可以到github上面下载开发板原理图和PCB文件:https://github.com/tianxiaohuahua/Zigbee/tree/master/PCB
一、IO的基本控制
控制一个IO的输出:
首先需要令该IO设置未普通IO的模式,如:P0SEL,P1SEL,P2SEL,一共就只有这三个寄存器来设置
让该IO设置未输出状态,而非输出状态,如:P0DIR,P1DIR,P2DIR
最后直接设置该IO未输出高低电平,如:P1_0 = 0;
P1SEL &= 0XFE;
P1DIR |= 0X01;
P1_0 = 1;
设置一个IO的输入:
和设置输出模式相同都需要设置三个寄存器,还需要配置上下拉模式:
1、设置为普通IO模式,配置P0SEL,P1SEL,P2SEL;
2、设置输入输出模式,配置P0DIR,P1DIR,P2DIR;
3、设置IO的输入为上拉、下拉或者三态状态,需要配置P0INP、P1INP、P2INP;
一般情况下,读取外部开关信号直接设置上下拉模式,读取AD信号一般使用三态状态模式
4、通过读取IO的寄存器读取IO的状态
特别需要注意的是PXINP寄存器,在输出模式下,该寄存器的每一位都对用了相对应的IO,0表示上下拉模式。1表示三态模式。但是由于设置为上下拉模式还要具体到设置为上拉模式或者下拉模式,因此,使用P2INP的高三为进行设置,把第五位设置为0就是上拉模式,1就是下拉模式:
P0SEL &= 0xBF;
P0DIR &= 0xBF;
P0INP &= 0xBF;
P2INP &= 0xDF
初始状态下的一些寄存器的值都是零,因此一些寄存器就不需要配置!!!
因此芯片在上电后吗,默认是所有的IO口都是上拉输出状态!!!
配置IO的外部中断:
注意:CC2530的每一个IO引脚都有中断功能;
1、初始化IO为普通IO模式;
2、配置IO的输入模式;
3、配置IO的上下拉;
4、配置上拉;
5、开启CPU中断,令EA = 1;
相当于一个最高级别的开关,控制所有IO的中断信号,只有这一位寄存器设置为1的时候才会开启中断;
6、打卡IO口组中断;一共三组,分别是P0组、P1组和P2组。
对应的寄存器为:P0IE、P1IE和P2IE;是一个只有1位的寄存器。相当于一个总开关下面的次级开关。分别控制了三组IO的中断信号。并且规定0是关断使能,1是开启使能;
7、打开组内的对应的某个IO的中断;相应为具体的某一个IO。
一共有三组寄存器,每个寄存器的八位对应了8个IO,可以进行分别控制。这三个寄存器是P0IEM、P1IEM和P2IEM。规定0代表复位,1代表使能;
8、确定上升沿触发还是下降;
只由单独的一个寄存器配置所有IO。0代表上升沿,1代表下降沿;
每一位分别对应了不同组的IO:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|
IO驱动能力 | 无 | 无 | 无 | P2_0~P2_4 | P1_4~P1_7 | P1_0~P1_3 | P0_0~P0_7 |
具体到一个IO的设置如下:
P0SEF &= 0XDF;
P0DIR &= 0XDF;
POINP &= 0XDF;
P2INP &= 0XDF;
EA = 1;
P0IE = 1;
P0IEN |= 0X20;
PICTL |= 0X01;
设置中断函数,都是固定格式
#pragma optimze=none
#pragma vector=P0INT_VECTOR
__interrup void a_function()
{
if(P0IFG & 0X20)
{
do_something();
}
P0IFG = 0;
P0IF = 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)