第7章 串行通信接口(SCI)
串行通信接口SCI

串行通信分为同步通信和异步通信。
串行通信接口都具有发送引脚TXD和接收引脚RXD,它们是TTL平电。
如果要利用这两个引脚与外界实行异步通信,必须将TTL电平转化为RS-232电平。
SCI是一种全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的通信,几个独立的MCU也能通过SCI实现串行通信,形成网络。
从编程角度看,先设定好波特率,通信格式,是否校验,是否允许中断等。
接着发送数据时,先检查相应的标志位是否允许发送数据,如果可以,则把数据放入SCI数据寄存器即可,剩下的工作芯片自动完成:将数据从SCI数据寄存器送到发送移位寄存器,硬件驱动将发送移位寄存器里的数据按规定发送到发送引脚TXD,供对方接收。
接收时,数据逐位从接收引脚RXD进入到接收移位寄存器,当收到一个完整字节时,芯片会自动将数据送到SCI数据寄存器,并置相应的标志位,我们就可以根据标志位的情况来读取数据了。
SCIBDH:TNP[1:0]:发送窄脉冲位。
此位的设定与SCI传送的脉冲对应关系如下表:SCIBDL:SBR[12:0]:波特率设定位当IREN=0时,SCI波特率=SCI总线时钟/(16*SBR[12:0])当IREN=1时,SCI波特率=SCI总线时钟/(32*SBR[12:1])SCICR1:控制寄存器1(当AMAP=0时有效)LOOPS:循环模式选择位。
LOOPS=0时,为正常模式。
LOOPS=1时,为自发自收模式,在此模式下,RXD引脚与SCI内部断开,内部发送数据直接作为接收的输入,用于测试。
接收器的输入由RSRC位决定。
SCISWAI:当SCISWAI=0时,SCI可以在等待模式下工作。
当SCISWAI=1时,SCI 不可以在等待模式下工作。
RSRC:当LOOPS=1时,RSRC位决定接收移位寄存器接收数据的来源。
RSRC=1,RXD引脚与SCI模块断开,SCI用TXD引脚来发送及接收。
RSRC=0时,发送器的输出作为接收器的输入。
数字信号处理 串行通信接口(SCI)

12
SCI的增强特性
SCIFIFO描述 发送器与接收器各有16级FIFO,有3个专门的寄存器控制; 复位时,SCI工作于标准模式,禁止FIFO功能。
自动波特率检测 自动检测SCI通信的波特率,并刷新BRR寄存器。
(BRR+1)×8
注意:如果BRR=0,则波特率=LSPCLK/16.
SCICLK×8
1≤BRR≤65535,如果BRR=0,等同于BRR=1
BRR
SYSCLKOUT/4
6
SCI多处理器通信
在同一条串行连线上,多处理器通信模式允许一个处理器 (主机)向串行线上其它处理器(从机)发送数据。
一条串行线上每刻只能有一个节点发送数据(发送使能控 制),但可以多个节点同时接收数据。 1、地址字节
13
第7章 DSP片上串行通信外设
7.3 串行通信接口(SCI)
串行通信概述
串行通信:通信线上既传输数据信息,也传输联络信息,因 此收发双方就必须要有通信协议。特点是串行传输成本低, 适用于远距离通信,但传输速度低。 串行通信分类:1)同步通信;2)异步通信。
同步通信:发送器和接收器通常使用同一时钟源来同步。方法是在发送器 发送数据时同时包含了时钟信号,接收器利用该时钟信号进行接收。 异步通信:收发双方的时钟不是同一个时钟,是由双方各自的时钟实现数 据的发送和接收。但要求双方使用同一标称频率,允许有一定偏差。 同步方法:要正确传输字符,准确读取每一位是必须用各自的时钟同步的, 为克服不同时钟的偏差,每个字符都有一个起始位进行同步。
方法二: 利用TXWAKE位产生11位的空闲时间 1)首先置位TXWAKE(SCICTL1.3),控制数据发送特征; 2)写一个数据字节(内容不重要)到SCITXBUF,发送一个
SCI

