串行通信接口SCI.ppt

上传人:wuy****n92 文档编号:74445062 上传时间:2023-02-26 格式:PPT 页数:24 大小:844.50KB
返回 下载 相关 举报
串行通信接口SCI.ppt_第1页
第1页 / 共24页
串行通信接口SCI.ppt_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《串行通信接口SCI.ppt》由会员分享,可在线阅读,更多相关《串行通信接口SCI.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第5章 串行通信接口SCI主要内容主要内容v5.1 5.1 异步串行通信的通用基础知识异步串行通信的通用基础知识v5.2 AW605.2 AW60的的SCISCI模块的编程结构模块的编程结构v5.3 AW605.3 AW60的的SCISCI构件设计与测试构件设计与测试v5.4 AW605.4 AW60的中断源与第一个带有中断的编程的中断源与第一个带有中断的编程实例实例5.1 5.1 异步串行通信的通用基础知识异步串行通信的通用基础知识5.1.1 5.1.1 串行通信的基本概念串行通信的基本概念异步串行通信的格式异步串行通信的格式 SCI(standard non-return-zero mar

2、k/space data SCI(standard non-return-zero mark/space data format)“format)“标准不归零传号标准不归零传号/空号数据格式空号数据格式”通常采用通常采用NRZNRZ数据格式数据格式.“.“不归零不归零”的最初含义是:用正、负电平表示的最初含义是:用正、负电平表示二进制值,不使用零电平。二进制值,不使用零电平。“mark/space”“mark/space”即即“传号传号/空空号号”分别是表示两种状态的物理名称,逻辑名称记为分别是表示两种状态的物理名称,逻辑名称记为“1/0”“1/0”。下图给出了。下图给出了8 8位数据、无校验

3、情况的传送格式位数据、无校验情况的传送格式 串行通信数据格式串行通信数据格式串行通信的波特率串行通信的波特率 波特率单位是位波特率单位是位/秒,记为秒,记为bpsbps。通常情况下,波特率的单位。通常情况下,波特率的单位可以省略。通常使用的波特率有可以省略。通常使用的波特率有300300、600600、900900、12001200、18001800、24002400、48004800、96009600、1920019200、3840038400、5760057600、115200115200、128000128000等等 奇偶校验奇偶校验 字符奇偶校验检查(字符奇偶校验检查(characte

4、r parity checkingcharacter parity checking)称为垂直)称为垂直冗余检查(冗余检查(vertical redundancy checking vertical redundancy checking,VRCVRC),它是每),它是每个字符增加一个额外位使字符中个字符增加一个额外位使字符中“1”“1”的个数为奇数或偶数。的个数为奇数或偶数。奇校验:如果字符数据位中奇校验:如果字符数据位中“1”“1”的数目是偶数,校验位应为的数目是偶数,校验位应为“1”“1”,如果,如果“1”“1”的数目是奇数,校验位应为的数目是奇数,校验位应为“0”“0”。偶校验:如果字

5、符数据位中偶校验:如果字符数据位中“1”“1”的数目是偶数,则校验位应的数目是偶数,则校验位应为为“0”“0”,如果是奇数则为,如果是奇数则为“1”“1”串行通信的传输方式串行通信的传输方式 单工(单工(SimplexSimplex):数据传送是单向的,一端为发送端,另一):数据传送是单向的,一端为发送端,另一端为接收端。这种传输方式中,除了地线之外,只要一根数据端为接收端。这种传输方式中,除了地线之外,只要一根数据线就可以了。有线广播就是单工的线就可以了。有线广播就是单工的 全双工(全双工(Full-duplexFull-duplex):数据传送是双向的,且可以同时接):数据传送是双向的,且

6、可以同时接收与发送数据。这种传输方式中,除了地线之外,需要两根数收与发送数据。这种传输方式中,除了地线之外,需要两根数据线,站在任何一端的角度看,一根为发送线,另一根为接收据线,站在任何一端的角度看,一根为发送线,另一根为接收线。一般情况下,线。一般情况下,MCUMCU的异步串行通信接口均是全双工的的异步串行通信接口均是全双工的 半双工(半双工(Half-duplexHalf-duplex):数据传送也是双向的,但是在这种):数据传送也是双向的,但是在这种传输方式中,除了地线之外,一般只有一根数据线。任何一个传输方式中,除了地线之外,一般只有一根数据线。任何一个时刻,只能由一方发送数据,另一方

