Download presentation
Presentation is loading. Please wait.
1
任务三 无线串口通信
2
目 录 一、实训目的 二、实训内容 三、实训原理 四、实训步骤
3
实训目的 通过本实训,使学生了解BasicRF Layer工作机制;熟练新建立BasicRF项目项工程;了解basicrf、board、common等驱动文件的作用;理解串口读写函数;理解发送地址和接收地址、PAN_ID、RF_CHANNEL等概念;学会使用CC2530建立无线串口通信方法。
4
目 录 一、实训目的 二、实训内容 三、实训原理 四、实训步骤
5
实训内容 以Basic RF无线点对点传输协议为基础,采用2个ZigBee模块(当做节点1和节点2),用一根串口线把节点1与PC机连接起来。再用一根串口线把节点2与PC机相连。打开节点1和节点2对应电脑上的的串口调试软件,设置波特率38400bps、数据位8等参数。在节点1的串口调试软件上输入“Hello!你叫什么名字?”,点击发送;则在节点2的串口调试软件上就显示“Hello! 你叫什么名字?”信息,同时要求在节点2上回复“Hello! 你叫张三”。回复的信息要求在节点1上能显示,如此像聊天软件一样进行信息的收和发,实现无线串口通信。
6
目 录 一、实训目的 二、实训内容 三、实训原理 四、实训步骤
7
实训原理 3.1 Basic RF无线发送与接收 详见实训2。 3.2 串口数据发送与接收
串口数据发送:通过创建一个buffer,把数据放入其中,然后再调用halUartWrite()函数发送数据。 串口数据接收:通过调用RecvUartDate()函数来接收数据,并以数据长度来判断是否有收到数据。
8
目 录 一、实训目的 二、实训内容 三、实训原理 四、实训步骤
9
第一步,新建工程和程序文件,添加头文件。
1.复制库文件。将CC2530_lib文件夹复制到该任务的工程文件夹内,即“D:\ZigBee\任务2.2 无线串口通信”内(可以放在其它盘内)。并在该工程文件夹内新建一个Project文件夹,用于存放工程文件。 2.新建工程。具体方法参照实训1。并在工程中新建App、basicrf、board、common、utils等5个组,把各文件夹中的“xx.c”文件添加到对应的文件夹中。
10
3. 新建程序文件。新源程序文件,将其命名为uartRF. c,保存在D:\ZigBee\任务2
3.新建程序文件。新源程序文件,将其命名为uartRF.c,保存在D:\ZigBee\任务2.2 无线串口通信\Project文件夹中。并将该文件添加到工程中的App文件夹中。 4.为工程添加头文件。点击IAR菜单中的【Project】->【Options…】,在弹出对话框中选择“C/C++ Compiler”,然后选择“Preproce”选项卡,并在“additional include directories:”中输入头文件的路径,如图3.1所示。然后点击【OK】。
11
图3.1 为工程添加头文件
12
注意: $PROJ_DIR$\ 即你当前工作的workspace的目录。..\表示对应目录的上一层。 例如:$TOOLKIT_DIR$\INC\ 和$TOOLKIT_DIR$\INC\CLIB\,都表示当前工作的workspace的目录。$PROJ_DIR$\ ..\inc 表示你的WORKSPACE目录上一层的INC目录。 第二步,配置工程。 点击IAR菜单中的【Project】->【Options…】,分别对General Options、Linker和Debugger三项进行配置。
13
图3.2 General Options配置
14
1. General Options配置。选中“Target”选项卡,在Device栏内选择“CC2530F256
1. General Options配置。选中“Target”选项卡,在Device栏内选择“CC2530F256.i51”(路径:C:\…\8051\config\devices\Texas Instruments)。其它设置如图3.2所示。 2. Linker配置。选中“Config”选项卡,勾选“Overide default”,并在该栏内选择“lnk51ew_CC2530F256_banked.xcl”配置文件,其路径:C:\…\8051\config\devices\Texas Instruments。
15
3.Debugger配置。选中“Step”选项卡,在“Driver”栏内选择“Texas Instruments”;在“Device Description file”栏内,勾选“Overide default”,并在该栏内选择“io8051.ddf”配置文件,其路径:C:\…\8051\config\devices\_generic。如图3.3所示。
16
图3.3 Debugger配置
17
第三步,编写程序。 由于程序很长,只能对关键部分的程序进行分析。详细见uartRF.c文件。 /********************点对点通讯地址设置**********************/ #define RF_CHANNEL // 频道 11~26 #define PAN_ID x //网络id //#define MY_ADDR x //模块A的地址 //#define SEND_ADDR 0x //模块A发送模块B的地址 #define MY_ADDR x //模块B的地址 #define SEND_ADDR x //模块B发送模块A的地址 /*********************************************************************/
18
void main(void) { uint16 len = 0; halBoardInit(); //模块相关资源的初始化 ConfigRf_Init(); //无线收发参数的配置初始化 while(1) { len = RecvUartData(); // 接收串口数据 if(len > 0) { halLedToggle(3); // LED灯取反,无线发送指示 basicRfSendPacket(SEND_ADDR, uRxData,len); //把串口收到的数据,通过ZigBee发送出去 } if(basicRfPacketIsReady()) //查询是否有新的无线数据
19
{ halLedToggle(4); // LED灯取反,无线接收指示 len = basicRfReceive(pRxData, MAX_RECV_BUF_LEN, NULL); //接收无线数据 halUartWrite(pRxData,len); //接收到的无线发送到串口数 }
20
第四步,下载程序。 1.为无线模块A下载程序。注释掉上述程序的第6和第7行,重新编译程序无误后,下载到无线模块A中。 2.为无线模块B下载程序。注释掉上述程序的第4和第5行,重新编译程序无误后,下载到无线模块B中。 注意:如果有多组同学同时进行实训,每组间的RF_CHANNEL和PAN_ID至少要有一个参数不同。如果多组是间的RF_CHANNEL和PAN_ID值都一样,则会造成信号串扰。
21
第五步,运行程序。 1.分别把节点1和节点2接到PC机的串口,打开两个串口调试软件,把串口的波特率设置为38400;再给两个模块上电。 图3.4 串口调试窗口1
22
2.在两个串口调试软件上,发送不同的信息,并能显示对方发送的信息。如图3.4和3.5所示。
图3.5 串口调试窗口2(USB转串口)
23
谢谢!
Similar presentations