发表于:2009/4/14 10:31:56
#0楼
ARM微控制器如何控制ZigBee模块
LBee系列模块是基于802.15.4/ZigBee标准生产短、中、长距离无线ZigBee网络低功耗模块。模块使用2.4GHz的ISM频段。利用该模块用户可以快速度和低成本将嵌入式无线ZigBee技术嵌入其应用系统中。并可免去射频设计阶段复杂的、ZigBee无线网络高成本开发和测试过程。
LBee系列模块采用的ZigBee协议为ZigBee2006,支持网状、星状、串状等多种网络拓扑。
LBee系列模块集成了所有的射频组件、并已实现软件升级、参数设置。对于想将嵌入式无线ZigBee技术嵌入其产品的开发商而言,需要做的就是连接电源与串口或IO口。
目前已经3种不同型号的模块,这四款模块都可以通过指令集设定通讯距离、信道、网络参数,低功耗参数(工作模式)、收发数据包、IO 控制、AD采集、PWM 输出、定位等功能。
ARM微控制器技术在SOC技术的推动下,不断向高集成度,低功耗,低价格的方向,发起冲击,已经开始渗透到我们生活的方方面面,渗透到工业控制,汽车电子,数字家庭等广阔的应用空间。 将这些新的32 位微控制器和目前高速发展的短距离无线通讯和无线网络技术相结合, 是嵌入式产业的新潮流。
无线龙公司精心开发的这套低成本,微功耗嵌入式无线开发套件ARMRF2-STR911,由多个普通AA 电池供电的微功耗ARM9微控制主板和用户选择的CC2480/CC1100/CC2430等无线和无线网络模块组成,具有全部实现ZigBee无线组网的源代码,无线传感器表演源代码等功能,全部软件运行在ucOS-II下,支持GUI,具有128X8图形OLED显示,多种传感器等,并配备U-LINK兼容在线仿真器,支持KEIL MDK编译和调试。
ARMRF2-STR911嵌入式无线开发套件完美地将嵌入式技术与无线/网络技术结合起来,以“让人人都能买得起、人人都能学好嵌入式无线ARM”为原则走向学习、实验与开发“三合一”市场,通过完善的资料降低开发难度,讲座、论坛、电话、邮箱等方式建立畅通的技术支持渠道,用最便捷的方式引导初学者成才,我们提出口号“通往无线桥梁、无线世界先锋”。
ARMRF2-STR911能够轻松完成ARM 基础,ucOS-II/GUI应用入门和ZigBee无线网络等全部学习开发任务,让你用最低成本,完成你的ARM 32位嵌入式学习和嵌入式无线学习开发之旅。
ARMRF2-STR911嵌入式无线开发板无线接口
LBee系列ZigBee模块功能引脚
您只要会用单片机串口通讯;
或您会控制单片机IO 口;
或您会使用串口软件。
那您就可以使用ARM微控制器来控制我们的LBee 系统ZigBee网络模块了。
配置ZigBee模块流程图
/******************************************************************************
* 功能:ARM微控制器控制ZigBee模块LED灯
*******************************************************************************/
#include <stdio.h>
#include "91x_lib.h"
#include "lcd128_64.h"
#include "timer.h"
#include "key.h"
#include "menu.h"
u8 TxBuffer【】 = "UART Example1: UART1 \n\r";
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStruct;
extern const u8 BMP112X64【】;
extern const u8 FONTFW260【】;
void DelayLong(u16 Num);
/******************************************************************************
** 函数名称:DelayLong()
** 函数功能:长延时
** 入口参数:Num 延时的时间常数
*******************************************************************************/
void Delay(u16 Num)
{
u16 i;
for(i = 0;i < Num;i++);
}
/******************************************************************************
** 函数名称:DelayLong()
** 函数功能:长延时
** 入口参数:Num 延时的时间常数
*******************************************************************************/
void DelayLong(u16 Num)
{
u16 i,j;
for(i = 0;i < Num;i++)
for(j = 0;j < 65535;j++);
}
/******************************************************************************
** 函数名称:MIS_Configuration(void)
** 函数功能:MIS配置
*******************************************************************************/
void MIS_Configuration(void)
{
SCU_APBPeriphClockConfig(__ADC, ENABLE); /* Enable the clock for the ADC */
SCU_APBPeriphClockConfig(__GPIO4, ENABLE); /* Enable the clock for the GPIO4 */
SCU_APBPeriphClockConfig(__GPIO5, ENABLE); /* Enable the clock for the GPIO4 */
GPIO_DeInit(GPIO4); /* GPIO4 Deinitialization */
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStruct.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStruct.GPIO_Alternate = GPIO_OutputAlt1;
GPIO_Init (GPIO4, &GPIO_InitStruct);
GPIO_WriteBit(GPIO4,GPIO_Pin_7,Bit_RESET);
GPIO_DeInit(GPIO6); /* GPIO6 Deinitialization */
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStruct.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStruct.GPIO_Alternate = GPIO_OutputAlt1;
GPIO_Init (GPIO6, &GPIO_InitStruct);
GPIO_WriteBit(GPIO6,GPIO_Pin_7,Bit_RESET);
ADC_DeInit(); /* ADC Deinitialization */
GPIO_ANAPinConfig(GPIO_ANAChannel4, ENABLE);
ADC_StructInit(&ADC_InitStructure);
ADC_InitStructure.ADC_Channel_4_Mode = ADC_NoThreshold_Conversion;
ADC_InitStructure.ADC_Select_Channel = ADC_Channel_4;
ADC_InitStructure.ADC_Scan_Mode = DISABLE;
ADC_InitStructure.ADC_Conversion_Mode = ADC_Single_Mode; //ADC_Continuous_Mode
ADC_Init(&ADC_InitStructure); /* Configure the ADC */
ADC_Cmd(ENABLE);
}
void UART_INT(void)
{
UART_InitTypeDef UART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
SCU_APBPeriphClockConfig(__UART1, ENABLE); /* Enable the UART0 Clock */
SCU_APBPeriphClockConfig(__GPIO3, ENABLE); /* Enable the GPIO3 Clock */
SCU_APBPeriphClockConfig(__GPIO4, ENABLE);
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1 ;
GPIO_Init (GPIO3, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Disable;
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2 ;
GPIO_Init (GPIO3, &GPIO_InitStructure);
GPIO_InitStruct.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStruct.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStruct.GPIO_Alternate = GPIO_OutputAlt1;
GPIO_Init (GPIO4, &GPIO_InitStruct);
GPIO_WriteBit(GPIO4,GPIO_Pin_3,Bit_RESET);
UART_InitStructure.UART_WordLength = UART_WordLength_8D;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No;
UART_InitStructure.UART_BaudRate = 9600;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Tx_Rx;
UART_InitStructure.UART_FIFO = UART_FIFO_Enable;
UART_InitStructure.UART_TxFIFOLevel = UART_FIFOLevel_1_2;
UART_InitStructure.UART_RxFIFOLevel = UART_FIFOLevel_1_2;
UART_DeInit(UART1);
UART_Init(UART1, &UART_InitStructure);
UART_Cmd(UART1, ENABLE);
}
int main()
{
#ifdef DEBUG
debug();
#endif
key_int();
InitLcd();
LoadICOWANT(4,(void *)BMP112X64);
DelayLong(10);
LoadICOWANT(3,(void *)FONTFW260);
DelayLong(70);
UART_INT();
ClearScreen();
while(1)
{
menu_disp();
}
}
上海随乐电子科技有限公司 QQ:741066980 TEL:15026472787
LBee系列模块是基于802.15.4/ZigBee标准生产短、中、长距离无线ZigBee网络低功耗模块。模块使用2.4GHz的ISM频段。利用该模块用户可以快速度和低成本将嵌入式无线ZigBee技术嵌入其应用系统中。并可免去射频设计阶段复杂的、ZigBee无线网络高成本开发和测试过程。
LBee系列模块采用的ZigBee协议为ZigBee2006,支持网状、星状、串状等多种网络拓扑。
LBee系列模块集成了所有的射频组件、并已实现软件升级、参数设置。对于想将嵌入式无线ZigBee技术嵌入其产品的开发商而言,需要做的就是连接电源与串口或IO口。
目前已经3种不同型号的模块,这四款模块都可以通过指令集设定通讯距离、信道、网络参数,低功耗参数(工作模式)、收发数据包、IO 控制、AD采集、PWM 输出、定位等功能。
ARM微控制器技术在SOC技术的推动下,不断向高集成度,低功耗,低价格的方向,发起冲击,已经开始渗透到我们生活的方方面面,渗透到工业控制,汽车电子,数字家庭等广阔的应用空间。 将这些新的32 位微控制器和目前高速发展的短距离无线通讯和无线网络技术相结合, 是嵌入式产业的新潮流。
无线龙公司精心开发的这套低成本,微功耗嵌入式无线开发套件ARMRF2-STR911,由多个普通AA 电池供电的微功耗ARM9微控制主板和用户选择的CC2480/CC1100/CC2430等无线和无线网络模块组成,具有全部实现ZigBee无线组网的源代码,无线传感器表演源代码等功能,全部软件运行在ucOS-II下,支持GUI,具有128X8图形OLED显示,多种传感器等,并配备U-LINK兼容在线仿真器,支持KEIL MDK编译和调试。
ARMRF2-STR911嵌入式无线开发套件完美地将嵌入式技术与无线/网络技术结合起来,以“让人人都能买得起、人人都能学好嵌入式无线ARM”为原则走向学习、实验与开发“三合一”市场,通过完善的资料降低开发难度,讲座、论坛、电话、邮箱等方式建立畅通的技术支持渠道,用最便捷的方式引导初学者成才,我们提出口号“通往无线桥梁、无线世界先锋”。
ARMRF2-STR911能够轻松完成ARM 基础,ucOS-II/GUI应用入门和ZigBee无线网络等全部学习开发任务,让你用最低成本,完成你的ARM 32位嵌入式学习和嵌入式无线学习开发之旅。
ARMRF2-STR911嵌入式无线开发板无线接口
LBee系列ZigBee模块功能引脚
您只要会用单片机串口通讯;
或您会控制单片机IO 口;
或您会使用串口软件。
那您就可以使用ARM微控制器来控制我们的LBee 系统ZigBee网络模块了。
配置ZigBee模块流程图
/******************************************************************************
* 功能:ARM微控制器控制ZigBee模块LED灯
*******************************************************************************/
#include <stdio.h>
#include "91x_lib.h"
#include "lcd128_64.h"
#include "timer.h"
#include "key.h"
#include "menu.h"
u8 TxBuffer【】 = "UART Example1: UART1 \n\r";
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStruct;
extern const u8 BMP112X64【】;
extern const u8 FONTFW260【】;
void DelayLong(u16 Num);
/******************************************************************************
** 函数名称:DelayLong()
** 函数功能:长延时
** 入口参数:Num 延时的时间常数
*******************************************************************************/
void Delay(u16 Num)
{
u16 i;
for(i = 0;i < Num;i++);
}
/******************************************************************************
** 函数名称:DelayLong()
** 函数功能:长延时
** 入口参数:Num 延时的时间常数
*******************************************************************************/
void DelayLong(u16 Num)
{
u16 i,j;
for(i = 0;i < Num;i++)
for(j = 0;j < 65535;j++);
}
/******************************************************************************
** 函数名称:MIS_Configuration(void)
** 函数功能:MIS配置
*******************************************************************************/
void MIS_Configuration(void)
{
SCU_APBPeriphClockConfig(__ADC, ENABLE); /* Enable the clock for the ADC */
SCU_APBPeriphClockConfig(__GPIO4, ENABLE); /* Enable the clock for the GPIO4 */
SCU_APBPeriphClockConfig(__GPIO5, ENABLE); /* Enable the clock for the GPIO4 */
GPIO_DeInit(GPIO4); /* GPIO4 Deinitialization */
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStruct.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStruct.GPIO_Alternate = GPIO_OutputAlt1;
GPIO_Init (GPIO4, &GPIO_InitStruct);
GPIO_WriteBit(GPIO4,GPIO_Pin_7,Bit_RESET);
GPIO_DeInit(GPIO6); /* GPIO6 Deinitialization */
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStruct.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStruct.GPIO_Alternate = GPIO_OutputAlt1;
GPIO_Init (GPIO6, &GPIO_InitStruct);
GPIO_WriteBit(GPIO6,GPIO_Pin_7,Bit_RESET);
ADC_DeInit(); /* ADC Deinitialization */
GPIO_ANAPinConfig(GPIO_ANAChannel4, ENABLE);
ADC_StructInit(&ADC_InitStructure);
ADC_InitStructure.ADC_Channel_4_Mode = ADC_NoThreshold_Conversion;
ADC_InitStructure.ADC_Select_Channel = ADC_Channel_4;
ADC_InitStructure.ADC_Scan_Mode = DISABLE;
ADC_InitStructure.ADC_Conversion_Mode = ADC_Single_Mode; //ADC_Continuous_Mode
ADC_Init(&ADC_InitStructure); /* Configure the ADC */
ADC_Cmd(ENABLE);
}
void UART_INT(void)
{
UART_InitTypeDef UART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
SCU_APBPeriphClockConfig(__UART1, ENABLE); /* Enable the UART0 Clock */
SCU_APBPeriphClockConfig(__GPIO3, ENABLE); /* Enable the GPIO3 Clock */
SCU_APBPeriphClockConfig(__GPIO4, ENABLE);
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1 ;
GPIO_Init (GPIO3, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Disable;
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2 ;
GPIO_Init (GPIO3, &GPIO_InitStructure);
GPIO_InitStruct.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStruct.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStruct.GPIO_Alternate = GPIO_OutputAlt1;
GPIO_Init (GPIO4, &GPIO_InitStruct);
GPIO_WriteBit(GPIO4,GPIO_Pin_3,Bit_RESET);
UART_InitStructure.UART_WordLength = UART_WordLength_8D;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No;
UART_InitStructure.UART_BaudRate = 9600;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Tx_Rx;
UART_InitStructure.UART_FIFO = UART_FIFO_Enable;
UART_InitStructure.UART_TxFIFOLevel = UART_FIFOLevel_1_2;
UART_InitStructure.UART_RxFIFOLevel = UART_FIFOLevel_1_2;
UART_DeInit(UART1);
UART_Init(UART1, &UART_InitStructure);
UART_Cmd(UART1, ENABLE);
}
int main()
{
#ifdef DEBUG
debug();
#endif
key_int();
InitLcd();
LoadICOWANT(4,(void *)BMP112X64);
DelayLong(10);
LoadICOWANT(3,(void *)FONTFW260);
DelayLong(70);
UART_INT();
ClearScreen();
while(1)
{
menu_disp();
}
}
上海随乐电子科技有限公司 QQ:741066980 TEL:15026472787