第3节 GP32 SCI模块寄存器
推荐给好友
打印
加入收藏
更新于2008-07-25 19:33:46

本节从编程角度介绍MC908GP32单片机的SCI。从外部引脚来看,负责串行通信的是PTE0/TxD、PTE1/RxD两个引脚,当允许SCI时,它们作为串行通信引脚,分别称为串行发送引脚TxD、串行接收引脚RxD。从程序员角度看,涉及SCI的有7个寄存器,其中1个波特率寄存器,3个控制寄存器,2个状态寄存器,1个数据寄存器,只要理解和掌握这7个寄存器的用法,就可以进行SCI编程。

表7-3给出了GP32芯片SCI模块的寄存器。

1.SCI波特率寄存器(SCI Baud Rate Register,SCBR)

SCI波特率寄存器SCBR的作用是设置串行通信的波特率。通常情况下,选择内部总线时钟为串行通信的时钟源,此时利用SCBR对总线频率fBUS可以进行分频得到串行通信的波特率。SCBR的地址是:$0019,定义为:
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义 未定义 未定义 SCP1 SCP0 未定义 SCR2 SCR1 SCR0
复位 0 0 0 0 0 0 0 0
D7、D6、D3:未定义。设置时,为了方便,一般取0。
D5~D4 — SCP位:波特率预分频位(SCI Baud Rate Prescaler Bits)。这2位定义波特率预分频值,记为:PD,定义如下:
SCP1、SCP0=00 PD=1
=01 PD=3
=10 PD=4
=11 PD=13
D2~D0 — SCR位:波特率选择位(SCI Baud Rate Select Bits)。这3位定义波特率另一分频值,记为:BD,定义如下:
SCR2、SCR1、SCR0=000 BD=1 (20)
=001 BD=2 (21)
=010 BD=4 (22)
=011 BD=8 (23)
=100 BD=16 (24)
=101 BD=32 (25)
=110 BD=64 (26)
=111 BD=128 (27)
设fSCI为串行通信时钟源频率,fSCI= fBUS或CGMXCLK,取决于CONFIG2的SCIBDSRC,一般设定SCIBDSRC=1,SCI用内部总线时钟,则fSCI= fBUS,则波特率的定义公式为:
Bt=fBUS /(64×PD×BD)
例如:fBUS=2.4576MHz,取PD=1(即SCP1、SCP0=00)、BD=4(即SCR2、SCR1、SCR0=010),则波特率=2457600 /(64×1×4) = 9600。

2.SCI控制寄存器1(SCI Control Register 1,SCC1)

SCI控制寄存器共有3个,分别称为SCC1、SCC2、SCC3。对它们的写入,实现对SCI的设置。SCC1的地址是:$0013,定义为:
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义 LOOPS ENSCI TXINV M WAKE ILTY PEN PTY
复位 0 0 0 0 0 0 0 0
初学时重点掌握其中的D6、D4、D1和D0位。
D7 — LOOPS位:循环模式选择位(Loop Mode Select Bit),LOOPS=1,循环模式;LOOPS=0,正常功能。在循环模式下,接收引脚RxD与SCI内部断开,内部发送数据直接作为接收的输入,用于自测试。
D6 — ENSCI位:SCI允许位(Enable SCI Bit)。ENSCI=1,允许SCI,这意味着PTE0/TxD、PTE1/RxD两个引脚作为串行通信引脚使用,而不作为普通I/O。否则,若设ENSCI=0,则禁止SCI,PTE0/TxD、PTE1/RxD两个引脚则作为普通I/O使用。
D5 — TXINV位:发送反转标志位(Transmit Inversion Bit)。TXINV=1,发送输出为反码;TXINV=0正常码输出。
D4 — M位:模式—字符长度选择位(Mode — Character Length Bit)。定义收发数据格式,只有两种可能:M=1,9位字符;M=0,8位字符。
D3 — WAKE位:唤醒条件位(Wakeup Condition Bit)。WAKE=1,地址唤醒;WAKE=0,空闲线唤醒。唤醒功能(Wake-up feature)并不是常用功能,初学时可以不需深入理解。对唤醒功能的介绍放在7.6节。
D2 — ILTY位:空闲线类型位(Idle Line Type Bit),决定SCI何时开始计数“空闲字符”的位数。ILTY=1,空闲字符位从“停止位”开始计数;ILTY=0,空闲字符位从“起始位”开始计数。从“起始位”开始计数,则“停止位”前的一串“1”可能产生错误的空闲线条件。从“停止位”开始计数,可避免错误的空闲线识别,但需要适当地同步发送操作。
D1 — PEN位:奇偶校验允许位(Parity Enable Bit)。PEN=1,允许奇偶校验;PEN=0,不进行奇偶校验。
D0 — PTY位:奇偶校验类型选择位(Parity Bit)。PTY=1,奇校验;PTY=0,偶校验。不进行奇偶校验时,该位无意义,一般写0。

3.SCI控制寄存器2(SCI Control Register 2,SCC2)

