当前位置:文档之家› 嵌入式技术基础与实践第7章 串行通信接口SCI

嵌入式技术基础与实践第7章 串行通信接口SCI


接收器溢 出标志位
接收器帧错 误标志位
《嵌入式技术基础与实践》
(6) SCI状态寄存器2(SCI Status Register 2, SCS2 )
SCS2的地址是:$0017 ,定义为:
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义(只读)
复位 0 0
BKF
RPF
0
未定义
0
0
0
0
0
终止码标志位
;串行发送A中的数
BRCLR 7,SCS1,* STA SCDR ;SCS1.7=0? 为0则等待 ;SCS1.7=1,可以发送数据
;查询方式接收一个串行数据,接收的数据放入寄存器A中
BRCLR 5,SCS1,*
LDA SCDR
;SCS1.5=0? 为0则等待
;SCS1.5=1,可以取出数据
返回
《嵌入式技术基础与实践》
D5 SCP1
D4 D3 D2 D1 D0 SCP0 x SCR2 SCR1
0
0
0
0
0
0
《嵌入式技术基础与实践》
(1)SCI波特率寄存器(SCI Baud Rate Register, SCBR)
D2~D0 — SCR:波特率选择位(SCI Baud Rate Select Bits),定义 波特率另一分频值,记为:BD,定义如下: SCR2、1、0 =000 BD = 1 001 2 010 011 100 101 110 111 4 8 16 32 64 128
设fSCI为串行通信时钟源频率,fSCI= fBUS或CGMXCLK,取决于 CONFIG2的SCIBDSRC,一般设定SCIBDSRC=1,SCI用内部总线时钟,则 fSCI= fBUS,则波特率的定义公式为: Bt=fBUS /(64×PD×BD)
《嵌入式技术基础与实践》
(2) SCI控制寄存器1(SCI Control Register 1,SCC1)
“1”的数目是奇数,校验位应为“0”。
偶校验:如果字符数据位中“1”的数目是偶数,则校验位应为“0”,如 果是奇数则为“1”。
《嵌入式技术基础与实践》
(4)串行通信的传输方式
单工(Simplex):数据传送是单向的,一端为发送端,另一端为接收 端。这种传输方式中,除了地线之外,只要一根数据线就可以了。有线广播 就是单工的。 全双工(Full-duplex):数据传送是双向的,且可以同时接收与发送 数据。这种传输方式中,除了地线之外,需要两根数据线,站在任何一端的 角度看,一根为发送线,另一根为接收线。一般情况下,MCU的异步串行通 信接口均是全双工的。 半双工(Half-duplex):数据传送也是双向的,但是在这种传输方式 中,除了地线之外,一般只有一根数据线。任何一个时刻,只能由一方发送 数据,另一方接收数据,不能同时收发。在freescale的HC08系列MCU中, 监控模式的通信就采用这种方式。
开始位 第0 位 第1 位 第2 位 第3 位 第 4 位 第5 位 第6 位 第7 位 停止位
SCI数据格式
《嵌入式技术基础与实践》
(2)串行通信的波特率
波特率(baud rate):每秒内传送的位数。 波特率单位是位/秒,记为bps。通常情况下,波特率 的单位可以省略。通常使用的波特率有300、600、900、
数据位 定义 复位
DMARE DMATE ORIE 0 0 0
发送位8 接收位8
DMA发送 允许位
接收器噪 声错误中 断允许位
接收器奇偶错 误中断允许位收器溢出 中断允许位
《嵌入式技术基础与实践》
(5) SCI状态寄存器1(SCI Status Register 1, SCS1 )
发送反转 标志位
唤醒条件位
《嵌入式技术基础与实践》
(3) SCI控制寄存器2(SCI Control Register 2, SCC2)
SCC2的地址是:$0014 ,定义为:
数据位 定义 D7 SCTIE D6 TCIE D5 D4 D3 TE D2 RE D1 RWU D0 SBK
SCRIE ILIE
《嵌入式技术基础与实践》
7.1.2 RS-232C总线标准
MCU引脚一般输入/输出使用TTL电平,而TTL电平的“1”和“0” 的特征电压分别为2.4V和0.4V,适用于板内数据传输。为了使 信号传输得更远,美国电子工业协会EIA(Electronic Industry Association) 制订了串行物理接口标准RS-232C。RS-232C 采用负逻辑,-3V~-15V为逻辑“1”,+3V~+15V为逻辑“0”。 RS-232C最大的传输距离是30m,通信速率一般低于20Kbps。
MCU 的 内 部 总 线 (Internal Bus)
SCI 控制寄存器
SCI状态寄存器 SCI编程模型
SCI波特率寄存器
返回
《嵌入式技术基础与实践》
7.3 GP32 SCI模块寄存器
SCI的寄存器
MC68HC908GP32的SCI有7个寄存器,地址为$0013~$0019 。
(1)SCI波特率寄存器(SCI Baud Rate Register,SCBR)
《嵌入式技术基础与实践》
7.1.2 RS-232C总线标准
RS-232接口,简称“串口”, 它主要用于连接具有同样接口的室 内设备。目前几乎所有计算机上的 串行口都是9芯接口。右图给出了9 芯串行接口的排列位置,相应引脚
9芯串行接口排列 6 7 2 8 9 4 5
1
3
含义见表7-1。
表7-1 9芯串行接口引脚含义表 引脚 功 能 号 1 2 3 4 5 返回 接收线信号检测(载波检 测DCD) 接收数据线(RXD) 发送数据线(TXD) 数据终端准备就绪( DTR) 信号地(SG) 引脚 功 能 号 6 7 8 9 数据通信设备准备就 绪(DSR) 请求发送(RTS) 清除发送 振铃指示
第三步:写控制字到SCI控制寄存器2(SCC2)。
LDA #%00001100 STA SCC2 ;设置允许发送、允许接收,查询方式收发
《嵌入式技术基础与实践》
(2)发送一个数据与接收一个数据
发送数据是通过判断状态寄存器SCS1的第7位(SCTE)进行的,而 接收数据是通过判断状态寄存器SCS1的第5位(SCRF)进行的。不论 是发送还是接收,均使用SCI数据寄存器SCDR。发送时,将要发送的数 据送入SCDR即可,接收时,从SCDR中取出的即是收到的数据。
第7章 串行通信接口(SCI)
主要内容

