CC2530串口实验resume_第1页
CC2530串口实验resume_第2页
CC2530串口实验resume_第3页
CC2530串口实验resume_第4页
CC2530串口实验resume_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、CC2530串口串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。工作方式由于 CPU 与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有 接收移位寄存器 (串并)和 发送移位寄存器 (并串). 在数据输入过程中,数据 1 位 1 位地从外设进入接口的 接收移位寄存器 ,当 接收移位寄存器 中已接收完 1 个字符的各位后,数据就从 接收移位寄存器 进入 数据输入寄存器 . CPU 从

2、数据输入寄存器 中读取接收到的字符.(并行读取,即 D7D0 同时被读至累加器中). 接收移位寄存器 的移位速度由 接收时钟 确定.在数据输出过程中,CPU 把要输出的字符(并行地)送入 数据输出寄存器 , 数据输出寄存器 的内容传输到 发送移位寄存器 ,然后由 发送移位寄存器 移位,把数据 1 位 1 位地送到外设. 发送移位寄存器 的移位速度由 发送时钟 确定.接口中的 控制寄存器 用来容纳 CPU 送给此接口的各种控制信息,这些控制信息决定接口的工作方式. 状态寄存器 的各位称为 状态位 ,每一个状态位都可以用来指示数据传输过程中的状态或某种错误.例如,用状态寄存器的 D5 位为 1 表

