第七周串口控制器原理与编程.ppt
- 文档编号:18854287
- 上传时间:2024-01-30
- 格式:PPT
- 页数:45
- 大小:1.53MB
第七周串口控制器原理与编程.ppt
《第七周串口控制器原理与编程.ppt》由会员分享,可在线阅读,更多相关《第七周串口控制器原理与编程.ppt(45页珍藏版)》请在冰点文库上搜索。
单片机原理与应用单片机原理与应用上周教学内容回顾上周教学内容回顾大课CC2530电源的管理CC2530系统时钟的编程(难点)小课8路流水灯,会看原理图,会接线;GPIO口按键状态的获取本周教学主要内容本周教学主要内容串行通信基础知识串口控制器的原理与编程,相关SFRSFR在控制器运行过程中所器的作用。
CC2530CC2530串口控制器编程步骤教学目标教学目标了解串行通信的基础知识;掌握CC2530CC2530串口的编程步骤;重点理解相关SFRSFR在控制器运行过程中所器的作用。
计算机与外界的信息交换称为通信。
通信的基本方式可分为并行通信和串行通信两种。
所谓并行通信是指数据的各位同时在多根数据线上发送或接收。
串行通信是数据的各位在同一根数据线上依次逐位发送或接收。
一、一、串行通信基础知识串行通信基础知识了解了解目前串行通信在单片机双机、多机以及单片机与PC机之间的通信等方面得到了广泛应用。
图1并行通信示意图发发送送方方接接收收方方图2串行通信示意图了解了解发发送送方方接接收收方方8位数据同时传送8位顺次传送1.11.1异步通信和同步通信异步通信和同步通信计算机通信按同步方式可分为异步通信和同步通信两种基本通信方式。
1.同步通信(SynchronousCommunication)同步通信是一种连续传送数据的通信方式,一次通信传送多个字符数据,称为一帧信息。
数据传输速率较高,通常可达56000bps或更高。
其缺点是要求发送时钟和接收时钟保持严格同步。
了解了解帧.流方向流方向帧2.异步通信(AsynchronousCommunication)在异步通信中,数据通常是以字符或字节为单位组成数据帧进行传送的。
收、发端各有一套彼此独立,互不同步的通信机构,由于收发数据的帧格式相同,因此可以相互识别接收到的数据信息。
了解了解111001100101001001发送设备接收设备10100100011110011001间隙任意起始位起始位停止位停止位数据位数据位2.异步通信(AsynchronousCommunication)异步通信信息帧格式如图4所示。
D0D1D2D3D4D0D1D2D3D4D5D5D6D6D7D70/10/111111111D7D70/110/11000D0D10D0D1第第n字符字符帧帧空闲位空闲位停停止止位位奇奇偶偶校校验验停停止止位位58位数据位数据8位数位数据据起起始始位位起起始始位位奇奇偶偶校校验验第第n-1字符字符帧帧第第n+1字符字符帧帧图图4异步通信帧格式异步通信帧格式8位数位数据据了解了解
(1)起始位:
在没有数据传送时,通信线上处于逻辑“1”状态。
当发送端要发送1个字符数据时,首先发送1个逻辑“0”信号,这个低电平便是帧格式的起始位。
其作用是向接收端表示发送端开始发送一帧数据。
接收端检测到这个低电平后,就准备接收数据信号。
(2)数据位:
在起始位之后,发送端发出(或接收端接收)的是数据位,数据的位数没有严格的限制,58位均可。
由低位到高位逐位传送。
了解了解(3)奇偶校验位:
数据位发送完(接收完)之后,可发送一位用来检验数据在传送过程中是否出错的奇偶校验位。
奇偶校验是收发双方预先约定好的有限差错检验方式之一。
有时也可不用奇偶校验。
(4)停止位:
字符帧格式的最后部分是停止位,逻辑“1”电平有效,它可占1/2位、1位或2位。
停止位表示传送一帧信息的结束,也为发送下一帧信息作好准备。
了解了解1.21.2串串行通信的波特率行通信的波特率波特率(BaudRate)是串行通信中一个重要概念,它是指传输码元/信号的速率。
比特率的定义是每秒传输二进制数的位数。
比特率=波特率log2一个码元所携带的信息量了解了解1.31.3串行通信的制式串行通信的制式1.单工制式(Simplex)在串行通信中,数据是在两个站之间传送的。
按照数据传送方向,分为三种。
送器发A接收器B2.半双工制式(Halfduplex)送发接收送发接收A端B端3.全双工制式(Fullduplex)送发接收接收送发A端B端了解了解1.4PC机与单片机间的串行通信串口:
如RS-232C、RS-422、RS-423、RS-485等。
单片机内是TTL电平2.45V:
逻辑逻辑100.5V:
逻辑逻辑0只适用于通信距离很短的场合,远距离传输必然会使信号衰减和畸变。
PC机其中RS-232C在异步串行通信中应用最广的总线标准,采用负逻辑标准:
+3V+15V表示逻辑0;-3V-15V表示逻辑1标准串行总线通信接口单片机单片机单片机图5微机9针D形串口连接器1.4.1RS-232C1.4.1RS-232C总线标准总线标准RS-232C实际上是串行通信的总线标准,定义了25条信号线,使用25个引脚的连接器,目前在PC机中使用9针的串口。
标准数据传送速率有:
50,75,110,150,300,600,1200,2400,4800,9600,19200bit/s。
工业控制的RS-232一般只使用RXD、TXD、GND三条线。
965125141312:
接:
接收收3:
发:
发送送5:
地:
地1.4.2RS-232C1.4.2RS-232C接口电路接口电路由于RS-232C信号电平与TTL电平不一致,必须进行信号电平转换。
实现这种电平转换的电路称为RS-232C接口电路。
一般有两种形式:
一种是采用运算放大器、晶体管、光电隔离器等器件组成的电路来实现;另一种是采用专门集成芯片(如MC1488、MC1489、MAX232等)来实现。
下面介绍由专门集成芯片MAX232构成的接口电路。
1.MAX2321.MAX232接口电路接口电路MAX232芯片是MAXIM公司生产的具有两路接收器和驱动器的IC芯片,其内部有一个电源电压变换器,可以将输入+5V的电压变换成RS-232C输出电平所需的12V电压。
所以采用这种芯片来实现接口电路特别方便,只需单一的+5V电源即可。
C1+C1-C2+C2-CC2530GNDGNDIBM-PCTXDTXDRXDRXDT1outT1inR1inR1outGNDV+V-VCCMAX232C4C1C2C3C5+5V+图6用MAX232实现串行通信接口电路图2.2.串行通信时使用串行通信时使用MAX232MAX232进行电平转换进行电平转换图中C1、C2、C3、C4用于电源电压变换,提高抗干扰能力,一般取1.0F/16V。
C5的作用是对+5V电源的噪声干扰进行滤波,一般取0.1F。
发送与接收的对应关系不能接错,否则将不能正常工作。
二、二、CC2530CC2530串口控制器串口控制器CC2530的串口控制器USART:
universalsynchronous/asynchronousreceiverandtransmitter通用同步异步收发器USART0和USART1是串行通信接口,两个USART具有同样的功能,可以分别运行于在两种模式下:
异步异步UART模式模式同步同步SPI模式模式由于异步由于异步UART允许发送和接收的时钟不一致允许发送和接收的时钟不一致,容易实现,我们在讨论串容易实现,我们在讨论串口时经常采用异步口时经常采用异步UART。
2.1串口模式串口模式异步异步UART模式模式:
UART模式提供异步串行接模式提供异步串行接口,在口,在UART模式中,有模式中,有2种接口选择方式:
种接口选择方式:
2线接线接口和口和4线接口。
线接口。
2线接口线接口:
RXD(接收)(接收)、TXD(发送)(发送)。
4线接口线接口:
RXD、TXD、RTS和和CTS(硬件流控(硬件流控制)制)4线接口复杂点,教学上讲解线接口复杂点,教学上讲解2线接线接口口单片机GNDGND单片机TXDTXDRXDRXDRTSCTSCTSRTS2.1串口模式串口模式UART模式提供全双工传送,接收器中的位同步不影响发送功模式提供全双工传送,接收器中的位同步不影响发送功能。
传送一个能。
传送一个UART字节包含字节包含1个起始位个起始位,8个数据位个数据位,1个个作为可选的作为可选的第第9位数据或者奇偶校验位位数据或者奇偶校验位,再加上,再加上1个或者个或者2个个停止位停止位D0D1D2D3D4D0D1D2D3D4D5D5D6D6D7D70/10/111111111D7D70/110/11000D0D10D0D1第第n字符字符帧帧空闲位空闲位停停止止位位奇奇偶偶校校验验停停止止位位8位数据位数据8位数位数据据起起始始位位起起始始位位奇奇偶偶校校验验第第n-1字符字符帧帧第第n+1字符字符帧帧串口异步通信帧格式串口异步通信帧格式8位数位数据据1.控制和状态寄存器控制和状态寄存器UxCSR(见手册(见手册P140)2.2串口控制器的特殊功能寄存器串口控制器的特殊功能寄存器SFR串口操作由串口操作由控制和状态寄存器控制和状态寄存器UxCSR以及以及控制寄存器控制寄存器UxUCR位位名称名称复位复位R/W描述描述7MODE0R/WUSART模式选择0:
SPI模式1:
UART模式6RE0R/W启动UART接收器。
注意UART完全配置之前不能接收。
0:
禁止接收器1:
使能接收器5SLAVE0R/WSPI主或者从模式选择0:
SPI主模式1:
SPI从模式4FE0R/W0UART帧错误状态0:
无帧错误检测1:
字节收到不正确停止位级别3FRR0R/W0UART奇偶校验错误状态0:
无奇偶校验检测1:
字节收到奇偶错误2RX_BYTE0R/W0接收字节状态,UART模式和SPI模式。
当读U0DBUF该位自动清零,通过写0清除它,这样有效丢弃U0BUF中的数据0:
没有收到字节1:
接收字节就绪1TX_BYTE0R/W0传送字节状态,UART和SPI从模式0:
字节没有传送1:
写到数据缓存寄存器的最后字节已经传送0ACTIVE0RUSART传送/接收主动状态0:
USART空闲1:
USART在传送或者接收模式忙碌U0CSR|=0x80;/设置设置UART模式模式U0CSR|=0x40;/允许接收允许接收2.控制寄存器控制寄存器UxUCR位位名称名称复位复位R/W描述描述7FLUSH0R/W1清除单元。
当设置时,该事件将会立即停止当前操作并返回单元的空闲状态6FLOW0R/WUART硬件流使能。
用RTS和CTS引脚选择硬件流控制的使用0:
流控制禁止1:
流控制使能5D90R/WUART奇偶校验位。
当使能奇偶校验,写入D9的值决定发送的第9位的值。
如果收到的第9位不匹配收到的字节的奇偶校验,接收报告ERR。
0:
奇校验1:
偶校验4BIT90R/WUART9位数据使能。
当该位是1时,使能奇偶校验位传输即第9位。
如果通过PARITY使能奇偶校验,第9位的内容是通过D9给出的。
0:
8位传输1:
9位传输3PARITY0R/WUART奇偶校验使能。
除了为奇偶校验设置该位用于计算,必须使能9位模式0:
禁用奇偶校验1:
使能奇偶校验2SPB0R/WUART停止位数。
选择要传送的停止位的位数0:
1位停止位1:
2位停止位1STOP0R/WUART停止位的电平必须不同于开始为的电平0:
停止位低电平1:
停止位高电平0START0R/WUART起始位电平,闲置线的极性采用选择的起始位级别的电平的相反的电平0:
起始位低电平1:
起始位高电平2.2串口控制器的特殊功能寄存器串口控制器的特殊功能寄存器SFR当收发数据缓冲器当收发数据缓冲器UxDBUF写入数据时,该字节发送写入数据时,该字节发送到输出引脚到输出引脚TXD。
UxDBUF寄存器是双缓冲的。
寄存器是双缓冲的。
位位名称名称复位复位R/W描述描述7:
0DATA7:
00x00R/WUSART接收和传送数据。
接收和传送数据。
当写这个寄存器的时候数当写这个寄存器的时候数据被写到内部的传送数据据被写到内部的传送数据寄存器,当读取该寄存器寄存器,当读取该寄存器的时候,数据来自内部读的时候,数据来自内部读取的数据寄存器取的数据寄存器unsignedchartemp;/定义一个字符型变量定义一个字符型变量temp=U0DBUF;/读出读出U0DBUF中的数据中的数据3.收发数据缓冲器收发数据缓冲器UxDBUF2.2串口控制器的特殊功能寄存器串口控制器的特殊功能寄存器SFR4.UxGCR通用控制寄存器通用控制寄存器位位名称名称复位复位R/W描述描述7CPOL0R/WSPI的时钟极性的时钟极性0:
负时钟极性:
负时钟极性1:
正时钟极性:
正时钟极性6CPHA0R/WSPI时钟相位时钟相位0:
当:
当SCK从从CPOL倒置到倒置到CPOL时数据输出到时数据输出到MOSI并且当并且当SCK从从CPOL倒置到倒置到CPOL时数据抽样时数据抽样到到MISO1:
当:
当SCK从从CPOL倒置到倒置到CPOL时数据输出到时数据输出到MOSI并且当并且当SCK从从CPOL倒置到倒置到CPOL时数据抽取时数据抽取到到MISO5ORDER0R/W传送位顺序传送位顺序0:
LSB先传送先传送1:
MSB先传送先传送4:
0BAUD_E4:
000000R/W波特率指数值。
波特率指数值。
BAUD_E和和BAUD_M决定决定了了UART的波特率和的波特率和SPI的主的主SCK时钟频时钟频率率2.2串口控制器的特殊功能寄存器串口控制器的特殊功能寄存器SFR5.波特率控制寄存器波特率控制寄存器UxBAUD位位名称名称复位复位R/W描述描述7:
0BAUD_M7:
00x00R/W波特率小数部分的波特率小数部分的值。
值。
BAUD_E和和BAUD_M决定了决定了UART的波特率和的波特率和SPI的主的主SCK时钟频率时钟频率2.2串口控制器的特殊功能寄存器串口控制器的特殊功能寄存器SFR2.3波特率产生波特率产生当运行当运行UART模式时,内部的波特率发生器设置模式时,内部的波特率发生器设置UART波特率。
波特率。
当运行在当运行在SPI模式时,内部的波特率发生器设置模式时,内部的波特率发生器设置SPI主时钟频主时钟频率。
率。
波特率由寄存器波特率由寄存器UxBAUD.BAUD7:
0和和UxGCR.BAUD_E4:
0定义,该波特率用于定义,该波特率用于UART传送,也用传送,也用于于SPI传送的串行时传送的串行时钟速率。
钟速率。
()_256_*2*282BAUDEBAUDMF+=波特率F是系统时钟频率,等于是系统时钟频率,等于16MHzRCOSC或者或者32MHzXOSC标准波特率所需的寄存器值标准波特率所需的寄存器值波特率(波特率(bps)UxBAUD.BAUD_MUxGCR.BAUD_E误差(误差(%)2400595960.1448005970.1496005980.141440021680.03192005990.142880021690.033840059100.1457600216100.037680059110.14115200216110.03230400216120.03该表适用于典型的该表适用于典型的32MHz系统时钟系统时钟/设置波特率为设置波特率为57600U0GCR|=10;U0BAUD|=216;2.4系统时钟设置系统时钟设置波特率发生器的时钟是从所选的主系统时钟源获波特率发生器的时钟是从所选的主系统时钟源获得的,主系统时钟源可以是得的,主系统时钟源可以是32MHzXOSC或或16MHzRCOSC。
通过。
通过CLKCONCMD.OSC位位可选择主系统时钟源可选择主系统时钟源CLKCONCMD&=0x40;/设置时钟晶振为设置时钟晶振为32MHZwhile(!
(SLEEPSTA&(16);/*等待晶振稳定等待晶振稳定*/CLKCONCMD&=0x07;1.UART总线资源数据手册P72表7-1外设I/O引脚映射串口0同步模式:
串口0异步模式:
串口1同步模式:
串口1异步模式:
2.5UART2.5UART资源位位名称名称复复位位R/W描述描述70R0没有使用6T1CFG0R/W定时器1的I/O位置0:
备用位置11:
备用位置备用位置25T3CFG0R/W定时器定时器3的的I/O位置位置0:
备用位置:
备用位置11:
备用位置:
备用位置24T4CFG0R/W定时器定时器4的的I/O位置位置0:
备用位置:
备用位置11:
备用位置:
备用位置23:
2-00R0没用使用1U1CFG0R/WUSART1的I/O位置0:
备用位置11:
备用位置:
备用位置20U0CFG0R/WUSART0的I/O位置0:
备用位置11:
备用位置:
备用位置22.相关特殊功能寄存器
(1)PERCFG:
设置各设备IO口位置在P0还是P1;在在P0口口在在P1口口
(2)P2DIR:
当PERCFG所设定的设备IO位置冲突时,由该sfr决定位置到底归属于单个控制器。
位位名称名称复位复位R/W描述描述7:
6PRIP01:
00R/WP0口外设优先级控制。
当PERCFG分配给一些外设到相同引脚的时候,这些位将确定优先级。
详细优先级列表:
00:
第1优先级:
USART0;第2优先级:
USART1;第3优先级:
定时器101:
第1优先级:
USART1;第2优先级:
USART0;第3优先级:
定时器110:
第1优先级:
定时器1通道0-1;第2优先级:
USART1;第3优先级:
USART0;第4优先级:
定时器1通道2311:
第1优先级:
定时器1通道2-3;第2优先级:
USART0;第3优先级:
USART1;第4优先级:
定时器1通道0150R0没有使用没有使用4:
0DIRP2_4:
000000R/WP2_0到到P2_4的的I/O方向方向(3)PxSEL:
置管脚功能为设备模式(4)UxCSR7:
设置uart还是spi模式;以上4个sfr的正确设置可以完成我们的uart的总线初始化;2.62.6中断标志位中断标志位1.UART发送当USART收/发数据缓冲器、寄存器UxDBUF写入数据时,该字节发送到输出引脚TX。
当USART发送缓冲寄存器为空时,准备接收新的发送数据时,就会由硬件置对应的中断标志位UTXxIF为1。
如果我们要通过串口如果我们要通过串口0发送字符发送字符h,则该如下操作,则该如下操作:
voiduart0_send_byte(chartmp)/发送字符发送字符tmpwhile(UTX0IF=0);UTX0IF=0;/可以省掉吗?
可以省掉吗?
U0DBUF=tmp;UART接收当接收缓冲区UXDBUF接收到一个新的字符时,会由硬件把中断标志位URXxIF置1。
如果我们希望从串口如果我们希望从串口0获取一个字符,代码如下:
获取一个字符,代码如下:
charuart0_receive_byte()/从串口接收一个字符从串口接收一个字符while(URX0IF=0);URX0IF=0;/不可以省掉不可以省掉returnU0DBUF;2.62.6中断标志位中断标志位1、总线初始化:
PERCFGP2DIRPxSELUxCSR2、数据链路格式化(数据位、停止位、校验位、波特率)UxUCRUxGCRUxBAUD注意:
设置波特率时,一定要清楚当前的时钟速度。
3、读写串口收发寄存器UxDBUFUTXxIFURXxIF三、三、CC2530串口控制器编程步骤串口控制器编程步骤3.1UART发送过程发送过程1.当字节传送开始时,当字节传送开始时,UxCSR.ACTIVE位变为高电位变为高电平,而当字节传送结束时为低电平。
平,而当字节传送结束时为低电平。
2.当传送接收结束时,当传送接收结束时,UxCSR.TX_BYTE位设置为位设置为1。
3.当当USART收收/发数据缓冲寄存器就绪,准备接收新发数据缓冲寄存器就绪,准备接收新的发送数据时,就产生了一个中断请求。
该中断在传的发送数据时,就产生了一个中断请求。
该中断在传送开始之后立刻发生,因此,当字节正在发送时,新送开始之后立刻发生,因此,当字节正在发送时,新的字节能够装入数据缓存器。
的字节能够装入数据缓存器。
1.当当1写入写入UxCSR.RE位时,数据接收开始。
位时,数据接收开始。
2.UART在输入引脚在输入引脚RXDx中寻找有效起始位,并且设置中寻找有效起始位,并且设置UxCSR.ACTIVE位为位为1。
3.当检测出有效起始位时,收到的字节就传入到接收寄存当检测出有效起始位时,收到的字节就传入到接收寄存器,器,UxCSR.RX_BYTE位设置为位设置为1。
该操作完成时,产生接收。
该操作完成时,产生接收中断。
同时中断。
同时UxCSR.ACTIVE变为低电平。
通过寄存器变为低电平。
通过寄存器UxBUF提供收到的数据字节。
提供收到的数据字节。
5.当当UxBUF读出时,读出时,UxCSR_BYTE位由硬件清零。
位由硬件清零。
3.2UART接收过程接收过程3.3UART硬件流控制硬件流控制当当UxUCR.FLOW位设置为位设置为1,硬件流控制使能,硬件流控制使能;硬硬件流控制适用于“件流控制适用于“4线接口”。
线接口”。
发送数据时仅在发送数据时仅在RTS线为低电平时可以发送,线为低电平时可以发送,当可以接收数据时把当可以接收数据时把CTS线置为低电平。
线置为低电平。
了解了解3.4UART特征格式特征格式如果寄存器如果寄存器UxUCR中的中的BIT9和奇偶校验位设置为和奇偶校验位设置为1,那么奇偶校验产生且使能。
奇偶校验计算出来,那么奇偶校验产生且使能。
奇偶校验计算出来,作为第作为第9位来传送。
位来传送。
在接收期间,奇偶校验位计算出来而且与收到的第在接收期间,奇偶校验位计算出来而且与收到的第9位进行比较。
如果奇偶校验位出错,则位进行比较。
如果奇偶校验位出错,则UxCSR.ERR位设置为位设置为1。
当读取。
当读取UxCSR时,时,UxCSR.ERR位清除。
位清除。
voidinitUARTtest(void)InitClock();/初始化时钟初始化时钟PERCFG=0x00;/使用串口备用位置使用串口备用位置1P0口口P0SEL=0x3c;/P0用作串口用作串口P2DIR&=0XC0;/选择串口选择串口0优先作为串优先作为串口口U0CSR|=0x80;/UART方式方式U0GCR|=10;/波特率波特率baud_e的选择的选择U0BAUD|=216;/波特率设为波特率设为57600UTX0IF=0;/串口串口0发送中断标志清零发送中断标志清零串口串口0初始化初始化:
选择工作时钟。
选择工作时钟。
选择串口外设备用位置。
选择串口外设备用位置。
初始化初始化I/O口。
口。
设置波特率。
设置波特率。
举例:
举例:
串口发送字符串函数串口发送字符串函数voidUartTX_Send_Stri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 串口 控制器 原理 编程