7、接收数据,不能同时收发。时刻,只能由一方发送数据,另一方接收数据,不能同时收发。在在freescalefreescale的的HCS08HCS08系列系列MCUMCU中,监控模式的通信就采用这种方中,监控模式的通信就采用这种方式式5.1.2 5.1.2 RS-232RS-232总线标准总线标准 MCU MCU引脚一般输入引脚一般输入/输出使用输出使用TTLTTL电平,而电平,而TTLTTL电平的电平的“1”“1”和和“0”“0”的特征电压分别为的特征电压分别为2.4V2.4V和和0.4V0.4V,适用于板内数据传输。,适用于板内数据传输。为了使信号传输得更远,美国电子工业协会为了使信号传输得更远

8、,美国电子工业协会EIA(Electronic EIA(Electronic Industry Association)Industry Association)制订了串行物理接口标准制订了串行物理接口标准RS-232CRS-232C。RS-232CRS-232C采用负逻辑,采用负逻辑,-3V-3V-15V-15V为逻辑为逻辑“1”“1”,+3V+3V+15V+15V为逻为逻辑辑“0”“0”。RS-232CRS-232C最大的传输距离是最大的传输距离是30m30m,通信速率一般低于,通信速率一般低于20Kbps20Kbps。RS-232 RS-232接口,简称接口,简称“串口串口”,它主要用于

9、连接具有同,它主要用于连接具有同样接口的室内设备。目前几乎所有计算机上的串行口都是样接口的室内设备。目前几乎所有计算机上的串行口都是9 9芯接芯接口。下面给出了口。下面给出了9 9芯串行接口的排列位置,相应引脚含义见下表。芯串行接口的排列位置,相应引脚含义见下表。上图为上图为9 9芯串行接口排列芯串行接口排列9 9芯串行接口引脚含义表芯串行接口引脚含义表5.1.3 TTL5.1.3 TTL电平到电平到RS-232RS-232电平转换电路电平转换电路 具有具有SCISCI接口的接口的MCUMCU,一般具有发送引脚,一般具有发送引脚(TxD)(TxD)与接收引脚与接收引脚(RxD)(RxD),不同

10、公司或不同系列的,不同公司或不同系列的MCUMCU,使用的引脚缩写名可能不,使用的引脚缩写名可能不一致,但含义相同。一致,但含义相同。SCISCI的外围硬件电路,主要目的是将的外围硬件电路,主要目的是将MCUMCU的的发送引脚发送引脚TxDTxD与接收引脚与接收引脚RxDRxD的的TTLTTL电平,通过电平,通过RS-232RS-232电平转换芯电平转换芯片转换为片转换为RS-232RS-232电平。下图给出一个基本电平。下图给出一个基本SCISCI电平转换电路及芯电平转换电路及芯片片MAX232MAX232引脚图引脚图MAX232MAX232引脚引脚 串行通信接口电平转换电路串行通信接口电平

11、转换电路uMAX232MAX232芯片进行电平转换基本原理是:芯片进行电平转换基本原理是:l发送过程:发送过程:MCUMCU的的TXDTXD(TTLTTL电平)经过电平)经过MAX232MAX232的的1111脚脚(T1IN)(T1IN)送到送到MAX232MAX232内部,在内部内部,在内部TTLTTL电平被电平被“提升提升”为为232232电平,通过电平,通过1414脚脚(T1OUT)(T1OUT)发送出去发送出去l接收过程:外部接收过程:外部232232电平经过电平经过MAX232MAX232的的1313脚(脚(R1INR1IN)进入)进入到到MAX232MAX232的内部,在内部的内部

12、,在内部232232电平被电平被“降低降低”为为TTLTTL电平,电平,经过经过1212脚(脚(R1OUTR1OUT)送到)送到MCUMCU的的RXDRXD,进入,进入MCUMCU内内MAX232MAX232芯片输入输出引脚分类与基本接法芯片输入输出引脚分类与基本接法5.1.4 5.1.4 串行通信编程模型串行通信编程模型 从基本原理角度看,串行通信接口从基本原理角度看,串行通信接口SCISCI的主要功能是:接收的主要功能是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入时,把外部的单线输入的数据变成一个字节的并行数据送入MCUMCU内部;发送时,把需要发送的一个字节的并行数据转换为

