实验7CC2530串口控制器编程.docx
- 文档编号:14537717
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:18
- 大小:991.60KB
实验7CC2530串口控制器编程.docx
《实验7CC2530串口控制器编程.docx》由会员分享,可在线阅读,更多相关《实验7CC2530串口控制器编程.docx(18页珍藏版)》请在冰点文库上搜索。
实验7CC2530串口控制器编程
实验7CC2530串口控制器编程
本实验完成时间:
第8周、第9周
一、实验目的
1、CC2530串口控制器的原理;
2、掌握CC2530串口控制器的编程步骤;
二、实验任务
从PC机上的串口调试助手(超级终端)输入的字符能够发送给CC2530,CC2530再把所接收到的字符“原路”回传给对方。
直观的效果:
当串口调试助手(超级终端)激活时,键盘上输入的字符能够在串口调试助手的窗口那个回显。
三、实验原理
1、何谓超级终端和串口调试助手
超级终端:
一个和uart串口相关联的窗口应用程序。
它能够从uart串口上所接收到的字符显示出来,同时当该窗口激活时能够把键盘所键入的字符从串口发送出去。
超级终端能够从串口收发字符成功的前提是串口通信双方所约定的收发格式一致。
它和一般所说的串口调试助手类似,但有区别:
超级终端不会以16进制的形式显示所接收的字符编码;
串口调试助手不会把键盘输入的字符实时从串口发送出去,需要点击手动发送。
串口调试助手:
桌面上有串口聊天助手,如果不能打开,可以如图1在S503的D盘/试验箱资料光盘/工具软件/串口工具和驱动/串口聊天助手,打开后如图2所示。
图1串口聊天助手位置
图2串口聊天助手界面图
2、实验室GEC-CC2530开发板的uart串口接口(USB转串口,红色圈圈)如图3:
图3单片机开发板的USB转串口
该接口和cc2530所连接的电路图如下:
由该图不难得知:
P0_3作为串口的发送管脚;
P0_2作为串口的接收管脚;
P0_5、P0_4作为硬件流控用的,一定要注意,我们平时见到的串口的交叉线都只用到了收、发、地三根线,所以在串口设置是都禁止硬件流控!
由此可见,GEC-CC2530所占的资源就是P0_3(发送管脚)、P0_2(接收管脚),更进一步结合CC230数据手册的GPIO设备管脚映射表分析:
可知:
GEC-CC2530串口——>P0_3(发送管脚)、P0_2(接收管脚)——>uart0
3、cc2530串口uart编程步骤
(1)总线初始化,相关SFR如下
PERCFGP2DIRPxSELUxCSR
2、数据链路格式化(数据位、停止位、校验位、波特率);
UxUCRUxGCRUxBAUD
波特率的计算:
在CC2530的时钟位高速时钟位32M时,我们可以按照下表进行配置:
3、读写串口收发寄存器
UxDBUF、RX_BYTE(UxCSR的第2位)、TX_BYTE(UxCSR的第1位)
RX_BYTE:
接收字节状态,0:
没有收到字节;1:
准备好接收字节
TX_BYTE:
传送字节状态,0:
字节没有被传送;1:
字节准备被传送
我们读取数据时,RX_BYTE置1,然后读UxDBuf;
我们发送数据时,TX_BYTE置1,且将准备传送的字节写入到UxDBUF;
四、实验步骤
1、领取单片机开发板,编写代码,先编译下载,如图4下载时需要接下载器,下载好之后,断开下载器和方口线,再将方口线直接接在单片机开发板的USB转串口上如图5,如果电源指示灯不亮,则将RST旁边的拨码开关打到OFF位置。
图4连接下载器图5和PC机进行串口通信
如图5连接好之后,打开设备管理器,通过设备管理器中查看COM口,查找自己是COM几。
一般方口线直接相连后,静待20S就会出现设备。
若直接将方口线接在单片机上,打开设备管理器发现出现如下图6的?
,则需要右键点击问号更新安装USB转串口的驱动。
此驱动需要下载:
ftp/教学软件/粤嵌zigbeeUSB转串口/,解压至当前文件夹下,右键更新驱动路径为选择刚刚解压的文件:
CH341SER。
更新安装驱动之后,出现如图7所示,比刚才多了一个COM3,则我们现在就是COM3口。
在串口助手上选择COM3口。
若不清楚自己刚才连上的是COM几,断开方口线,再重新连接方口线。
打开串口调试助手,设置好COM口,和波特率即可;
图6没有识别出USB转串口图7安装驱动后
编程实现:
使用cc2530的串口0来和PC机通信,通信格式为:
8位数据位、1位停止位、没有奇偶校验位、没有流控、波特率为115200;
(1)程序实现在串口调试助手上每隔0.5秒显示HELLOWORD!
(2)程序实现在串口调试助手上把键盘输入的字符回显出来
2、建立IAR工程,完善以下代码以实现实验任务:
程序实现在串口调试助手上大约每隔0.5秒显示HELLOWORD!
可参考课本P110,但不与课本上完全相同
第一题:
#include
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uint);
charTxdata[]="HELLOWORD!
!
";
voidset_clock_speed()//时钟初始化
{
//下面的代码是把系统的高速时钟设置为32M,请对为下三条句添加注释
CLKCONCMD&=~(1<<6);//
while(CLKCONSTA&(1<<6));//
CLKCONCMD&=~0X07;//
}
voiddelay(unsignedintcount)//延时函数
{
unsignedinti,j;
for(i=0;i for(j=0;j<10000;j++); } voiduart0_init()//串口初始化: 可参考课本P110,但不与课本上完全相同 {//补充代码实现初始化: USART0选择uart模式,管脚为P0(位置1),数据格式为8位数据位、1位停止位、没有校验位,波特率为115200,LSB发送模式,1为停止,0为起始 } voidmain() { set_clock_speed();//时钟初始化 uart0_init();//串口初始化 while (1) { intj; for(j=0;Txdata[j]! =’\0’;j++) {//下面三句实现串口发送,补充下面代码 U0DBUF=Txdata[j];//填充数据到串口数据寄存器 //通过测试TX_BYTE标志位是否为1等待字节发送完毕: //将TX_BYTE标志位清零 } //延时 } } 3、编译链接程序后下载到cc2530板子上,验证是否完成了显示任务,修改代码中的HELLOWORD! ! 为HELLOWORD! ! \r,编译、下载,观察运行结果; 再修改成HELLOWORD! ! \r\n观察运行结果; 方法: U0DBUF=Txdata[j]; while(UTX0IF==0); UTX0IF=0; 温馨提示: 上述代码中实现串口发送的3句代码可以换成以下方法,请测试并在课后多多思考: 以下内容为第9周实验内容: 4、建立IAR工程,程序实现在串口调试助手上把键盘输入的字符回显出来,完善以下代码以实现实验任务 第二题: #include voidset_clock_speed() { //下面的代码是把系统的高速时钟设置为32M,请大家通过查看手册尝试自己来写,不要抄袭 } voiduart0_init() {//USART0选择uart模式,管脚为P0,数据格式为8位数据位、1位停止位、没有校验位 //波特率为19200,LSB发送模式,1为停止,0为起始 //将串口0的位置选在P0口: PERCFG的第0位清0 //P0口的外设优先级控制设为串口0优先: P2DIR[7: 6]清0 //P0口的2、3管脚设为外设工作方式 //USART0工作的UART模式,接收使能 //据格式为8位数据位、1位停止位、没有校验位 //波特率baud_e的选择 //波特率设置 } voiduart0_send_byte(chartmp) { //将字节tmp从串口0发送出去 } charuart0_receive_byte(void) { //从串口0接收一个字节 } voidmain() {//补充完整 charbuf; set_clock_speed(); uart0_init(); while (1) { buf=//从串口0接收一个字符到buf; //把接收到的字符又给串口0发送回去 } } 5、编译链接程序后下载到cc2530板子上,验证是否完成了任务; 五、拓展实验 1.在上面的例子中我们定义了uart0_send_byte函数可以向串口发送一个字符,当然在此基础上我们可以实现如何向串口发送一个字符串的函数。 我们是否可以用c语言的标准IO函数printf呢? printf的强大的格式控制还是能够给我带来很大的方便的。 printf最终会导致putchar的调用,所以我们只需要把putchar的输出定向到串口就可以了。 由于printf的运行消耗内存较多,我们需要工程的缺省存储模型做如下设置: 在工程中添加如下代码: #include __near_funcintputchar(intc){ uart0_send_byte(c); returnc; } 然后你就可以在代码中用printf输出了! ! 2.上述串口通信完成的同学,可以尝试2位同学合作,A同学使用一台电脑+单片机大板+下载线(不连接串口线),B同学使用一台电脑+单片机大板+下载线(不连接串口线),将两块板子上的地线通过杜邦线相连,将A的TXD连接B的RXD,A同学给自己单片机写发送数据0X55,B同学给自己单片机写接收代码,两人波特率一致,当B同学收到0X55时,将此数据传送给P0口,控制P0口上的LED亮灭。 六、实验心得 1.实验所出现的问题、解决方法、心得 附: S403实训室中的GEC-CC2530开发板所的uart串口接口(红色圈圈)如下: 把桌面上的串口线和cc2530的串口相连,在PC机上打开程序/附件/通信/超级终端,命名随意,设置好COM1,和波特率即可, 进行如下设置: (2)程序实现在超级终端上把键盘输入的字符回显出来的图示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验7 CC2530串口控制器编程 实验 CC2530 串口 控制器 编程