CC2530和STM32嵌入式接口技术开发3.7CC2530串口通信技术应用开发EducationSolutions目录ContentsInternet+串口的功能及类别CC2530单片机串口的使用项目场景说明项目实践15:21/3串口概念串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(SerialInterface)是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。15:21/4串口的接口标准同步串行接口(英文:SynchronousSerialInterface,SSI)是一种常用的工业用通信接口。异步串行是指UART(UniversalAsynchronousReceiver/Transmitter),通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包含TTL电平的串口和RS232电平的串口。TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平。15:21/5RS-232RS-232也称标准串口,最常用的一种串行通讯接口。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。15:21/6RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。典型的RS-422是四线接口。实际上还有一根信号地线,共5根线。RS-422支持点对多的双向通信。RS-422的最大传输距离为1219米,最大传输速率为10Mb/s。15:21/7RS-485RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信。15:21/8串口通信协议串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。15:21/9串口通信的参数串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。•波特率这是一个衡量符号传输速率的参数。波特率•数据位是衡量通信中实际数据位的参数。数据位•停止位用于表示单个包的最后一位。停止位•奇偶校验位在串口通信中一种简单的检错方式。奇偶校验位15:22/10数据流控制数据流控制作用就是当接收端的数据缓冲区已满,无法处理数据来时,就发出不再接收的信号,发送端则停止发送,直到发送端收到可以继续发送的信号再发送数据。硬件数据流控制RTS/CTS(请求发送/清除发送)流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制软件数据流控制软件流控制常通过XON/XOFF来实现。15:22/11CC2530串口CC2530的串口模式中提供异步串行接口功能。在UART模式中,串口接口使用2线模式或者含有引脚RXD、TXD、可选RTS和CTS的4线模式。UART模式的操作具有下列特点:●8位或者9位负载数据●奇校验、偶校验或者无奇偶校验●配置起始位和停止位电平●配置LSB或者MSB首先传送●独立收发中断●独立收发DMA触发●奇偶校验和帧校验出错状态15:22/12CC2530串口配置寄存器介绍CC2530单片机对于每个USART有5个配置寄存器来综合配置CC2530串口特性。UxCSR(USARTx控制和状态寄存器)UxUCR(USARTxUART控制寄存器)UxGCR(USARTx通用控制寄存器)UxBUF(USARTx接收/发送数据缓冲寄存器)UxBAUD(USARTx波特率控制寄存器)15:22/13项目场景生产车间往往都是有金属阻隔、电磁环境复杂不利于无线信号的通信,只有抗干扰能力较强的有线信号才能保证数据的传输稳定,同时中央控制台又需要一次控制多个设备,硬件上设定多个控制端是不现实的。为了解决这种问题实现工厂设备与控制台的交互就需要以一种可靠的通信方式来建立连接,串口以实现简单、数据传输稳定、可远距离传输数据、抗干扰能力强且一般电子设备都有这种接口全可以满足工业需求,串口就在工业领域得到了广泛的使用。15:22/14任务目标通过编辑代码使用CC2530微处理器的串口外设,将配置好的串口外设通过串口线与PC机连接,打开PC机上的串口上位机,通过PC机上的串口上位机向CC2530微处理器发送数据。CC2530微处理器接收到数据后回显,CC2530微处理器当通过串口接收到了特定的字符时向PC机打印接收到的所有数据,以此实现CC2530微处理器与PC机的交互。15:22/15项目分析串口配置,首先需要通过P0SEL寄存器将管脚属性配置为外设模式,然后通过PERCFG配置寄存器选择要配置的串口通道,接下来选择P0为串口优先并将双线总线模式配置为串口模式,最后配置串口波特率停止位和奇偶校验位。程序的接收数据则只需要对接收状态寄存器位URX0IF进行识别,如果接受到数据,则可直接从U0DBUF寄存器中获取接收到的数据。程序的发送数据与接收数据方式的操作顺序正好相反,首先向U0DBUF寄存器写入要发送的值,然后等到UTX0IF寄存器置位,如果置位则数据发送完成。15:22/16程序流程图开始初始化系统时钟初始化串口字符为@或大于256字节是数据存于数组输出数组数组中数据清空否PC上打印文字开始接收数据15:22/17项目实现串口始化程序如下:voiduart0_init(unsignedcharStopBits,unsignedcharParity){P0SEL|=0x0C;//初始化UART0端口PERCFG&=~0x01;//选择UART0为可选位置一P2DIR&=~0xC0;//P0优先作为串口0U0CSR=0xC0;//设置为UART模式,而且使能接受器U0GCR=0x0A;U0BAUD=0x3B;//波特率设置为38400U0UCR|=StopBits|Parity;//设置停止位与奇偶校验}15:22/18项目实现串口发送函数如下:voiduart_send_char(charch){U0DBUF=ch;//将要发送的数据填入发送缓存寄存器while(UTX0IF==0);//等待数据发送完成UTX0IF=0;//发送完成后将数据清零}15:22/19项目实现串口接收函数:intuart_recv_char(void){intch;//等待数据接收完成while(URX0IF==0);//提取接受数据ch=U0DBUF;URX0IF=0;//发送标志位清零returnch;//返回获取到的串口数据}15:22/20项目思考串口通信时需要配置哪些参数?请列举几个常见的串口实例?