当前位置:文档之家› 飞思卡尔8位单片机MC9S08第08章 串行通信接口SCI与串行外设接口SPI

飞思卡尔8位单片机MC9S08第08章 串行通信接口SCI与串行外设接口SPI


DMARE DMATE ORIE
发送位8 接收位8
DMA发送 允许位
接收器噪 声错误中 断允许位
接收器奇偶错 误中断允许位 接收器帧 错误中断 允许位
DMA接收 允许位
接收器溢出 中断允许位
8.3 SCI模块的编程结构
(5) SCI状态寄存器1(SCI Status Register 1,SCS1 )
8.3 SCI模块的编程结构
8.3.2 串行口初始化与收发编程的基本方法
(1)SCI初始化
对SCI进行初始化,最少由以下三步构成: 第一步:定义波特率。
LDA #%00000010 STA SCBR ;总线频率fBUS=2.4576MHz,定义波特率Bt=9600
第二步:写控制字到SCI控制寄存器1(SCC1)。
SCI 通 常 采 用 NRZ 数 据 格 式 , 即 : standard non-return-zero mark/space data format,译为:“标准不归零传号/空号数据格 式”。“不归零”的最初含义是:用正、负电平表示二进制值,不使 用零电平。“mark/space”即“传号/空号”分别是表示两种状态的物 理名称,逻辑名称记为“1/0”。下图给出了 8位数据、无校验情况的 传送格式。
SCC1的地址是:$0013 ,定义为:
数据位 定义 复位 D7 0 D6 0 D5 0 D4 0 D3 0 D2 0 D1 0 D0 0
LOOPS ENSCI TXINV M WAKE
ILTY PEN PTY
SCI允许位 循环模式 选择位
模式-字符 长度选择位
空闲线 类型位
奇偶校验类 型选择位 奇偶校验 允许位
MC68HC908GP32的SCI有7个寄存器,地址为$0013~$0019 。
(1)SCI波特率寄存器(SCI Baud Rate Register,SCBR)
SCBR的作用是设置串行通信的波特率 ,其地址是$0019。 D7、D6、D3:未定义; D5~D4 — SCP:波特率预分频位(SCI Baud Rate Prescaler Bits) SCP1、SCP0=00 01 10 11 PD= 1 3 4 13
LDA #%01000000 STA SCC1 ;设置允许SCI,正常码输出、8位数据、无校验
第三步:写控制字到SCI控制寄存器2(SCC2)。
LDA #%00001100 STA SCC2 ;设置允许发送、允许接收,查询方式收发
8.3 SCI模块的编程结构
(2)发送一个数据与接收一个数据
发送数据是通过判断状态寄存器SCS1的第7位(SCTE)进行 的,而接收数据是通过判断状态寄存器SCS1的第5位(SCRF)进 行的。不论是发送还是接收,均使用SCI数据寄存器SCDR。发送时, 将要发送的数据送入SCDR即可,接收时,从SCDR中取出的即是收 到的数据。
8.4 串行通信编程实例
8.4.2 08汇编语言串行通信测试实例
(1)查询方式MCU方主程序
MCU方的程序功能是:把通过串行口收到的数据发送回去。
8.1 串行通信基本知识概要
(3)奇偶校验 字符奇偶校验检查(character parity checking)称为
垂直冗余检查( vertical redundancy checking,VRC),它是每 个字符增加一个额外位使字符中“1”的个数为奇数或偶数。 奇校验:如果字符数据位中“1”的数目是偶数,校验位应为“1”, 如果“1”的数目是奇数,校验位应为“0”。 偶校验:如果字符数据位中“1”的数目是偶数,则校验位应为 “0”,如果是奇数则为“1”。
开始位 第0 位 第1 位 第2 位 第3 位 第 4 位 第5 位 第6 位 第7 位 停止位
SCI数据格式
8.1 串行通信基本知识概要
(2)串行通信的波特率 波特率(baud rate):每秒内传送的位数。
波特率单位是位/秒,记为bps。通常情况下,波特率的单位可以 省略。通常使用的波特率有300、600、900、1200、1800、2400、 4800、9600、19200、38400。
SCRIE ILIE
发送完成中 断允许位 发送中断 允许位
空闲线中 断允许位
接收器 允许位
发送终止位
接收中断 允许位
发送器允许位
接收器唤 醒位
8.3 SCI模块的编程结构
(4) SCI控制寄存器3(SCI Control Register 3,SCC3)
SCC3的地址是:$0015 ,定义为:
数据位 定义 复位 D7 R8 0 D6 T8 0 D5 0 D4 0 D3 0 D2 NEIE 0 D1 FEIE 0 D0 PEIE 0
接收引脚 RxD 接收移位寄存器 发送引脚 TxD 发送移位寄存器
SCI 数据寄存器
MCU 的 内 部 总 线 (Internal Bus)
SCI 控制寄存器
SCI状态寄存器 SCI编程模型
SCI波硬件电路与基本编程原理
8.3 SCI模块的编程结构
8.3.1 SCI的寄存器
数据位 定义 复位 D7 x 0 D6 x 0 D5 SCP1 0 D4 D3 D2 D1 D0 SCP0 x SCR2 SCR1 SCR0 0 0 0 0 0
8.3 SCI模块的编程结构
(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
未定义 终止码标志位 接收进行 标志位
8.3 SCI模块的编程结构
(7) SCI数据寄存器(SCI Data Register ,SCDR )
SCDR为SCI系统最常用的寄存器,它的地址是:$0018。写入 时,为要发送的8位数据,记为:T7~T0;读出时,为接收的8位数 据,记为:R7~R0。不受复位影响。
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
MC68HC908GP32
1 0.1μ +5V PLL滤波 10K 0.47μ 0.01μ 2 3 4 5 6 9 10 11 12 13 14 15 16 17 18 19 20 0.1μ 复位电路 +5V RST 7 8 10K 0.1μ +5V 51Ω +5V
8.1 串行通信基本知识概要
8.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。
发送反转 标志位
唤醒条件位
8.3 SCI模块的编程结构
(3) SCI控制寄存器2(SCI Control Register 2,SCC2)
SCC2的地址是:$0014 ,定义为:
数据位 定义 复位 D7 SCTIE 0 D6 TCIE 0 D5 0 D4 0 D3 TE 0 D2 RE 0 D1 RWU 0 D0 SBK 0
接收器奇 偶错误标 志位 接收器帧错 误标志位
8.3 SCI模块的编程结构
(6) SCI状态寄存器2(SCI Status Register 2,SCS2 )
SCS2的地址是:$0017 ,定义为:
数据位 定义(只读) 复位 0 0 0 0 0 0 D7 D6 D5 D4 D3 D2 D1 BKF 0 D0 RPF 0
232电平 TTL电平
OUT IN
OUT IN
10K 32.768 150K 15P 20P 晶振电路
16 15 14 13 12 11 10 9 MAX232CPE 1 2 3 4 5 6 7 8 +5V 1μ×4
TTL电平 转为232电平
8.2 SCI的外围硬件电路与基本编程原理
8.2.2 SCI的基本编程原理
;串行发送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,可以取出数据 返回
设fSCI为串行通信时钟源频率,fSCI= fBUS或CGMXCLK,取决于 CONFIG2的SCIBDSRC,一般设定SCIBDSRC=1,SCI用内部总线时 钟,则fSCI= fBUS,则波特率的定义公式为: Bt=fBUS /(64×PD×BD)
8.3 SCI模块的编程结构
(2) SCI控制寄存器1(SCI Control Register 1,SCC1)
6 1 2
7 3
8 4
9 5
9芯串行接口排列
8.1 串行通信基本知识概要
返回
8.2 SCI的外围硬件电路与基本编程原理
8.2.1 SCI的外围硬件电路
(1)电源供给与滤波 (2)晶振电路 (3)复位电路 (4)SCI电平转换电路
8.2 SCI的外围硬件电路与基本编程原理
具有串行通信功能的 MC68HC908G932最小系统电路原理图
8.1 串行通信基本知识概要
相关主题