13、单线内部;发送时,把需要发送的一个字节的并行数据转换为单线输出输出接受引脚接受引脚RxD 发送引脚送引脚TxD发送移位寄存器送移位寄存器接受移位寄存器接受移位寄存器SCISCI数据寄存器数据寄存器MCUMCU内部总线内部总线SCI控制寄控制寄存器存器SCISCI状态状态寄存器寄存器SCI波特率波特率寄存器寄存器5.2 5.2 AW60AW60的的SCISCI模块的编程结构模块的编程结构 从程序员角度看,涉及从程序员角度看,涉及SCISCI的有的有8 8个个8 8位寄存器,其中位寄存器,其中2 2个波特个波特率寄存器,率寄存器,1 1个数据寄存器,个数据寄存器,3 3个控制寄存器,个控制寄存器,

14、2 2个状态寄存器,个状态寄存器,只要理解和掌握这只要理解和掌握这8 8个寄存器的用法,就可以进行个寄存器的用法,就可以进行SCISCI编程编程AW60AW60的的SCISCI模块寄存器简况模块寄存器简况SCISCI波特率计算公式与波特率计算公式与SCISCI波特率寄存器波特率寄存器lSCISCI波特率波特率=f=fBUSCLKBUSCLK/(16BR)/(16BR),其中,其中f fBUSCLKBUSCLK为内部总线频率为内部总线频率SCISCI数据寄存器数据寄存器SCISCI控制寄存器控制寄存器lSCI SCI 控制寄存器控制寄存器1 1(SCIxC1SCIxC1)lSCI SCI 控制寄

15、存器控制寄存器2 2(SCIxC2SCIxC2)lSCI SCI 控制寄存器控制寄存器3 3(SCIxC3SCIxC3)SCISCI状态寄存器状态寄存器lSCISCI状态寄存器状态寄存器1 1(SCIxS1SCIxS1)lSCISCI状态寄存器状态寄存器2 2(SCIxS2SCIxS2)5.3 5.3 AW60AW60的的SCISCI构件设计与测试构件设计与测试5.3.1 SCI5.3.1 SCI构件设计概述构件设计概述 以以SCISCI的初始化、接收和发送三种基本操作为例,来说明实现构件的初始化、接收和发送三种基本操作为例,来说明实现构件化的全过程化的全过程 实现构件化编程的实现构件化编程的

16、SCISCI软件模块应当具有以下几个特点:软件模块应当具有以下几个特点:lSCISCI模块是最底层的构件,它主要向上提供三种服务,分模块是最底层的构件,它主要向上提供三种服务,分别是别是SCISCI模块的初始化、接收单个字节和发送单个字节,模块的初始化、接收单个字节和发送单个字节,向下则直接访问模块寄存器,实现对硬件的直接操作。另向下则直接访问模块寄存器,实现对硬件的直接操作。另外,从现实使用角度出发,它还需要封装接收外,从现实使用角度出发,它还需要封装接收N N个字节和个字节和发送发送N N个字节的子功能函数个字节的子功能函数lSCISCI模块在软件上对应模块在软件上对应1 1个个SCI.c

17、SCI.c程序源代码文件和程序源代码文件和1 1个个SCI.hSCI.h头文件,当需要对它进行移植时,大多数情况下只头文件,当需要对它进行移植时,大多数情况下只需简单拷贝这两个文件即可,无需对源代码文件和头文件需简单拷贝这两个文件即可,无需对源代码文件和头文件进行修改,只有当实施不同芯片之间的移植时,才需要修进行修改,只有当实施不同芯片之间的移植时,才需要修改头文件中与硬件相关的宏定义改头文件中与硬件相关的宏定义l上层构件或软件在使用该构件时,严格禁止通过全局变量上层构件或软件在使用该构件时,严格禁止通过全局变量来传递参数,所有的数据传递都直接通过函数的形式参数来传递参数,所有的数据传递都直接

18、通过函数的形式参数来接收来接收SCISCI初始化:初始化:lvoid SCIInit(uint8 SCINo,uint8 sysclk,uint16 baud)通过其中一个串口发送一个字节:通过其中一个串口发送一个字节:lvoid SCISend1(uint8 SCINo,uint8 ch)通过其中一个串口接收单个字节:通过其中一个串口接收单个字节:luint8 SCIRe1(uint8 SCINo,uint8*p)通过其中一个串口发送通过其中一个串口发送N N个字节:个字节:lvoid SCISendN(uint8 SCINo,uint8 n,uint8 ch)通过其中一个串口接收通过其中一

19、个串口接收N N个字节:个字节:luint8 SCIReN(uint8 SCINo,uint8 n,uint8 ch)5.3.2 SCI5.3.2 SCI构件的头文件构件的头文件SCI.hSCI.h头文件头文件SCI.hSCI.h中的内容可分为两个主要的部分,中的内容可分为两个主要的部分,它们分别是它们分别是5 5个函数原型的声明和外设模块寄存器相个函数原型的声明和外设模块寄存器相关信息的定义。前者给出了本关信息的定义。前者给出了本SCISCI构件对上层构件或构件对上层构件或软件所提供的接口函数,而后者则指明了本软件所提供的接口函数,而后者则指明了本“元构元构件件”与具体硬件相关的信息与具体硬