异步串行通信的基础知识 电平转换电路与SCI通用编程原理
GP32SCI模块寄存器
串行口初始化与收发编程的基本方法 串行通信通用函数与测试实例

串行通信进一步讨论
《嵌入式技术基础与实践》
7.1异步串行通信的基础知识
7.1.1 基本概念
(1)异步串行通信的格式
7.5 串行通信通用函数与测试实例
7.5.1 串行通信子程序
串行通信头文件 SCI.h 串行通信驱动文件 SCI.c
《嵌入式技术基础与实践》
串行通信头文件 SCI.h
//[SCI.h]串行通信头文件-------------------------#include "GP32C.h" //GP32 MCU映像寄存器名定义 #include "Type.h" //类型别名定义 #define ReSendStatusR SCS1 //SCI状态寄存器 #define ReTestBit 5 //接收缓冲区满标志位 #define SendTestBit 7 //发送缓冲区空标志位 #define ReSendDataR SCDR //数据寄存器 //串行通信函数声明 void SCIinit(void); //串行口初始化 void SCIsend1(INT8U o); //发送1字节 void SCIsendN(INT8U n, INT8U ch[]); //发送n字节 INT8U SCIre1(INT8U *p); //接收1字节 INT8U SCIreN(INT8U n, INT8U ch[]); //接收n字节 _____________________________________________
1200、1800、2400、4800、9600、19200、38400。
《嵌入式技术基础与实践》
(3)奇偶校验
字符奇偶校验检查(character parity checking)称为垂直冗余
检查( vertical redundancy checking,VRC),它是每个字符增加一个 额外位使字符中“1”的个数为奇数或偶数。 奇校验:如果字符数据位中“1”的数目是偶数,校验位应为“1”,如果
《嵌入式技术基础与实践》
7.2电平转换电路与SCI通用编程原理
7.2.1 SCI的外围硬件电路
具 有 SCI 接 口 的 MCU , 一 般 具 有 发 送 引 脚 (TxD) 与 接 收 引 脚 (RxD),不同公司或不同系列的MCU,使用的引脚缩写名可能不 一致,但含义相同。SCI的外围硬件电路,主要目的是将MCU的 发送引脚TxD与接收引脚RxD的TTL电平,通过RS-232电平转 换芯片转换为RS-232电平。下图给出一个基本SCI电平转换电 路。 TTL电平 232电平
7.4 串行口初始化与收发编程的基本方 法
(1)SCI初始化
对SCI进行初始化,最少由以下三步构成:
第一步:定义波特率。
LDA #%00000010 STA SCBR ;总线频率fBUS=2.4576MHz,定义波特率Bt=9600
第二步:写控制字到SCI控制寄存器1(SCC1)。
LDA #%01000000 STA SCC1 ;设置允许SCI,正常码输出、8位数据、无校验
相关主题