SCI(serial communication interface)串行通信接口SCI 是一个双线的异步接口,即具有接受和发送两根信号线的异步接口,一般可以看着UART(通用异步接收/发送装置),SCI可以工作在查询和中断的方式实例:设计时使用MAX3232芯片将SCI 设计成串口RS232,那么X2812就可以和其他使用RS232接口的设备进行通信,当然也可设计成其他电平形式的串口,如RS485。
2812具有2个相同的SCI 模块,SCIA,SCIB 。
每个模块都有一个接收器和发送器,发送器和接收器都具有一个16级深度的FIFO 队列。
它们都自己独立的使能位和中断位。
工作模式:一.SCI 模块的特点1. 有两个引脚,发送SCITXD 和接收SCIRXD ,分别对应FPIOF 模块的第4位和第5位。
在编程初始化时,需要将GPIOFMUX 寄存器的第4位和第5位置1,否则这两个引脚就是通用数字I/O 口。
2. 外部晶振通过PLL 模块倍频之后产生了CPU 的系统时钟SYSCLKOUT ,经低速时钟预定标器之后输出低速外设时钟LSPCLK 提供给SCI 模块,要保证SCI 正常运行,系统控制模块必须使能SCI 时钟,只有使能了,LSPCLK 才能供给SCI 。
也就是在系统初始化函数中需要将外设时钟控制寄存器PCLKCR 的SCIAENCLK 位置1.3. SCI 具有4种错误检测标志:极性错误,超时错误,帧错误,间断检测A A ABB B单工,A 只发,B 只接半双工,A,B 都可发,同一时刻只能接收或发送全双工,任何时刻,都可发4.具有双缓冲接收和发送功能,接收缓冲寄存器位SCIRXBUF,发送缓冲寄存器为SCITXBUF。
独立的发送器和接收器使得SCI可以工作于半双工或全双工5.可以产生两个中断:SCIRXINT和SCITXINT,即接收中断和发送中断,SCI模块具有独立的发送中断使能位和接收中断使能位,发送和接收可以通过中断方式实现,也可以查询中断方式是实现6.在多处理器模式下,SCI模块具有两种唤醒方式:空闲线方式和地址位方式。
第7章 串行通信接口(SCI)

第7章串行通信接口(SCI)目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM口。
有的台式电脑带有两个串行口,分别称为COM1、COM2口。
大部分的笔记本电脑也带有串行口。
随着USB接口的普及,串行口的地位逐渐变低了。
但是,作为设备间的一种简便的通信方式,在相当长的时间内,串行口还不会消失。
因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以,串行通信可以作为MCU与外界通信的简便方式之一。
大部分嵌入式MCU都具有串行通信接口(Serial Communication Interface,SCI),掌握SCI的编程是学习MCU的重要内容之一。
本章从掌握规范的SCI基本编程角度讨论串行通信编程,把与芯片型号相关内容和与芯片型号无关内容区别开来,便于读者融会贯通与实际应用。
本章7.1、7.2节是与芯片无关的有关串行通信的通用基础知识,只有理解这些基础知识,才能进行串行通信的应用。
7.3、7.4节阐述GP32芯片的SCI模块的编程方法,在此基础上,重点掌握7.5节给出的编程实例。
注意,在汇编程序中,只有初始化子程序与GP32相关,收发程序在整个08系列中是通用的,在C程序中,只有初始化子程序与GP32相关,收发程序对任何芯片是通用的。
当然,要注意头文件SCI.h相关位的定义。
关于串口程序的测试,最好利用教学资料中提供的PC机方的高级语言源程序进行。
根据自己对高级语言的熟悉程度选用VB、C#、VC或其他高级语言。
实际上,掌握一门PC机方的高级语言编程对嵌入式系统开发是必要的。
7.1异步串行通信的基础知识本节简要概括了串行通信中的通常使用的相关基本概念,为学习MCU的串行接口编程做准备。
对于已经了解这方面知识的读者,可以略读本节。
7.1.1基本概念“位”(bit)是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0”和“1”表示。
在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(byte)。
第7章串行通信及其接口