20、件相关的信息5.3.3 SCI5.3.3 SCI构件的构件的C C语言源程序文件语言源程序文件SCI.cSCI.cSCISCI构件的初始化功能函数:构件的初始化功能函数:SCIInitSCIInitSCISCI构件单字节发送功能函数:构件单字节发送功能函数:SCISend1SCISend1SCISCI构件的单字节接收功能函数:构件的单字节接收功能函数:SCIRe1SCIRe1SCISCI构件的多字节发送功能函数:构件的多字节发送功能函数:SCISendNSCISendNSCISCI构件的多字节接收功能函数:构件的多字节接收功能函数:SCIReNSCIReNSCISCI构件的字符串接收功能函数:

21、构件的字符串接收功能函数:SCISendStringSCISendString5.3.4 SCI5.3.4 SCI构件的测试工程构件的测试工程 SCI1SCI1模块首先向模块首先向PCPC机发送字符串,然后等待接收机发送字符串,然后等待接收PCPC机从串口机从串口发送来的数据,若成功接收到发送来的数据,若成功接收到1 1个数据,则立即将该数据回个数据,则立即将该数据回发给发给PCPC机,随后继续等待接收机,随后继续等待接收1 1个数据并回发,如此循环个数据并回发,如此循环串口调试工具软件界面串口调试工具软件界面串行通信收发测试软件界面串行通信收发测试软件界面5.4 AW605.4 AW60的中

22、断源与第一个带有中断的编程实例的中断源与第一个带有中断的编程实例5.4.1 5.4.1 中断处理的相关基本概念中断处理的相关基本概念中断与异常的含义中断与异常的含义中断服务例程中断服务例程ISRISR中断源与中断向量表中断源与中断向量表中断优先级中断优先级可屏蔽中断与不可屏蔽中断可屏蔽中断与不可屏蔽中断中断处理的一般过程中断处理的一般过程5.4.2 S08CPU5.4.2 S08CPU的中断实现过程的中断实现过程 堆栈的使用堆栈的使用 S08CPU S08CPU的中断过程的详细说明的中断过程的详细说明 中断的关闭与开启方法中断的关闭与开启方法 中断的处理过程一般为:中断的处理过程一般为:关中断

23、、保护现场、关中断、保护现场、执行中断服务程序、执行中断服务程序、恢复现场、开中断等恢复现场、开中断等中断过程中断过程CPUCPU中寄存器进出栈情况中寄存器进出栈情况5.4.3 AW605.4.3 AW60的中断源与中断向量表的中断源与中断向量表 AW60 AW60有有2626个中断源,按优先级从高到低的顺序分别是:个中断源,按优先级从高到低的顺序分别是:复位中断(复位中断(1 1个)、个)、SWISWI指令中断(指令中断(1 1个)、个)、引脚中断(引脚中断(1 1个)、个)、低电压检测中断(低电压检测中断(1 1个)、个)、ICGICG中断(中断(1 1个)、定时器中断(个)、定时器中断(

24、1010个)、个)、SPISPI中断(中断(1 1个)、个)、SCISCI中断(中断(6 6个)、键盘输入中断(个)、键盘输入中断(1 1个)、个)、ADCADC转换完成中断(转换完成中断(1 1个)、个)、I2CI2C中断(中断(1 1个)和实时中个)和实时中断(断(1 1个)。个)。2626个中断源只有个中断源只有1818个中断向量,有的是几个中断个中断向量,有的是几个中断源使用同一个中断向量源使用同一个中断向量5.4.4 AW605.4.4 AW60的中断编程方法的中断编程方法CWCW环境下使用环境下使用AW60AW60芯片中断的步骤是:芯片中断的步骤是:l在在main.cmain.c中

25、,依照中,依照“关总中断关总中断开模块中断开模块中断开总中断开总中断”的顺的顺序打开模块中断;序打开模块中断;l在在isr.cisr.c文件中,编写中断服务程序,修改中断向量表文件中,编写中断服务程序,修改中断向量表为了方便代码移植,在为了方便代码移植,在Includes.hIncludes.h文件中做了如下定义:文件中做了如下定义:l#define EnableInterrupts()asm(CLI)/#define EnableInterrupts()asm(CLI)/开放总中断开放总中断l#define DisableInterrupts()asm(SEI)/#define Disabl

