实验7 CC2530串口控制器编程_第1页
实验7 CC2530串口控制器编程_第2页
实验7 CC2530串口控制器编程_第3页
实验7 CC2530串口控制器编程_第4页
实验7 CC2530串口控制器编程_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验7CC2530串口控制器编程本实验完成时间:第8周、第9周一、 实验目的1、 CC2530串口控制器的原理;2、 掌握CC2530串口控制器的编程步骤;二、 实验任务从PC机上的串口调试助手(超级终端)输入的字符能够发送给CC2530,CC2530再把所接收到的字符“原路”回传给对方。直观的效果:当串口调试助手(超级终端)激活时,键盘上输入的字符能够在串口调试助手的窗口那个回显。三、 实验原理1、何谓超级终端和串口调试助手超级终端:一个和uart串口相关联的窗口应用程序。它能够从uart串口上所接收到的字符显示出来,同时当该窗口激活时能够把键盘所键入的字符从串口发送出去。超级终端能够从串口收发字符成功的前提是串口通信双方所约定的收发格式一致。它和一般所说的串口调试助手类似,但有区别:超级终端不会以16进制的形式显示所接收的字符编码;串口调试助手不会把键盘输入的字符实时从串口发送出去,需要点击手动发送。串口调试助手:桌面上有串口聊天助手,如果不能打开,可以如图1在S503的D盘/试验箱资料光盘/工具软件/串口工具和驱动/串口聊天助手,打开后如图2所示。图1串口聊天助手位置图1串口聊天助手位置打开任意一个即可!图2图2串口聊天助手界面图2、实验室GEC-CC2530开发板的uart串口接口(USB转串口,红色圈圈)如图3:图3单片机开发板的USB转串口该接口和cc2530所连接的电路图如下:□AR1T_CTS!—>FDjSR71Oj> □AR1T_CTS!—>FDjSR71Oj> F0_4RS■■DR91U3VCCCl*V*ci-V-GA■SNDC2>111T1OU1T=ii1OUTRflIN]TUNT2HMJT^OUTRSN串口UART由该图不难得知:P0_3作为串口的发送管脚;P0_2作为串口的接收管脚;P0_5、P0_4作为硬件流控用的,一定要注意,我们平时见到的串口的交叉线都只用到了收、