SCC2的地址是:$0014,定义为:
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义 SCTIE TCIE SCRIE ILIE TE RE RWU SBK
复位 0 0 0 0 0 0 0 0
初学时重点掌握其中的D3和D2位。
D7 — SCTIE位:发送中断允许位(SCI Transmit Interrupt Enable Bit)。SCTIE=1,允许产生发送中断请求;反之不允许。
D6 — TCIE位:发送完成中断允许位(Transmission Complete Interrupt Enable Bit)。TCIE=1,允许发送完成产生中断;反之不允许。
D5 — SCRIE位:接收中断允许位(SCI Receive Interrupt Enable Bit)。SCRIE=1,允许产生接收中断请求;反之不允许。
D4 — ILIE位:空闲线中断允许位(Idle Line Interrupt Enable Bit)。ILIE=1,允许产生空闲中断请求;反之不允许。
D3 — TE位:发送器允许位(Transmitter Enable Bit)。TE=1,允许发送器发送;反之不允许发送器发送。
D2 — RE位:接收器允许位(Receiver Enable Bit)。RE=1,允许接收器接收;反之不允许接收器接收。
D1 — RWU位:接收器唤醒位(Receiver Wakeup Bit)。RWU=1,等待状态;RWU=0,正常操作。
D0 — SBK位:发送终止位(Send Break Bit)。SBK=1,发送终止字符(逻辑1);SBK=0,正在发送非终止字符。

4.SCI控制寄存器3(SCI Control Register 3,SCC3)

SCC3的地址是:$0015,定义为:
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义 R8 T8 DMARE DMATE ORIE NEIE FEIE PEIE
复位 0 0 0 0 0 0 0 0
一般情况下,该寄存器不用。初学时主要了解有单字节校验时使用D7和D6位。
D7 — R8位:接收位8 (Received bit 8)。该位只读。
D6 — T8位:发送位8(Transmitted Bit 8)。
D5、D4 — 不用。
D3 — ORIE位:接收器溢出中断允许位(Receiver Overrun Interrupt Enable Bit)。ORIE=1,允许接收器溢出中断;反之不允许。
D2 — NEIE位:接收器噪声错误中断允许位(Receiver Noise Error Interrupt Enable Bit)。NEIE=1,允许接收器噪声错误中断;反之不允许。
D1 — FEIE位:接收器帧错误中断允许位(Receiver Framing Error Interrupt Enable Bit)。FEIE=1,允许接收器帧错误中断;反之不允许。
D0 — PEIE位:接收器奇偶错误中断允许位(Receiver Parity Error Interrupt Enable Bit)。PEIE=1,允许接收器奇偶错误中断;反之不允许。

5.SCI状态寄存器1(SCI Status Register 1,SCS1)

SCI状态寄存器共有2个,分别称为SCS1、SCS2。对它们的读出,可以得到当前SCI的状态。SCS1为只读寄存器,它的地址是:$0016,定义为:
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义(只读) SCTE TC SCRF IDLE OR NF FE PE
复位 1 1 0 0 0 0 0 0
初学时主要掌握其中的D7和D5位。
D7 — SCTE位:发送缓冲区空标志位 (SCI Transmitter Empty bit)。该位为1时表明要发送的数据已经移入发送移位寄存器,可以发送一个新的数据。
D6 — TC位:发送完成标志位(Transmission Complete Bit)。该位为1,表明发送已经完成,该位为0,表明发送正在进行。
D5 — SCRF位:接收器满标志位(SCI Receiver Full Bit)。该位为1,表明接收器已满,可以从SCI数据寄存器SCDR中读取收到的数据。
D4 — IDLE位:接收器空闲标志位(Receiver Idle Bit)。该位为1,表明接收器处于空闲状态。
D3 — OR位:接收器溢出标志位(Receiver Overrun Bit)。该位为1,表明接收器溢出。
D2 — NF位:接收器噪声标志位(Receiver Noise Flag Bit)。该位为1,表明接收器出现噪声错误。
D1 — FE位:接收器帧错误标志位(Receiver Framing Error Bit)。该位为1,表明接收器出现帧错误。
D0 — PE位:接收器奇偶错误标志位(Receiver Parity Error Bit)。该位为1,表明接收器出现奇偶校验错误。
注意:读取上述标志位及SCDR数据,系统自动清除相应的标志位(SCTE位除外)。读取SCTE位及向SCDR写数据,系统自动清除SCTE标志位。

6.SCI状态寄存器2(SCI Status Register 2,SCS2)

SCS2为只读寄存器,它的地址是:$0017,定义为:
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义(只读) 未定义 未定义 未定义 未定义 未定义 未定义 BKF RPF
复位 0 0 0 0 0 0 0 0
该寄存器通常情况下不用。
D7~D2:未定义。
D1 — BKF位:终止码标志位(Break Flag Bit)。该位为1,检测到终止码。读取该位或向SCDR写数据,系统自动清除该标志位。
D0 — RPF位:接收进行标志位(Reception in Progress Flag Bit)。该位为1,表明正在接收。该位不能产生中断请求,接收器检测到错误开始位或空闲特征,复位该位。

7.SCI数据寄存器(SCI Data Register —SCDR)

SCDR为SCI系统最常用的寄存器,它的地址是:$0018。写入时,为要发送的8位数据,记为:T7~T0;读出时,为接收的8位数据,记为:R7~R0。不受复位影响。注意:不要对该寄存器使用读-修改-写命令。

<<上一节 下一节>>




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.