7.2.1 串行口的结构
1.串行口控制寄存器SCON •该寄存器的字节地址为98H,可位寻址。SCON 格式如图7-6所示。
D7 D6 D5 D4 D3 D2 D1 D0
• SC •SM •SM1 •SM2 •REN •TB8 •RB8 •TI
•RI
ON
0
•位
•9F •9E
9D
9C
9B
23
指定两种传输速率中的一种
19
的
13
针
12
脚
9
号
10
未定义,保留供DCE装置测试使用
11
18
25
-
图 7
19 分 离 元 件 电 平 转 换 电 路
(a)MC1488
(b)MC1489
图7-20 MC1488,MC1489引脚
- MC
图 7 21
14 54 07 引 脚
(a) (b)
图 7
……
图7-23 PC机与MCS-51单片机多机通信
表7-5 LCR端口地址
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
DL 断线 跟随 EPS PEN STB WL WL
AB 设定 检测
S1
S0
表7-6 WLS1,WLS0两位设置的字长
WLS1(bit1) 0
辅助信道传输速率较主信道低。其余同 3
表
7-4 RS232C
14
16
15
指示被传输的每个bit信息的中心位置
17
24
4
DTE发给DCE
信
5
DCE发给DTE
号
6
线
DSP原理及应用技术第7.3节 串行通信接口(SCI)

