10.串口通讯-收发字符串_第1页
10.串口通讯-收发字符串_第2页
10.串口通讯-收发字符串_第3页
10.串口通讯-收发字符串_第4页
10.串口通讯-收发字符串_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、01) 通过实验掌握 CC2530串口配置与使用2) 观察 D5(底板上 RX、TX)串口发送指示灯的变化与上一章不同之处用红色文字标出需要掌握的重点内容。2硬件:PC 机EB2530(底板、一台一套板、仿真器、USB线)相:XP/win7/8/8.1 系统,IAR 8.10 集成开发环境、串口助手P0_2、P0_3配置为外设功能时:P0_2为RX, P0_3为TX. USART0和USART1是串行通口,它们能够分别运行于异步UART模式或者同步SPI 模式。两个USART具有同样的功能,可以设置在单独的I/O 引脚。更详细的说明请参考参见16.1 节。4相关寄存相关寄存器UxCSR、UxC

2、SR、UxGCR、UxBUF、UxBAUD、CLKCONCMD、CLKCONSTA如下表所示:市安联德科技专业专注无线通讯 勇于创新追求卓越品质1寄存器位描述U0CSR (0 x86) -USART0 控制和状态Bit7 MODEUSART模式选择 0:SPI模式1:UART模式Bit6 REUART使能0: 禁用1:使能Bit5 SLAVESP 主或者从模式选择0: SPI 主模式1: SPI 从模式Bit4 FEUART 帧错误状态0: 无帧错误检测1: 字节收到不正确停止位级别市安联德科技专业专注无线通讯 勇于创新追求卓越品质2Bit3 ERRUART 奇偶错误状态0: 无奇偶错误检测1

3、: 字节收到奇偶错误Bit2 RX_BYTE接收字节状态0: 没有收到字节1: 准备好接收字节Bit1 TX_BYTE传送字节状态字节没有被传送写到数据缓存寄存器的最后字节被传送Bit0 ACTIVEUSART 传送/接收主动状态、在 SPI 从模式下该位等于从模式选择0: USART 空闲1: 在传送或者接收模式 USART 忙碌U0GCR (0 xC5)USART0 通用控制Bit7 CPOLSPI 的时钟极性0: 负时钟极性1: 正时钟极性Bit6 CPHASPI 时钟相位0: 当SCK 从CPOL 倒置到CPOL 时数据输出到MOSI, 并且当SCK 从CPOL倒置到CPOL 时数据输

4、入抽样到MISO。1: 当 SCK 从 CPOL 倒置到 CPOL 时数据输出到 MOSI,并且当 SCK 从 CPOL 倒置到 CPOL 时数据输入抽样到 MISOBit5 ORDER传送位顺序0: LSB 先传送1: MSB 先传送Bit4:0 BAUD_E波特率指数值。BAUD_E 和 BAUD_M 决定了UART 波特率和 SPI 的主 SCK 时钟频率U0BAUD (0 xC2) USART 0 波特率控制BAUD_M7:0波特率小数部分的值。BAUD_E和BAUD_M决定了UART的波特率和SPI的主SCK时钟频率U0DBUFUSART 0 接收/发送数据缓存UTX0IF(发送中断

5、标志)IRCON2 Bit1USART 0 TX中断标志 0: 无中断未决1: 中断未决CLKCONCMD时钟控制命令Bit7 OSC32K32 kHz 时钟振荡器选择0 : 32 kHz XOSC1 : 32 kHz RCOSCBit6 OSC系统时钟源选择0 : 32 MHz XOSC1 : 16 MHz RCOSCBit5:3 TICKSPD定时器标记输出设置000 :32 MHz001 :16 MHz010 :8 MHz由寄存器UxBAUD.BAUD_M7:0和UxGCR.BAUD_E4:0定义波特率。该波特率用于UART送,也用于SPI 传送的串行时钟速率。波特率由下式给出:传F 是

6、系统时钟频率,等于16 MHz RCOSC 或者32 MHz XOSC。32 MHz 系统时钟常用的波特率设置CC2530配置串口的一般步骤:1、2、3、配置IO,使用外部设备功能。此处配置P0_2和P0_3用作串口UART0配置相应串口的控制和状态寄存器。配置串口工作的波特率。由于此实验增加了串口接收功能,寄存器有所改变(红色部分),具体配置如下:PERCFG = 0 x00;/位置1 P0口/P0_2,P0_3用作串口(外部设备功能)/P0优先作为UART0/设置为UART方式P0SEL P2DIR U0CSR U0GCR= 0 x0c;&=|=|=0XC0; 0 x80;11;U0BAU