发、地三根线,所以在串口设置是都禁止硬件流控!由此可见,GEC-CC2530所占的资源就是P0_3(发送管脚)、P0_2(接收管脚),更进一步结合CC230数据手册的GPIO设备管脚映射表分析:P+ngryJFuracilaffiP®PIT-fi§4121?G4USART1SPIArt2MlMDCssMDcSSUEAfiT1UAHT点FL2RXTXftitCTRTCT可知:GEC-CC2530串口——>P0_3(发送管脚)、P0_2(接收管脚)——>uart03、cc2530串口uart编程步骤(1)总线初始化,相关SFR如下PERCFGP2DIRPxSELUxCSR我们uart0位于P0位置 ~二当p°口管脚冲突是uart0优先POSEL〔0xF3〕端口。助能选择位名称夏位R/W描述7:0SELP0J70]goR.WFQ.7到P0.D功能迭择0:通用UO外设咂当P0_2P0_3作为了uart0的收发管脚2、数据链路格式化(数据位、停止位、校验位、波特率);UxUCRUxGCRUxBAUDUOUCRC0hG4>-UURT0UAR7控割m裳但RW7FLUSHC:清度翠元.当段置时,该事粉冉会#即停止当前挨作贵且返回单元的空闻供毒.右FXOW0L.直RTSE竹流便能.用KTS^CTS引鄂选择域什渔榜制的使用.山 愤控制裳止L 渣控制慢度50R-WL-ART苛肩便粉LL与便隆奇骨梗验,写人回的唯泱定发送的第9忡土1宜,归果收到前案咂不匹配推到手节间布偶技会,茬地行报音皿.ill果奇雅松雅使惟・那盅该企没代以下奇宵校物增31.L 慎校野4B9T90RJWUARTQP^r-^^-三诙位是1时,使能奇㈤快验应虬物{叩第9曲}-如果,过FABITY攵瞌帝腐校特,.第9触的内誓是通诅D9分罚的.山 皿传站1J 食位何丑TPJLRTTY□匚职!1哥俱校廷慢隗-除了为哥阊校船瞿押直企州于计算,总■度空怪甄:七棋式-山 祭周苛iffi校脸L 奇商校会金嗟2海GR-WL2RT停止七的住此-泣择要止位的怛3S版 1位停止位L 2位冉止忸1S70PLR-WVJkKrfr止41的电平心刽不回亍开知位的电平山 停止位祇电平L0START&RHrCART起短H1平-囚置璞的概胜茉用既鼻的起略壁螺别臼 皿相反的电平-山 起姻忸页电平L 起船位向电平U0GCR(0kG5)-ISAiAT0控制但*actRW描述7CPOL0RWSPI的时■伸栈性玦 也时讲梃性1= 正时善概性CCPHA0K--WSPI村供招廿M当JETACPOL倒置到CPOL时般握蝴昭到MQKI,并卫我SCK队CPOLW当免筮从UPCiL眉黄到EAOLPt象廊融M剽-诫戏.#且当丁炊从CTCL与LiT到CPOL时JS旗蝴无施拜到一S6ORDER.0RW对赋岸一_:L£E1: MSB卷酸诋410BAUD._E[4:0]oowor.族特本指致值-BAUD_EfilBA.UB_M决定了UAKT渡特率和的主&CK时UCBAUC康比町-此AJTT下建特事控制但%W71CEA.UD_M[?=0]0x00、时伴坂聿.波特率的计算:在CC2530的时钟位高速时钟位32M时,我们可以按照下表进行配置:Tabke16-1.■C-ommo^lyUsecllBaucl-RateS-ettings52MHzSystemClockBaudRate^kBAUDBflUD典k&CR.BAUD_E^iErrer质2400二0.14+300c;70.14aaaoc=50.1414.40021*s0.Q31D.9K)5030.142B.SKJ216龟0.033B.40059ID0.1457.600216ID0.0378.soa50110.1411G^DD216110.0323Q.4DC!2;12Q.Q23、读写串口收发寄存器UxDBUF、RX_BYTE(UxCSR的第2位)、TX_BYTE(UxCSR的第1位)RX_BYTE:接收字节状态,0:没有收到字节;1:准备好接收字节TX_BYTE:^字节状态,0:字节没有被传送;1:字节准备被传送精品我们读取数据时,RX_BYTE置1,然后读场:08讨;我们发送数据时,TX_BYTE置1,且将准备传送的字节写入到UxDBUF;四、实验步骤1、领取单片机开发板,编写代码,先编译下载,如图4下载时需要接下载器,下载好之后,断开下载器和方口线,再将方口线直接接在单片机开发板的USB转串口上如图5,如果电源指示灯不亮,则将RST旁边的拨码开关打到OFF位置。图4连接下载器图5图4连接下载器图5和PC机进行串口通信如图5连接好之后,打开设备管理器,通过设备管理器中查看COM口,查找自己是COM几。一般方口线直接相连后,静待20S就会出现设备。若直接将方口线接在单片机上,打开设备管理器发现出现如下图6的?,则需要右键点击问号更新安装USB转串口的驱动。此驱动需要下载:ftp/教学软件/粤嵌zigbeeUSB转串口/,解压至当前文件夹下,右键更新驱动路径为选择刚刚解压的文件:CH341SER。更新安装驱动之后,出现如图7所示,比刚才多了一个COM3,则我们现在就是COM3口。在串口助手上选择COM3口。若不清楚自己刚才连上的是COM几,断开方口线,再重新连接方口线。打开串口调试助手,设置好COM口,和波特率即可;足件cnKijT^JBvlVls.stllhfl*足件cnKijT^JBvlVls.stllhfl**1凹瞄旧国囱0y%£Ji+0日眨体制*盘S3EK>TEfldnpr―日铤工具bqDDEAWATAPI0|任芸计电俚字p□,Uii— 贿aSJS14S。岛利也丑口和通-・学垢口(COM和LPT:!»®HHyFjfflifwn(Lpriimian?走瞿*r遇装徉匚(ooMi)-U四?俾计算立r-LstflH>&重蜥OfS用隗字Pu港.qUSB-2.D-S.Arls!:幅Mcgv:殳田r-<"强迎息HpQb.斐用=行.笫或Jftp£?.:■砒JgsI,*硕傩理点杵眄噪见AJ至西的胃以上瞄旧1DERI'由七七旬f]畋工员A©猝计剌曲kl:或其5应件宝>揪牵地月户箱近登•&能康》*疝gt'日骚粉畦用院序#遥S3CE5T0Kfie<■>JEDEATA/ATAPF[口BO孑竺■一■ 正UM扣LE](|了USB-S-ERIAL (CCft<13)L 田伸口ILPTH)rrnwi)>-V:..二鲍,4声玲般甫i叙扫典H6短T通用三行堂洵乾偷'亍网苴艾it••土汞喝矩图6没有识别出USB转串口图7安装驱动后编程实现:使用cc2530的串口0来和PC机通信,通信格式为:8位数据位、1位停止位、没有奇偶校验位、没有流控、波特率为115200;(1)程序实现在串口调试助手上每隔0.5秒显示HELLOWORD!(2)程序实现在串口调试助手上把键盘输入的字符回显出来2、建立IAR工程,完善以下代码以实现实验任务:程序实现在串口调试助手上大约每隔0.5秒显示HELLOWORD!可参考课本P110,但不与课本上完全相同第一题:#include<iocc2530.h>#defineuintunsignedint#defineucharunsignedcharvoiddelay(uint);charTxdata[]="HELLOWORD!!";voidset_clock_speed()//时钟初始化(〃下面的代码是把系统的高速时钟设置为32M,请对为下三条句添加注释CLKCONCMD&=〜(1<<6);//while(CLKCONSTA&(1<<6));//CLKCONCMD&=〜0X07;//)voiddelay(unsignedintcount)//延时函数(unsignedinti,j;for(i=0;i<count;i++)for(j=0;j<10000;j++) ;)voiduart0_init()//串口初始化:可参考课本P110,但不与课本上完全相同{〃补充代码实现初始化:USART。选择uart模式,管脚为P0(位置1),数据格式为8位数据位、1位停止位、没有校验位,波特率为15200,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观察运行结果;温馨提示:上述代码中 实现串口发送的3句代码可以换成以下方法, 方法 请测试并在课后多多U0DBUF=Txdata[j];思考: while(UTX0IF==0);UTX0IF=0;以下内容为第9周实验内容:4、建立IAR工程,程序实现在串口调试助手上把键盘输入的字符回显出来,完善以下代码以实现实验任务第二题:#include<iocc2530.h>voidset_clock_speed()(〃下面的代码是把系统的高速时钟设置为32M,请大家通过查看手册尝试自己来写,不要抄袭)voiduart0_init()(//USART0选择uart模式,管脚为P0,数据格式为8位数据位、1位停止位、没有校验位//波特率为19200,LSB发送模式,1为停止,0为起始//将串口。的位置选在P0口:PERCFG的第。位清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呢

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论