26、eInterrupts()asm(SEI)/禁止总中断禁止总中断AW60AW60的中断编程的可概括为下述的中断编程的可概括为下述3 3个步骤:个步骤:l新建(或者复制)一个新建(或者复制)一个isr.cisr.c文件,并加入工程中文件,并加入工程中l定义中断向量表(复制定义中断向量表(复制isr.cisr.c的应修改中断向量表)的应修改中断向量表)l定义定义ISRISR并在中断向量表中填入相应并在中断向量表中填入相应ISRISR的名称的名称5.4.5 AW605.4.5 AW60的中断编程示例的中断编程示例 以以SCI1SCI1接收中断为例,实现以下功能:主程序每隔接收中断为例,实现以下功能:

27、主程序每隔1 1秒让秒让SCI1SCI1模块向模块向PCPC机发送用于握手的字符串机发送用于握手的字符串“Hello!World!”“Hello!World!”;同时,串口等待接收从;同时,串口等待接收从PCPC机发来的数据,一旦接到数据,机发来的数据,一旦接到数据,马上将该数据回发给马上将该数据回发给PCPC机。串口接收程序使用中断来实现,机。串口接收程序使用中断来实现,中断处理程序执行完毕后,又回到主程序,继续每隔中断处理程序执行完毕后,又回到主程序,继续每隔1 1秒钟秒钟向向PCPC机发送一遍机发送一遍“Hello!World!”“Hello!World!”第第5 5章章 习题习题1 1

28、简要阐述异步串行通信涉及的主要基本概念。简要阐述异步串行通信涉及的主要基本概念。2 2表征串行通信速度的物理量是什么?串行通信的传输速度有表征串行通信速度的物理量是什么?串行通信的传输速度有限制吗?限制吗?3 3MCUMCU与与PCPC之间进行串行通信,为什么要进行电平转换?如何之间进行串行通信,为什么要进行电平转换?如何 进行电平转换?进行电平转换?4 4给出给出SCISCI编程的通用模型。编程的通用模型。5 5简述中断的作用与处理过程。简述中断的作用与处理过程。6 6S08S08系列系列MCUMCU都有哪些中断源?都有哪些中断源?7 7S08S08系列系列MCUMCU的中断执行过程分为哪几

29、个步骤?的中断执行过程分为哪几个步骤?8 8给出给出AW60AW60中断编程框架与基本步骤。中断编程框架与基本步骤。9.9.用一种高级语言实现用一种高级语言实现PCPC方串行数据收发的通用程序(要求:方串行数据收发的通用程序(要求:从从PCPC方发送数据方发送数据A A到到MCUMCU,MCUMCU收到后,判断是否是收到后,判断是否是A A,若是,若是,回发给回发给PCPC机,在机,在PCPC机显示机显示“串行口正常串行口正常”,若不是,则在,若不是,则在PCPC机显示:机显示:“通信有误通信有误”。)。)10.10.在上一题测试的基础上编写通信程序,实现如下功能:通过在上一题测试的基础上编写

30、通信程序,实现如下功能:通过PCPC机发送一个命令以控制接在机发送一个命令以控制接在PTA0PTA7PTA0PTA7口的口的8 8个小灯亮暗状个小灯亮暗状态,各个小灯初始状态都为暗,首先进行通信测试,态,各个小灯初始状态都为暗,首先进行通信测试,PCPC机发机发送送“A”“A”,若,若MCUMCU接收到则接收到则8 8个小灯全亮,并回送字符个小灯全亮,并回送字符“A”“A”,虽然虽然MCUMCU接收到但有问题,不是接收到但有问题,不是“A”“A”,说明有误码,则,说明有误码,则4 4个小个小灯全亮,并回送字符灯全亮,并回送字符“0”“0”,否则,否则8 8个小灯全暗无反应,通信个小灯全暗无反应,通信测试成功后进入控制状态,测试成功后进入控制状态,PCPC机发送字符串机发送字符串“11”“11”,PTA0PTA0口口灯亮;发送灯亮;发送“10”“10”,PTA0PTA0口灯暗;发送口灯暗;发送“21”“21”,PTA1PTA1口灯亮;口灯亮;发送发送“20”“20”,PTA1PTA1口灯暗;依此类推,当给口灯暗;依此类推,当给PTAPTA口发送口发送“01”“01”,8 8个小灯全亮,发送个小灯全亮,发送“00”“00”,全暗。,全暗。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