7、D |= 216;UTX0IF = 0;/波特率设为115200 根据上面表中获得的数据/UART0 TX 中断标志初始置位 0市安联德科技专业专注无线通讯 勇于创新追求卓越品质3波特率(bps)UxBAUD.BAUD_MUxGCR.BAUD_E误差(%)24005960.1448005970.1496005980.0.03192005990.0.033840059100.1457600216100.037680059110.110.03230400216120.03011 :4 MHz100 :2 MHz101 :1 MHz110 :500 kHz111 :250 kHzBit2:0 CLK

8、SPD时钟速度000 :32 MHz001 :16 MHz010 :8 MHz011 :4 MHz100 :2 MHz101 :1 MHz110 :500 kHz111 :250 kHzCLKCONSTACLKCONSTA寄存器是一个只读寄存器,用来获得当前时钟状态U0CSR |= 0 x40; IEN0 |= 0 x84;分析/允许接收/开总中断允许接收中断5/*文作修版描件名:者:订:本:述:main.c Andy2013-01-081.0设置串口调试助手波特率:115200bps 8N1串口调试助手给 CC2530 发字符串时,开发板会返回接收到的字符串*/ #include #incl

9、ude typedef typedefunsigned unsignedcharuchar;u;#define #define #defineUART0_RX UART0_TX SIZE1251char RxBuf; char UartSe; uchar count;char RxDataSIZE;/发送字符串/*名功称:能:参数:DelayMS()以毫秒为延时msec 延时参数,值越大,延时越久无出口参数:*/void DelayMS(uui,j;msec)for (i=0; imsec; i+)for (j=0; j1070; j+);/*名功称: InitUart()能: 串口初始化函数

10、市安联德科技专业专注无线通讯 勇于创新追求卓越品质4*参数: 无* 出口参数: 无*/ void InitUart(void)PERCFG = 0 x00;/外设控制寄存器 USART 0 的 IO 位置:0 为 P0 口位置 1/P0_2,P0_3 用作串口(外设功能)/P0 优先作为 UART0P0SEL P2DIR= 0 x0c;&=0 xC0;U0CSR U0GCR|=|=0 x80;11;/设置为 UART 方式U0BAUD |= 216;UTX0IF = 0; U0CSR |= 0 x40; IEN0 |= 0 x84;/波特率设为 115200/UART0 TX 中断标志初始置位

11、 0/允许接收/开总中断允许接收中断/*名功称:能:参数:UardString()串口发送函数 Data:发送缓冲区无len:发送长度出口参数:*/void UardString(char *Data,len)ui;for(i=0; ilen; i+)U0DBUF = *Data+; while(UTX0IF = 0);UTX0IF = 0;/*名描称: UART0_ISR(void) 串口中断处理函数述: 当串口 0 产生接收中断,将收到的数据保存在 RxBuf 中*/#pragma vector = errupt voidURX0IF = 0;URX0_VECTORUART0_ISR(vo

12、id)/ 清中断标志RxBuf = U0DBUF;市安联德科技专业专注无线通讯 勇于创新追求卓越品质5/* 程序函数*/ void main(void)CLKCONCMD &= 0 x40;while(CLKCONSTA & 0 x40); CLKCONCMD &= 0 x47;/设置系统时钟源为 32MHZ 晶振/等待晶振稳定为 32M/设置系统主时钟频率为 32MHZInitUart();/调用串口初始化函数/串口 0 默认处于接收模式UartSe = UART0_RX;memset(RxData, 0, SIZE);while(1)if(UartSe = UART0_RX)/接收状态if

13、(RxBuf != 0)/以为结束符,一次最多接收 50 个字符if(RxBuf != #)&(count = 50)count = 0; memset(RxData,else/判断数据,防止溢出/计数清 00, SIZE);/清空接收缓冲区UartSe=UART0_TX;/进入发送状态RxBuf= 0;if(UartSU0CSRUar U0CSRUartSe = UART0_TX)/发送状态&= 0 x40; dString(RxData,|= 0 x40;e = UART0_RX;/接收count);/发送已的字符串。/允许接收/恢复到接收状态市安联德科技专业专注无线通讯 勇于创新追求卓越品质6count = 0; memset(RxData,/计数清 0/清空接收缓冲区0, SIZE);(CC253回)如果要使用网关上的串口请看下图说明:市安联德科技专业专注无线通讯勇于创新追求卓越品质7图 1图 2图 3板使用,USB 线接在ZB/WF COM 上,后面 zigbee本实验使用图 2 的配置

温馨提示

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

评论

0/150

提交评论