Popis
CC2530 Zigbee 2.4 GHz Module
Diaľkový CC2530F256 + PA výkonový zosilňovač 2,4G bezdrôtový modul zigbee Internet vecí 100mW 20dB
Serial number | parameter name | Parameter value | description |
1 | RF chip | CC2530 | TI |
2 | Module size | 17 * 31.7mm | With FCB antenna |
3 | Module heavy star | L-3g | With FCB antenna |
4 | Working frequency | 2.394GHz ~ 2.507GHz | Can be adjusted by software |
5 | Production Process | No along the process, machine stickers | Wireless products must be fixed to ensure consistency and reliability |
6 | Interface mode | 2 * 12 * 1_27mm | Patch |
7 | Supply voltage | 2.0 ~ 3. 6 VDC | Note: Higher than 3. 6W pressure will cause the module to permanently damage |
8 | Communication level | 0.7VCC ~ 3.6V | VCC refers to the module supply voltage |
9 | Real distance | 800m | B Chunlang open, maximum power, 5dBi antenna, height 2m, 250k air speed |
10 | Transmit power | Up to 20 dBm | About lOOmtf |
11 | Air rate | 250kbps | |
12 | Turn off current | 1.luA | M sleep, wireless off, vcck3.3v |
13 | Emission current | 175mA0 20dBm | Power supply capacity must be greater than 400mA |
14 | Receive current | 36mA | average value |
15 | Communication Interface | I / O | SCM all 10 lead, see the chip manual |
16 | Launch length | 1 ~ 103 Festival | Single number of brochures |
17 | Receiving length | 1 ~ 103 Festival | Single education package |
18 | KSSI support | stand by | See the chip manual for details |
19 | Antenna interface | PCB / IPEX | Pi recognized FCB antenna, 50A characteristic impedance |
20 | Operating temperature | 10 ~ E * 0 | Work level |
twenty one | Working humidity | 10% ^ 90% | Relative humidity, no condensation |
twenty two | Save the overflow | -10 ~ + 125 * C | Work level |
Pin number | Pin name | Pin orientation | Pin use |
L | GHD | Ground, connected to the power supply reference ground | |
2 | VCC | Power supply, must be between 2.0 ~ 3.6V | |
3 | P2.2 | Enter / show out | Microcontroller OTI0 |
4 | P2.1 | Enter / ii out | Microcontroller OTI0 |
5 | P2.0 | Enter / show out | Microcontroller OTI0 |
6 | 07.10.21 | Enter / ii out | Microcontroller OTI0 |
7 | 06.10.21 | Enter / show out | Microcontroller OTI0 |
8 | 05.10.21 | Enter / ii out | Single Chip Microcomputer GPI0 |
9 | 04.10.21 | Enter / show out | Microcontroller OTI0 |
10 | 03.10.21 | Enter / ii out | Microcontroller OTI0 |
11 | 02.10.21 | Enter / show out | Microcontroller OTI0 |
12 | 01.10.21 | Enter / ii out | Microcontroller OTI0 |
13 | P1.0 | Enter / show out | Microcontroller OTI0 |
14 | P0. 7 | Enter / ii out | Microcontroller OTI0 |
15 | P0.6 | Enter / show out | Microcontroller OTI0 |
16 | P0.5 | Enter / ii out | Microcontroller OTI0 |
17 | P0.4 | Enter / show out | Microcontroller OTI0 |
18 | P0.3 | Enter / ii out | Microcontroller OTI0 |
19 | P0.2 | Enter / show out | Microcontroller OTI0 |
20 | P0.1 | Enter / ii out | Microcontroller OTI0 |
twenty one | PO.O. | Enter / show out | Microcontroller OTI0 |
twenty two | RESET | enter | Summer port |
twenty three | TXEN | F to control the control |
Kapitola 1 Schématická analýza
Na základnej doske CC2530 sú dva kryštálové oscilátory: prvá frekvencia je 32 MHz a druhá frekvencia je 32,768 kHz
Keď CC250 beží normálne, potrebuje vysokofrekvenčný hodinový signál a nízkofrekvenčný hodinový signál.
Vysokofrekvenčný hodinový signál sa dodáva hlavne do CPU, aby sa zabezpečila činnosť programu.
Nízkofrekvenčný hodinový signál je dodávaný hlavne do periférnych zariadení na čipe, ako sú napríklad watchdog a časovač vypnutia.
按键IO口接线(按键是接在底板上的)
Zapojenie LED svetla (LED je pripojená k spodnej doske)
Kapitola 2 Konfigurácia výstupného režimu
Kapitola 3 Príklad kódu konfigurácie LED svetla
Príklad kódu:
#include <ioCC2530.h>
//定义LED灯的端口
#define LED1 P1_2
#define LED2 P1_3
/*
函数功能:LED灯IO口初始化
硬件连接:LED1-->P1_2 , LED2-->P1_3
*/
void LED_Init(void)
{
P1DIR |=0x3<<2; //配置P1_2、P1_3为输出模式
LED1 = 1;
LED2 = 1;
}
/*延时200毫秒*/
void delay200ms(void) //误差 -0.125us
{
unsigned char a,b,c;
for(c=95;c>0;c--)
for(b=181;b>0;b--)
for(a=14;a>0;a--);
}
/*主函数*/
void main(void)
{
LED_Init();//初始化LED灯控制IO口
while(1)
{
LED1 = !LED1;
LED2 = !LED2;
delay200ms();
}
}
Funkcia skoku softvéru IAR
Kapitola 4 Generovanie funkcie oneskorenia
Poznámka: Predvolený interný kryštálový oscilátor je 16 MHz .
Kapitola 5 Hodiny CC2530 Úvod
Zavedenie hodinového signálu: Za normálnych okolností potrebuje CC250 vysokofrekvenčný hodinový signál a nízkofrekvenčný hodinový signál. Medzi nimi sa vysokofrekvenčný hodinový signál dodáva hlavne do CPU, aby sa zabezpečila prevádzka programu, zatiaľ čo nízkofrekvenčný hodinový signál sa dodáva hlavne do periférnych zariadení na čipe, ako je watchdog a časovač vypnutia. Vysokofrekvenčný hodinový signál má dva zdroje: 16M RC obvod vo vnútri čipu a druhý je externý 32M kremenný kryštálový oscilátor. Informácia o nízkofrekvenčných hodinách má tiež dva zdroje: jedným je 32K RC obvod vo vnútri čipu, a druhý je externý 32,768K Opatrenia pre kryštálový oscilátor: 1. Keď je čip CC2530 štandardne zapnutý, dva interné RC obvody sa používajú ako vysokofrekvenčné a nízkofrekvenčné zdroje hodín. 2. Keď používate sériový port a bezdrôtovú komunikáciu, musíte použiť 32M kryštálový kryštálový oscilátor ako zdroj vysokofrekvenčných hodín. Vlastnosti vysokofrekvenčných zdrojov hodín: Dva vysokofrekvenčné hodinové zdroje môžu začať generovať vysokofrekvenčné hodinové signály súčasne, zatiaľ čo dva nízkofrekvenčné hodinové zdroje môžu mať iba jeden hodinový zdroj, ktorý začne oscilovať v určitom čase, a tento zdroj hodín sa dodáva k CC2530. Kroky na prepnutie zdroja vysokofrekvenčných hodín systému: 1. Nechajte dva zdroje vysokofrekvenčných hodín začať oscilovať 2. Počkajte, kým cieľový zdroj hodín začne oscilovať a stabilizuje sa 3. Oneskorte krátky časový úsek 63us 4. Výstup bez frekvenčného delenia 5. Vyberte cieľový zdroj vysokofrekvenčných hodín Ako hlavné hodiny systému 6 potvrďte, či aktuálne pracovné systémové hodiny sú zvolené vysokofrekvenčné hodiny, register zahŕňa: SLEEPCMD SLEEPSTA CLKCONCMD CLKCONSTA podrobná obsluha: 7 , nech je druhý bit SLEEPCMD 0 8, šiesty bit registra SLEEPPSIA Bit 1 znamená, že zdroj hodín je stabilný 9, oneskorenie nad 63us 10, žiadny výstup frekvenčného delenia: nastavte tretí bit registra CLKCONCMD na 000 11, vymazať šiesty bit registra CLKCONCMD na 0, nastavte 32M ako hlavné hodiny systému 12, šiesty bit čítacieho registra CLKCONSTA je 0, čo naznačuje, že aktuálny 32M hodinový zdroj bol použitý ako hlavné hodiny aktuálneho systému a program môže bežať smerom nadol
1. Zavedenie režimu nízkej spotreby
Nízka spotreba energie je funkcia, ktorú je potrebné zvážiť pri prenosných a spotrebných zariadeniach, najmä pri zariadeniach napájaných z batérie. Veľmi dôležité je pochopiť spotrebu energie, ktorá priamo ovplyvňuje pohotovostný čas. Napríklad: naše súčasné mobilné telefóny, tablety, firemné notebooky, bezdrôtové náhlavné súpravy a iné spotrebiteľské zariadenia, ako aj inteligentné poklopy, inteligentné pouličné osvetlenie a tieto zariadenia internetu vecí, ktoré nie sú zapojené do elektrickej siete.
CC2530 podporuje konfiguráciu režimu nízkej spotreby energie, ktorú je možné nakonfigurovať úvodom kapitoly registra napájania. Konfigurácia niekoľkých režimov nízkej spotreby CC2530 je predstavená nižšie. Snímka obrazovky pochádza z čínskeho údajového listu CC2530.
2. Nakonfigurujte režim nízkej spotreby energie
Prevádzka s nízkou spotrebou energie je povolená prostredníctvom rôznych prevádzkových režimov (režimy výkonu). Rôzne prevádzkové režimy sa označujú ako aktívny režim, režim nečinnosti a napájanie.
Režimy 1, 2 a 3 (PM1-PM3). Prevádzka s mimoriadne nízkou spotrebou energie sa dosiahne vypnutím napájacích blokov, aby sa predišlo statickej (únikovej) spotrebe energie, a použitím hodinového hradlovania a vypnutím oscilátorov na zníženie dynamickej spotreby energie.
3. Príklad kódu
3.1 Vzorový kód 1
/******************************************************************************
利用睡眠定时器,实现低功耗
******************************************************************************/
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
#define CC2530_Delay 15000
#define RLED P1_0
#define YLED P1_1 //LED灯控制IO口定义
void CC2530_Delay(void);
void CC2530_Init_IO_AND_LED(void);
void CC2530_SysPowerMode(uchar sel);
/****************************************************************
延时函数
****************************************************************/
void CC2530_Delay(void)
{
uint i;
for(i = 0;i<CC2530_Delay;i++);
for(i = 0;i<CC2530_Delay;i++);
for(i = 0;i<CC2530_Delay;i++);
for(i = 0;i<CC2530_Delay;i++);
for(i = 0;i<CC2530_Delay;i++);
}
/****************************************************************
系统工作模式选择函数
* para1 0 1 2 3
* mode PM0 PM1 PM2 PM3
****************************************************************/
void CC2530_SysPowerMode(uchar mode)
{
uchar i,j;
i = mode;
if(mode<4)
{
SLEEPCMD &= 0xFC;
SLEEPCMD |= i; //设置系统睡眠模式
for(j=0;j<4;j++);
PCON = 0x01; //进入睡眠模式
}
else
{
PCON = 0x00; //系统唤醒
}
}
/****************************************************************
LED控制IO口初始化函数
****************************************************************/
void CC2530_Init_IO_AND_LED(void)
{
P1DIR = 0X03;
RLED = 0;
YLED = 0;
//P0SEL &= ~0X32;
//P0DIR &= ~0X32;
P0INP &= ~0X32; //设置P0口输入电路模式为上拉/下拉
P2INP &= ~0X20; //选择上拉
P0IEN |= 0X32; //P01设置为中断方式
PICTL |= 0X01; //下降沿触发
EA = 1;
IEN1 |= 0X20; // 开P0口总中断
P0IFG |= 0x00; //清中断标志
};
/****************************************************************
主函数
****************************************************************/
void main()
{
uchar count = 0;
CC2530_Init_IO_AND_LED();
RLED = 1 ; //开红色LED,系统工作指示
CC2530_Delay(); //延时
while(1)
{
YLED = !YLED;
RLED = 1;
count++;
if(count >= 20)
{
count = 0;
RLED = 0;
CC2530_SysPowerMode(3);
//10次闪烁后进入睡眠状态PM3
}
//CC2530_Delay();
CC2530_Delay();
//延时函数无形参,只能通过改变系统时钟频率或DEALY的宏定义
//来改变小灯的闪烁频率
};
}
/*****************************************
中断处理函数-系统唤醒
*****************************************/
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
if(P0IFG>0)
{
P0IFG = 0;
}
P0IF = 0;
CC2530_SysPowerMode(4);
}
3.2 Vzorový kód 2
/******************************************************************************
利用睡眠定时器实现低功耗
******************************************************************************/
#include <ioCC2530.h>
/*****************************************
//定义类型
*****************************************/
#define uchar unsigned char
#define uint unsigned int
#define RLED P1_0
#define GLED P1_1
#define CRYSTAL 0
#define RC 1
typedef unsigned char UINT8;
typedef unsigned char INT8U;
typedef unsigned short UINT16;
typedef unsigned short INT16U;
typedef unsigned long UINT32;
typedef unsigned long INT32U;
void CC2530_Set_ST_Period(uint sec);
void CC2530_Init_SLEEP_TIMER(void);
void CC2530_Delay(uint n);
void CC2530_LedGlint(void);
char LEDBLINK;
void CC2530_InitLEDIO(void)
{
P1DIR |= 0x03; //P10、P11定义为输出
RLED = 0;
GLED = 0;//LED灯初始化为关
}
/*****************************************
设定系统主时钟函数
*****************************************/
void SET_MAIN_CLOCK(source)
{
if(source)
{
CLKCONCMD |= 0x40; /*RC*/
while(!(CLKCONSTA &0X40)); /*待稳*/
}
else
{
CLKCONCMD &= ~0x47; /*晶振*/
while((CLKCONSTA &0X40)); /*待稳*/
}
}
/*****************************************
设定系统低速时钟函数
*****************************************/
void SET_LOW_CLOCK(source)
{
(source==RC)?(CLKCONCMD |= 0X80):(CLKCONCMD &= ~0X80);
}
/*********************************************************************
//主函数
*********************************************************************/
void main(void)
{
SET_MAIN_CLOCK(CRYSTAL);
SET_LOW_CLOCK(CRYSTAL);
CC2530_InitLEDIO();
LEDBLINK = 0;
RLED = 1;
GLED = 0;
CC2530_Init_SLEEP_TIMER();
CC2530_LedGlint();
CC2530_Set_ST_Period(8);
while(1)
{
if(LEDBLINK)
{
CC2530_LedGlint();
CC2530_Set_ST_Period(8);
GLED = !GLED;
LEDBLINK = 0;
}
CC2530_Delay(100);
}
}
/*****************************************
//初始化Sleep Timer
*****************************************/
void CC2530_Init_SLEEP_TIMER(void)
{
ST2 = 0X00;
ST1 = 0X0F;
ST0 = 0X0F;
EA = 1; //开中断
STIE = 1;
STIF = 0;
}
/*****************************************
//延时函数
*****************************************/
void CC2530_Delay(uint n)
{
uint jj;
for(jj=0;jj<n;jj++);
for(jj=0;jj<n;jj++);
for(jj=0;jj<n;jj++);
for(jj=0;jj<n;jj++);
for(jj=0;jj<n;jj++);
}
/*****************************************
//LED闪烁函数
*****************************************/
void CC2530_LedGlint(void)
{
uchar jj=10;
while(jj--)
{
RLED = !RLED;
CC2530_Delay(10000);
}
}
/*********************************************************************
//设置睡眠时间
*********************************************************************/
void CC2530_Set_ST_Period(uint sec)
{
UINT32 sleepTimer = 0;
sleepTimer |= ST0;
sleepTimer |= (UINT32)ST1 << 8;
sleepTimer |= (UINT32)ST2 << 16;
sleepTimer += ((UINT32)sec * (UINT32)32768);
ST2 = (UINT8)(sleepTimer >> 16);
ST1 = (UINT8)(sleepTimer >> 8);
ST0 = (UINT8) sleepTimer;
}
#pragma vector = ST_VECTOR
__interrupt void ST_ISR(void)
{
STIF = 0;
LEDBLINK = 1;
}