TXINT TXINT
7.3 串行通信接口(SCI)
2)SCI自动波特率
SCI模块的增强功能支持硬件上的自动波特率检测逻辑。自动波特率 检测的流程如下:
①使能自动波特率检测模式:设置CDC位(SCIFFCT.13)为1并通过 向ABDCLR位(SCIFFCT.14)写1清除ABD位(SCIFFCT.12)。
7.3 串行通信接口(SCI)
(3)SCI多处理器通信
多处理器通信格式允许一个处理器在同一串行线路中将数据块有 效地传给其它处理器。在一条串行线上每次只有一个处理器发送数据 地址字节: 休眠位: 识别地址字节:
两种多处理器模式的接收顺序如下: 1)在接收一个地址块时,SCI端口被唤醒并请求中断(SCICTL2 寄存器的RX/BK INT ENA位必须使能以发送中断请求)。读取包含目 的地址的第一帧数据。 2)通过中断进入一个软件服务程序,检测即将到来的地址,将 接收到的地址字节与存储在内存中的器件地址进行比对。 3)如果检测结果表明数据块的地址与该设备CPU地址一致,则 CPU清零SLEEP位,并读取数据块的其余部分;如果不是则退出子程序 ,SLEEP仍然保持置位,并且在下一个数据块开始之前不会产生接收 中断。
SCI模块与CPU的连接如图7-29所示。
7.3 串行通信接口(SCI)
1. SCI模块具有以下特征:
➢ 两个外部引脚(不用于SCI通信时,可作为通用I/O口): SCITXD:SCI发送-输出引脚; SCIRXD:SCI接收-输入引脚; ➢ 可编程为多达64K种不同的波特率; ➢ 可编程的数据字格式; ➢ 四个错误检测标志:奇偶校验、溢出、帧错误和间断检测; ➢ 两种多处理器唤醒模式:空闲线和地址位; ➢ 半双工或者全双工操作; ➢ 双缓冲接收或发送功能; ➢ 发送器和接收器操作的完成可以通过中断驱动或者软件查询状态标志来
串行口SCI
串行通信接口SCI 串行通信接口
SCI同步方式: 同步方式: 同步方式 以数据格式以及发收双方时钟相同设置进行同步。 以数据格式以及发收双方时钟相同设置进行同步。 主从机具有相同时钟周期(波特率) 主从机具有相同时钟周期(波特率)在特定数据格式下收发 数据可以同步(起始位 数据位 校验位+停止位 空闲位) 数据位+校验位 停止位+空闲位 数据可以同步(起始位+数据位 校验位 停止位 空闲位) SCI异步通信可使用半双工或全双工模式通信。在这种 异步通信可使用半双工或全双工模式通信。 异步通信可使用半双工或全双工模式通信 模式下,一个帧包括 个起始位 个起始位、 个数据位 个数据位、 个 模式下,一个帧包括1个起始位、1-8个数据位、1个 可选的奇偶校验位以及1-2个停止位。每个数据占 可选的奇偶校验位以及 个停止位。每个数据占8 个停止位 个SCICLK周期。 周期。 周期
Page 15
识别地址
处理器根据多处理器的模式来识别一个地址字节,例如: 处理器根据多处理器的模式来识别一个地址字节,例如: • 空闲线模式在地址字节前留有一段静空间。数据块之间 空闲线模式在地址字节前留有一段静空间。 个或10个以上连续空闲位 是10个或 个以上连续空闲位,同一帧数据字符间空闲 个或 个以上连续空闲位, 位应小于10个 该模式没有一个附加的地址/数据位, 位应小于 个。该模式没有一个附加的地址/数据位,在 处理包含多于10个字节的数据块的情况下,其效率比地址 处理包含多于 个字节的数据块的情况下, 个字节的数据块的情况下 位模式更高。 位模式更高。 • 地址位模式为每个字节增加一个附加位 地址位 来 地址位模式为每个字节增加一个附加位(地址位 地址位)来 从数据中识别地址。该模式在处理多个小数据块时 从数据中识别地址。 更有效。 更有效。
串行通信接口(SCI)
SCI的特性: (1)两个I/O引脚:SCIRXD与SCITXD (2)一个16位的波特率选择寄存器可编程,可得到
65536种的不同速率。
(3)1~8位的可编程数据位。 (4)长度为1位或2位的可编程停止位。 (5)内部产生的串行时钟。 (6)四个错误的检测标志:
奇偶性错误、超限错误、帧错误、间断检测 (7)两种唤醒多处理器模式:
}
void main(void)
{ SCSR1=81FE; WDCR=0x6f; Sci_init();
//系统初始化,40MHz //关闭WD //SCI初始化
while (1)
{
while((SCIRXST&0x40) != 1) {;}//RXRDY=1表示接收到 数据
RecieveChar=SCIRXBUF; SCITXBUF = RecieveChar;
SCICTRL1 SCI控制寄存器1
SCIHBAUD 波特率选择寄存器高8位
SCILBAUD 波特率选择寄存器低8位
SCICTRL2 SCI控制寄存器2
SCIRXST SCI接收器状态寄存器
SCIRXEMU SCI仿真数据缓冲寄存器
SCIRXBUF SCI接收器数据缓冲寄存器
SCITXBUF SCI发送数据缓冲寄存器
5. 空闲线多处理器模式
• 数据块与数据块之间通过较长的空闲时间分开,而且这个 空闲时间比数据块内部帧与帧之间的空闲时间长得多。
• 空闲线协议通过在某一帧之后使用10位或更多的空闲时间 来指示一个新数据块的开始。
空闲线多处理器模式的数据格式
6. 地址位多处理器模式
• 帧信息的最后一个数据位后紧跟着一个称之为地址位 的附加位。
SCI优先级控制寄存器(SCIPRI)
第7章 串行通信接口SCI By Wang
//发送就绪标志状态查询函数 int SciaTx_Ready(void) { unsigned int i; if(SciaRegs.SCICTL2.bit.TXRDY == 1) { i = 1; //返回1说明发送器已经准备就绪, 可以接收新的数据进行发送 } Else { i = 0; } return(i); }
18
除了查询方式之外,SCI的发送和接 收还可以通过中断进行控制。
看hellodsp 资料
19
多处理器通信
20
多处理器通信方式分为: 空闲线模式 地址位模式
21
22
23
RX FIFO_15
RX FIFO_15 6
SCI Device #1
SCI Device #2
7
之所以SCI能工作于全双工模式,是因为它 够同时进行,也能够独立 进行发送和接收的操作。
8
SCI数据格式
进行通信的时候,一般都会涉及到协议,所谓协 议就是通信双方预先约定好的数据格式,以及数 据的具体含义。这就像地下党员做情报工作时一 样,地下工作人员将一份情报交给了上级,上级 可以根据事先约定好的规则进行翻译,获取情报 具体内容。如果情报被敌人截获那也不怕,由于 敌人不知道情报中每个文字所代表的含义,所以, 对于敌人来说,这份情报也是无效的。这种事先 约定好的规则,我们就把它叫做通信协议。
11
通信波特率
所谓的波特率就是指每秒所能发送的位数 双方必须一致 2812的每个SCI都具有两个8位的波特率寄存器, SCIHBAUD和SCILBAUD
其中BRR=波特率选择寄存器中的值,从十进制转换成十 六进制后,高8位赋值给SCIHBAUD,低8位赋值给 SCILBAUD。
dsp-串行通信接口sci
SCI:DSP和计算机之间进行数据传输查询和中断的方式来实现sci接收和发送数据两个Sci模块(16级深度的FIFO队列)单工、半双工、全双工SCITXD 发送引脚SCIRXD 接收引脚其为复用引脚,分别对应GPIOF模块的第四位和第五位,编程时需把GPIOFMUX 模块第四位和第五位置1,否则这两个引脚就是通用的数字I/O口。
SCI模块具有四种错误检测标识,分别为极性错误,超时错误,帧错误,间断检测。
接收中断,发送中断Sci的寄存器是8位的__SHF 移位寄存器每次移入一位__BUF 缓冲寄存器SCITXBUF→TXSHF→SCITXDSCIRXBUF存放cpu要读的数据,从其他处理器传过来的数据逐位移入寄存器RXSHF 装满时→RXSHF 从SCIRXD移入数据一个可编程的波特率发生器发送和接收数据的原理Scictl1的位RXENA为1即使能了SCI的接收操作如果使能了sci的FIFO功能,则RXSHF会将数据直接加载到接收队列中,CPU再从队列读取,这时简化了CPU的开销,提高了效率。
FIFO模式下,直接从从指令中进行操作。
NRZ(反向不归零制)指数字数据传输的一种形式,用数字0和1表示二进位的低和高状态通过特特殊的和持续的直流(DC)电压传输。
在正逻辑NRZ 中,低位状态用更大的负的或更小的正的电压表示,高位状态用较小的负的或较大的正的电压表示。
例子如下:逻辑0=+0.5 伏特逻辑1=+5.0 伏特逻辑0=-3.0 伏特逻辑1=0.0 伏特在负逻辑NRZ 中,低位状态用更大正的或更小的负的电压表示,高位状态用较小的正的或较大的负的电压表示。
例子如下:逻辑0=+5.0 伏特逻辑1=+0.5 伏特逻辑0=0.0 伏特逻辑1=-3.0 伏特当逻辑状态之一可能被零电压表示的时候,一些人对这个模型的名字前面为什么要加上"非" 感到奇怪。
和归零制的定义比较之后答案就变得很明显。
也可参看双极发信号,单极发信号,和RZ。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章串行通信接口(SCI)目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM口。
有的台式电脑带有两个串行口,分别称为COM1、COM2口。
大部分的笔记本电脑也带有串行口。
随着USB接口的普及,串行口的地位逐渐变低了。
但是,作为设备间的一种简便的通信方式,在相当长的时间内,串行口还不会消失。
因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以,串行通信可以作为MCU与外界通信的简便方式之一。
大部分嵌入式MCU都具有串行通信接口(Serial Communication Interface,SCI) ,掌握SCI的编程是学习MCU的重要内容之一。
本章从掌握规范的SCI基本编程角度讨论串行通信编程,把与芯片型号相关内容和与芯片型号无关内容区别开来,便于读者融会贯通与实际应用。
本章7.1、7.2节是与芯片无关的有关串行通信的通用基础知识,只有理解这些基础知识,才能进行串行通信的应用。
7.3、7.4节阐述GP32芯片的SCI模块的编程方法,在此基础上,重点掌握7.5节给出的编程实例。
注意,在汇编程序中,只有初始化子程序与GP32相关,收发程序在整个08系列中是通用的,在C程序中,只有初始化子程序与GP32相关,收发程序对任何芯片是通用的。
当然,要注意头文件SCI.h相关位的定义。
关于串口程序的测试,最好利用教学资料中提供的PC机方的高级语言源程序进行。
根据自己对高级语言的熟悉程度选用VB、C#、VC或其他高级语言。
实际上,掌握一门PC机方的高级语言编程对嵌入式系统开发是必要的。
7.1 异步串行通信的基础知识本节简要概括了串行通信中的通常使用的相关基本概念,为学习MCU的串行接口编程做准备。
对于已经了解这方面知识的读者,可以略读本节。
7.1.1 基本概念“位”(bit) 是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0”和“1”表示。
在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(byte) 。
串行通信的特点是:数据以字节为单位,按位的顺序从一条传输线上发送出去。
这里至少涉及到以下几个问题:第一,每个字节之间是如何区分的;第二,发送一位的持续时间是多少;第三,怎样知道传输是正确的;第四,可以传输多远等等。
这些问题属于串行通信的基本概念。
串行通信分为异步通信与同步通信两种方式,本节主要给出异步串行通信的一些常用概念。
正确理解这些概念,对串行通信编程是有益的。
1.异步串行通信的格式在MCU的英文芯片手册上,通常说SCI采用的是NRZ数据格式,英文全称是:“standard non-return-zero mark/space data format ”,可以译为:“标准不归零传号/空号数据格式”。
这是一个通信术语,“不归零”的最初含义是:用负电平表示一种二进制值,正电平表示另一种二进制值,不使用零电平。
“mark/space ”即“传号/空号”分别是表示两种状态的物理名称,逻辑名称记为“1/0”。
对学习嵌入式应用的读者而言,只要理解这种格式只有“1”、“0”两种逻辑值就可以了。
图7-1给出了8位数据、无校验情况的传送格式。
这种格式的空闲状态为“1”,发送器通过发送一个“0”表示一个字节传输的开始,随后是数据位(在MCU 中一般是8位或9位,可以包含校验位) 。
最后,发送器发送1到2位的停止位,表示一个字节传送结束。
若继续发送下一字节,则重新发送开始位,开始一个新的字节传送。
若不发送新的字节,则维持“1”的状态,使发送数据线处于空闲。
从开始位到停止位结束的时间间隔称为一帧(frame) 。
所以,也称这种格式为帧格式。
通过这段内容,知道了异步串行通信中,通过“开始位”与“停止位”区分每个传送的字节。
所以,每发送一个字节,都要发送“开始位”与“停止位”,这是影响异步串行通信传送速度的因素之一。
同时因为每发送一个字节,必须首先发送“开始位”,所以称之为“异步”(asynchronous) 通信。
2.串行通信的波特率位长(bit length) ,也称为位的持续时间(bit duration) 。
其倒数就是单位时间内传送的位数。
人们把每秒内传送的位数叫做波特率(baud rate) 。
波特率的单位是:位/秒,记为bps 。
bps 是英文bit per second 的缩写,习惯上这个缩写不用大写,而用小写。
通常情况下,波特率的单位可以省略。
通常使用的波特率有300、600、900、1200、1800、2400、4800、9600、19200、38400。
在包含开始位与停止位的情况下,发送一个字节是10位,很容易计算出,在各种波特率下,发送1K 字节所需的时间。
显然,这个速度相对于目前的许多通信方式是慢的,那么,异步串行通信的速度能否提得很高呢?答案是否定的。
因为随着波特率的提高,位长变小,以致很容易受到电磁源的干扰,通信就不可靠了。
当然,还有通信距离问题,距离小,可以适当提高波特率,后面还会涉及此问题。
3.奇偶校验在异步串行通信中,如何知道传输是正确的?最常见的方法是增加一个位(奇偶校验位),供错误检测使用。
字符奇偶校验检查(character parity checking) 称为垂直冗余检查( vertical redundancy checking ,VRC) ,它是每个字符增加一个额外位使字符中“1”图7-1 SCI 数据格式第0位第1位第2位第3位 第4位 第5位 第6位第7位停止位开始位的个数为奇数或偶数。
奇数或偶数依据使用的是“奇校验检查”还是“偶校验检查”而定。
当使用“奇校验检查”时,如果字符数据位中“1”的数目是偶数,校验位应为“1”,如果“1”的数目是奇数,校验位应为“0”。
当使用“偶校验检查”时,如果字符数据位中“1”的数目是偶数,则校验位应为“0”,如果是奇数则为“1”。
这里列举奇偶校验检查的一个实例,看看ASCII字符“R”,其位构成是1010010。
由于字符“R”中有三个1位,若使用奇校验检查,则校验位为0;如果使用偶校验检查,则校验位为1。
在传输过程中,若有1位(或奇数个数据位) 发生错误,使用奇偶校验检查,可以知道发生传输错误。
若有2位(或偶数个数据位) 发生错误,使用奇偶校验检查,不能知道发生传输错误。
但是奇偶校验检查方法简单,使用方便,发生一位错误的概率远大于发生二位错误的概率,所以“奇偶校验”这种方法还是最为常用的一种校验方法。
几乎所有MCU的串行异步通信接口,都提供这种功能。
4.串行通信的传输方式在串行通信中,经常用到“单工”、“双工”、“半双工”等术语。
它们是串行通信的不同传输方式。
下面简要介绍这些术语的基本含义。
①单工(Simplex):数据传送是单向的,一端为发送端,另一端为接收端。
这种传输方式中,除了地线之外,只要一根数据线就可以了。
有线广播就是单工的。
②全双工(Full-duplex):数据传送是双向的,且可以同时接收与发送数据。
这种传输方式中,除了地线之外,需要两根数据线,站在任何一端的角度看,一根为发送线,另一根为接收线。
一般情况下,MCU的异步串行通信接口均是全双工的。
③半双工(Half-duplex):数据传送也是双向的,但是在这种传输方式中,除了地线之外,一般只有一根数据线。
任何一个时刻,只能由一方发送数据,另一方接收数据,不能同时收发。
在Freescale的HC08系列MCU中,监控模式的通信就采用这种方式。
7.1.2 RS-232C总线标准现在回答“可以传输多远”这个问题。
MCU引脚输入/输出一般使用TTL电平,而TTL电平的“1”和“0”的特征电压分别为2.4V和0.4V(目前一些使用3V供电的MCU中,该特征值有所变动),它适用于板内数据传输。
若用TTL电平将数据传输到5m之外,那么可靠性是值得考究的。
为了使信号传输得更远,美国电子工业协会EIA(Electronic Industry Association)制订了串行物理接口标准RS-232C。
RS-232C采用负逻辑,-15V~-3V为逻辑“1”,+3V~+15V为逻辑“0”。
RS-232C最大的传输距离是30m,通信速率一般低于20Kbps。
当然,实际应用中,也有人用降低通信速率的方法,通过RS-232电平,将数据传送到300m之外,这是很少见的,且稳定性很不好。
表7-1 9芯串行接口引脚含义表RS-232C总线标准最初是为远程数据通信制订的,但目前主要用于几米到几十米范围内的近距离通信。
有专门的书籍介绍这个标准,但对于一般的读者,不需要掌握RS-232C标准的全部内容,只要了解本节介绍的这些基本知识就可以使用RS-232。
目前一般的PC机均带有1到2个串行通信接口,人们也称之为RS-232接口,简称“串口”,它主要用于连接具有同样接口的室内设备。
早期的标准串行通信接口是25芯插头,这是RS-232C规定的标准连接器(其中:2条地线,4条数据线,11条控制线,3条定时信号,其余5条线备用或未定义)。
后来,人们发现在计算机的串行通信中,25芯线中的大部分并不使用,逐渐改为使用9芯串行接口。
一段时间内,市场上还有25芯与9芯的转接头,方便了两种不同类型之间的转换。
后来,使用25芯串行插头极少见到,25芯与9芯对接头也极少有售。
因此,目前几乎所有计算机上的串行口都是9芯接口。
图7-2给出了9芯串行接口的排列位置,相应引脚含义见表7-1。
图7-2 9芯串行接口排列图7-3 MAX232引脚在RS-232通信中,常常使用精简的RS-232通信,通信时仅使用3根线:RxD(接收线)、TxD(发送线)和GND(地线)。
其它为进行远程传输时接调制解调器之用,有的也可作为硬件握手信号,初学时可以忽略这些信号的含义。
在MCU中,若用RS-232C总线进行串行通信,则需外接电路实现电平转换。
在发送端需要用驱动电路将TTL电平转换成RS-232C电平,在接收端需要用接收电路将RS-232C电平转换为TTL电平。
电平转换器不仅可以由晶体管分立元件构成,也可以直接使用集成电路。
目前使用MAX232芯片较多,该芯片使用单一+5V电源供电实现电平转换。
图7-3给出了MAX232的引脚说明。
引脚含义简要说明如下:Vcc(16脚) :正电源端,一般接+5VGND(15脚) :地VS+(2脚) :VS+=2Vcc-1.5V=8.5VVS-(6脚) :VS-=-2Vcc-1.5V=-11.5V第7章 串行通信接口(SCI)7.2 电平转换电路与SCI 通用编程原理所有型号MCU 的串行通信接口(Serial Communication Interface ,SCI) ,都具有发送引脚TxD 、接收引脚RxD ,它们是TTL 电平引脚。