CC2430学习之一点对点通信.docx
- 文档编号:30254260
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:12
- 大小:44.56KB
CC2430学习之一点对点通信.docx
《CC2430学习之一点对点通信.docx》由会员分享,可在线阅读,更多相关《CC2430学习之一点对点通信.docx(12页珍藏版)》请在冰豆网上搜索。
CC2430学习之一点对点通信
CC2430学习之一__点对点通信
2010.04.21
voidmain(void)
{
SET_MAIN_CLOCK_SOURCE(CRYSTAL);
RFPWR=0x04;
while(RFPWR&0x10);
initUART();//初始化串口
IO_DIR_PORT_PIN(0,5,IO_OUT);//SetP0_5tooutput
IO_DIR_PORT_PIN(1,3,IO_OUT);//
IO_DIR_PORT_PIN(1,2,IO_IN);//SetP1_2toinput
P0_5=1;
P1_3=0;
rf_test_main();//进入无线部分
}
//选择相应的应用
#ifdefCOMPLETE_APPLICATION
voidrf_test_main(void){
#else
voidmain(void){
#endif
INT_GLOBAL_ENABLE(INT_ON);//Globalinterruptenables
#ifdefRX
{
myAddr=ADDRESS_0;
remoteAddr=ADDRESS_1;
initRfTest();
receiveMode();
}
#else//TX时
{
myAddr=ADDRESS_1;
remoteAddr=ADDRESS_0;
initRfTest();
contionuousMode();//发送数据
}
#endif
}
//发送子函数
voidcontionuousMode(void)
{
BOOLres;
BYTEsendBuffer[]="Hello";//要发送的数据
while
(1)
{
GLED=LED_OFF;//绿灯灭
YLED=LED_ON;//发送前,黄灯亮
//TRUEifthesentpacketisackedbytherecipientandfalseotherwise.
res=radioSend(sendBuffer,sizeof(sendBuffer),remoteAddr,DO_NOT_ACK);
halWait(200);
YLED=LED_OFF;//发送后,黄灯灭
halWait(200);
if(res==TRUE)//发送成功
{
GLED=LED_ON;//绿灯亮
halWait(200);
}
else//发送不成功
{
GLED=LED_OFF;//绿灯灭
halWait(200);
}
}
}
//接收子函数
voidreceiveMode(void)
{
BYTE*receiveBuffer;
BYTElength;
BYTEres;
BYTEsender;
while
(1)
{
YLED=LED_ON;//接收时黄灯亮
//TRUEifapackethasbeenreceivedandFALSEifnopacket
//hasbeenreceivedwithinthetimeoutperiod.
res=radioReceive(&receiveBuffer,&length,RECEIVE_TIMEOUT,&sender);
YLED=LED_OFF;//结束后黄灯灭
if(res==TRUE)//接收成功
{
GLED=LED_ON;//绿灯亮
halWait(200);//延迟200秒
}
else//接收失败
{
GLED=LED_OFF;//绿灯灭
halWait(200);//延迟200秒
}
GLED=LED_OFF;//结束一次接收,绿灯灭
}
}
点对点通信(CC2430)
参考小峰
app_ex_main.c
/*****添加开串口中断函数和串口设置函数***/
voidUARTxISRopen(void)//开串口中断函数
{
U0CSR|=0x40;//receiverenable;接收使能
IEN0|=0X04;//开串口接收中断'URX0IE=1',
}
voidSET_UART0_ISR(void)//串口设置函数
{
U0CSR|=0xd0;//11010000;UARTmode;receiverenable;Bytereceived
//withincorrectstopbitlevel
U0UCR|=0x02;//UARTstopbitlevel:
Highstopbit
}
voidmain(void)
{
SET_MAIN_CLOCK_SOURCE(CRYSTAL);
RFPWR=0x04;
while(RFPWR&0x10);
initUART();
UARTxISRopen();//###
IEN0|=0x80;//###
IO_DIR_PORT_PIN(0,0,IO_OUT);
IO_DIR_PORT_PIN(0,5,IO_OUT);
//IO_DIR_PORT_PIN(1,3,IO_OUT);
//IO_DIR_PORT_PIN(1,2,IO_IN);
P1SEL=0x00;//###
P1DIR=0xff;//###
P0_5=1;
P1_3=0;
rf_test_main();
}
rf_test.c
/****添加串口发送函数****************/
/*
voidtxdata(BYTE*dat)//###串口发送函数:
字符串,字符格式
{
while(*dat)
{
U0DBUF=*dat++;
while(!
UTX0IF);
UTX0IF=0;
}
}
*/
voidtxdata_1(BYTEdat)//###串口发送函数:
单个字符
{
U0DBUF=dat;
while(!
UTX0IF);
UTX0IF=0;
}
voidUartTX_Send_String(BYTE*Data,intlen)//###串口发送函数:
字符串
{
intj;
for(j=0;j { U0DBUF=*Data++; while(UTX0IF==0); UTX0IF=0; } } /****************************************************************************** *@fnrf_test_main * *@brief *Mainfunction. * *Parameters: * *@paramvoid * *@returnvoid * ******************************************************************************/ #ifdefCOMPLETE_APPLICATION voidrf_test_main(void){ #else voidmain(void){ #endif INT_GLOBAL_ENABLE(INT_ON); #ifdefined(RX)//######预编译选项 if {//接收 myAddr=ADDRESS_0; remoteAddr=ADDRESS_1; initRfTest(); receiveMode(); } #else {//发射 myAddr=ADDRESS_1; remoteAddr=ADDRESS_0; initRfTest(); contionuousMode(); } #endif } 由以上函数指向接收和发送模式 /********************************************** *@fnreceiveMode * *@brief *Functionforreceivingdata. * *Parameters: * *@paramvoid * *@returnvoid * ***********************************************/ voidreceiveMode(void) { BYTE*receiveBuffer; BYTElength; BYTEres; BYTEsender; while (1) { YLED=LED_ON;//黄亮 res=radioReceive(&receiveBuffer,&length,RECEIVE_TIMEOUT,&sender); YLED=LED_OFF;//黄灭 //res=TRUE;//###个人添加 if(res==TRUE) { GLED=LED_ON;//红亮 halWait(200); //txdata_1('x'); UartTX_Send_String(receiveBuffer,length);//###把接收到的数据通过串口送PC txdata_1('\n');//###换行符 } else { GLED=LED_OFF;//红灯—原: OFF halWait(200); } GLED=LED_OFF;//红灯—原: OFF } } /****************************************************************************** *@fncontionuousMode * *@brief *Functionfortransferringpacketsuntilstoppedbyuser. * *Parameters: * *@paramvoid * *@returnvoid * ******************************************************************************/ voidcontionuousMode(void) { BOOLres; BYTEsendBuffer[]="hello! mynameissendoc"; while (1) { GLED=LED_OFF; YLED=LED_ON; res=radioSend(sendBuffer,sizeof(sendBuffer),remoteAddr,DO_NOT_ACK); halWait(200); YLED=LED_OFF; halWait(200); if(res==TRUE) { GLED=LED_ON; halWait(200); } else { GLED=LED_OFF; halWait(200); } } } //###最后添加串口接收中断函数 #pragmavector=URX0_VECTOR __interruptvoidURX0_ISR(void) { unsigneduarttemp; uarttemp=U0DBUF;//串口调试软件发送的数据给uarttempuar U0DBUF=uarttemp;//把接收到的数据返送串口软件显示 } 挂图: 注: 1。 workspace中原来有Debug和Release,添加TX和RX,其中RX添加预编译选项RX。 详见条件编译选项的添加(workspace) 2。 实验中消除原来的warning,详见IAR“Warning[Pe167]” 3。 发射板子多复位几下 这个不好解释啊,里面定义了很多东西,比如协议栈各个层的程序。 APP: 应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。 HAL: 硬件层目录,包含有与硬件相关的配置和驱动及操作函数。 MAC: MAC层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件。 MT: 实现通过串口可控各层,于各层进行直接交互。 NWK: 网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS层库的函数接口 OSAL: 协议栈的操作系统。 Profile: AF层目录,包含AF层处理函数文件。 Security: 安全层目录,安全层处理函数,比如加密函数等。 Tools: 工程配置目录,包括空间划分及ZStack相关配置信息。 ZDO: ZDO目录。 ZMac: MAC层目录,包括MAC层参数配置及MAC层LIB库函数回调处理函数。 ZMain: 主函数目录,包括入口函数及硬件配置文件。 Output: 输出文件目录,这个EW8051IDE自动生成的。 当然里面还有自己的通信程序,这得一步步自己慢慢的看。 App_Ex应用程序culcul库hal硬件抽象层tool工具output输出文件 2.6.1、射频初始化函数 BOOLsppInit(UINT32frequency,BYTEaddress) 功能描述: 初始化简单的数据包装协议SimplePacketProtocol(SPP),从DMA管理器申请两个DMA通道,用于分别从RxFIFO和TxFIFO传输数据。 定时器4管理器同样被设置,这个单元用于在数据包发送后接收器在一定时间内没有返回应答时产生中断。 无线部分配置为发送,工作在特定的频率,在发送时自动计算和插入和检查CRC值。 参数描述: UINT32frequency: RF的频率(kHz.); BYTEaddress: 节点地址 返回: 配置成功返回TRUE,失败返回FALSE 2.6.2、发送数据包函数 BYTEsppSend(SPP_TX_STRUCT*pPacketPointer) 功能描述: 发送length字节的数据(最多122),标志,目的地址,源地址在TxDMA通道传送有效载荷到TxFIFO前插入,如果期望应当,设置相应的标志。 参数: SPP_TX_STRUCT*pPacketPointer: 发送数据包头指针 返回: 发送成功返回TRUE,失败返回FALSE。 2.6.3、接收数据 voidsppReceive(SPP_RX_STRUCT*pReceiveData) 功能描述: 这个函数使能接收128字节,包括头和尾。 接收数据通过DMA传输到pReceiveData。 DMA装备同时接收开启。 接收数据将触发DMA,当所有的数据包接收并且移走,DMA产生一个中断同时运行以前定义的函数rxCallBack。 参数 SPP_TX_STRUCT*pPacketPointer: 接收数据包头指针 返回: 无 说明书里面都有你自己看看吧! !
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC2430 学习 之一 点对点 通信