3、示 数据输出寄存器 空,用 D0 位表示 数据输入寄存器满 ,用 D2 位表示 奇偶检验错 等.能够完成上述 串 并 转换功能的电路,通常称为 通用异步收发器 (UART :Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251,16550USB转串口即实现计算机USB接口到通用串口之间的转换。为没有串口的计算机提供快速的通道,而且,使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备。对于大多数工程师来说,开发USB2.0 接口产品主要障碍在于:要面对复杂的USB2.0协议、自己编写USB设

4、备的驱动程序、熟悉单片机的编程。这不仅要求有相当的VC编程经验、还能够编写USB接口的硬件(固件)程序。所以大多数人放弃了自己开发USB产品。为了将复杂的问题简单化,可以使用USB转串口模块。这个模块可以被看作是一个USB2.0协议的转换器,将电脑的USB2.0接口转换为一个透明的并行总线,就象单片机总线一样。从而几天之内就可以完成USB2.0产品的设计。如何知道串口号COM ?在首次安装USB转串口驱动时,其串口号由WINDOWS自动分配(通常从COM2开始分配),安装完成后可在设备管理中点击属性修改串口号。修改方法:右键点击“我的电脑”,点击“设备管理器”。在弹出的设备管理器对话框中点击“

5、端口COM和LPT”前面的“+号”,然后右键点击“USB-SERIAL CH340”,选择“属性”,然后再弹出的对话框里选择“端口设置”标签,点击“高级”按钮,然后在弹出的对话框中将会看到在“COM端口号”右边有个下拉选择组合框,点击选择想要设置的COM端口号,最后依次点击“确定”。(好像不行,查看了一下电脑上的该端口波特率9600都能通讯就是说电脑上设置没用或者说自己修改端口号后就不能用了,而且换回来后原先能用的后来又不行了!重启后又好了。后来又试了一下,串口号是可以改变的,要先把串口调试软件关掉,后在按上述修改)。串口实验总结:初始化串口需要的工作(1)系统时钟设为高速晶振(CLKCONC

6、MD寄存器,系统时钟设置方法:1.第七位16MRC和32M晶振各有特点,2.第六位适用于用于驱动休眠时钟,为看门狗产生滴答时钟,并可以用作定时器TIM2的闸门(strobe)用来计算休眠定时器的休眠时间,自己看情况选择。3.第5-3位设置定时器 。4.第2-0位决定真正的系统主时钟,是在第七位的基础上进一步划分成更小的频率)(2)等时钟设置稳定(CC2530该位在数据手册上没有标注但是CC2430上有备注可以用在CC2530上,也可以采用在初始化函数后面有足够的延时程序,否则就会出现刚开始打印时有乱码之后就好了的情况,两种方法等待时钟稳定)(3)分频设置,(4)关闭不用的振荡器,(5)对于使用

7、的P口设置备用1是P0口,备用2是P1口,(6)UART0相关参数的设置,关于校验位奇偶位停止位高低电平等都在相关寄存器中设置,(7)波特率的设置(参考手册上的数值填写)(注意波特率选择是收发双方达成的共识,双方波特率不同会造成无法通讯或乱码,波特率的设置与系统的主时钟有关所以在设置波特率寄存器时要查主时钟频率想对应的表,手册上是32M的数值,修改了系统主时钟频率后要相应的修改波特率对应下的值)(8)清UART0相关中断。上述步骤不可省在经典的8051单片机中,通常要设置波特率,其中有两种方式波特率可变,具体数值由定时器来控制。在cc2530中,设置波特率不需要定时器参与,这一点和avr单片机

8、一样。因此在进行初始化的过程中利用U0CSR和U0GCR两个寄存器来设置波特率。并设置串口具体位置,用p0做串口还是用p1,以及具体到每个位。这部分具体设置还没弄清楚。另外还要设置通信方式为UART方式最后要设置允许接受,开总中断允许和接收中断允许。和adc不同的是,adc要选择触发源。TI CC2530基础实验(串口编程USART0收发测试总结) 无论学习哪款MUC串口对于我们进行实验调试都是非常方便实用的,可以把程序中涉及的某些中间量或者其他程序状态信息打印出来显示在电脑上进行调试,许多MUC和PC机通信都是通过串口来进行的。CC2530有两个USB转串口,分别是USART0和USART1

9、。USART0和USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI模式。两个USART具体同样的功能,可以设置在单独的I/O引脚。查看CC2530 datasheet的I/O外设引脚映射72页根据上面的外设I/O引脚映射可知:UART0对应的外部设置IO引脚关系为:位置1:P0_2-RX P0_3-TX 位置2:P1_4-RX P1_5-TXUART1对应的外部设置IO引脚关系为:位置1:P0_5-RX P0_4-TX 位置2:P1_7-RX P1_6-TXUSART模式的操作具体下列特点:1、8位或者9位负载数据2、奇校验、偶校验或者无奇偶校验3、配置其实位和停止位

10、电平4、配置LSB(最低有效位)或MSB(最高有效位)首先传输5、独立接收中断6、独立收发DMA触发注:在本次实验中,使用的是UART0电路原理图:CC2530寄存器: PERCFG:外设控制寄存器 P2DIR : 端口2方向和端口0外设优先级控制 IEN0 :中断使能0寄存器 IRCON2:中断标志控制寄存器 UxCSR:USARTx 控制和状态寄存器 UxUCR:USARTx 串口控制寄存器 UxGCR:USARTx 通用控制寄存器 UxBUF: USARTx 接收/发送数据缓冲寄存器 UxBAUD:USARTx 波特率控制寄存器CC2530配置串口的一般步骤:1、配置串口的备用位置,是备

11、用位置1,还是备用位置2。配置寄存器PERCFG外设控制寄存器2、配置IO,使用外部设备功能。此处配置P0_2和P0_3用作串口UART03、配置端口的外设优先级。此处配置P0外设优先作为UART04、配置相应串口的控制和状态寄存器。此处配置UART0的工作寄存器5、配置串口工作的波特率。此处配置为波特率1152006、将对应的串口接收/发送中断标志位清0,接收/发送一个字节都将产生一个中断,在接收时需要开总中断和使能接收中断,以及运行接收。程序:/* * 基础实验只需要添加以下头文件 */#include #define uint8 unsigned char /或typedef unsig

12、ned char uint;#define uint16 unsigned int char Rxdata50;uint8 RXTXflag = 1;char temp;uint8 datanumber = 0;/* * 函数描述:串口0初始化 * 115200,8位数据位,无校验,1位停止位 */* * CC253O 32M系统时钟波特率参数表 * *-* * 波特率 UxBAUD.BAUD_M UxBAUD.BAUD_M * * 2400 59 6 * * 4800 59 7 * * 9600 59 8 * * 14400 216 8 * * 19200 59 9 * * 28800 21

13、6 9 * * 38400 59 10 * * 57600 216 10 * * 76800 59 11 * * 115200 216 11 * * 23040 216 12 * */void UartInit(void) PERCFG = 0x00; /设置UART0的备用位置为P0口,即UART0的RX-P0_2, TX-P0_3 P0SEL = 0x3c; /设置P0_2,P0_3为外设功能 P2DIR &= 0xc0; /配置P0端口优先作为UART0 /*设置USART0的方式*/ U0CSR |= 0x80; /SPI同步模式 /*设置USART0的波特率,115200*/ U0G

14、CR |= 11; U0BAUD |= 216; /*将UART0中断标志位清0*/ UTX0IF = 0; /清除UART0发送中断标志位 URX0IF = 0; /清除UART0接收中断标志位 /*开总中断,以及使能串口0接收中断*/ IEN0 |= 0x80; /开总中断 IEN0 |= 0x04; /使能串口0接收中断 /*运行串口0接收*/ U0CSR |= 0x40;/* * 函数描述:串口0发送字符串函数 */void UartSendString(char *Data, uint16 len) uint16 j; for (j = 0; j len; j+) U0DBUF =

15、*Data+; for (; 0 = UTX0IF ;); UTX0IF = 0; /* * 函数描述:32M系统时钟下的毫秒延时函数 */void Delay_ms(uint16 ms) uint16 i,j; for(i = 0; i ms; i+) for(j = 0;j 1774; j+); /* * 函数描述:串口0接收中断服务程序 */#pragma vector = URX0_VECTOR_interrupt void UART0_ISR(void) URX0IF = 0; /清中断标志 temp = U0DBUF; /将串口接收缓冲的数据存放到temp中,temp是char类型,即8位数据位void main() CLKCONCMD &= 0x40; /设置系统时钟源为32MHz晶振 for(; CLKCONSTA & 0x40;); /等待晶振稳定 CLKCONCMD &= 0X47; /设置系统主时钟频率为32MHz UartInit(); UartSendString(send test.,sizeof(send test.); for (;) if (1 = RXTXflag) /串口接收状态 if (temp != 0) if (temp != #)&(datanumber50

温馨提示

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

评论

0/150

提交评论