分享

【转】MC9S12XS128之SCI(1)

 建鹏1124 2013-04-05

【转】MC9S12XS128之SCI(1)

    串行通信分为同步通信和异步通信。串行通信接口都具有发送引脚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时,发送器的输出作为接收器的输入。

M:字符长度选择位。M=0时,8位数据传送(一个开始位,8个数据位,一个停止位)。M=1时,9位数据传送(一个开始位,9个数据位,一个停止位)。

WAKE:唤醒方式位。WAKE=0时,为空闲线唤醒。WAKE=1时,为地址线唤醒。

ILT:全1空闲字符位计算方式位。此位用于决定SCI什么时候开始计算空闲字符的位数。ILT=0时,空闲字符从起始位开始计数。ILT=1时,空闲字符位从停止位开始计数。

PE:奇偶校验允许位。PE=1,则允许奇偶校验。

PT:奇偶校验类型选择位。PT=0,则为偶校验。PT=1,则为奇校验。

 

SCIASR1:SCI可选择状态寄存器1(当AMAP=1时有效)

RXEDGIF:接收输入有效边沿中断标志位。当RXD引脚上有有效边沿(当RXPOL = 0时,下降沿有效,当 RXPOL = 1时,上升沿有效)时,该位置1,写1清除标志位。

BERRV:位错误值。此位反映RXD输入的状况,此位只有在BERRIF = 1时才有意义。BERRV=0时,表示当应该是高电平时,出现了低电平;BERRV=1时,表示应该是低电平时,出现了高电平。

BERRIF:位错误中断标志位。此位置1时,表示有错误发生。向其写1,可以清除标志位。

BKDIF:终止检测中断标志位。BKDIF=0时,表示没有接收到终止信号。BKDIF=1时,表示接收到了终止信号。

 

SCIACR1:SCI可选择控制寄存器1(当AMAP=1时有效)

RXEDGIE:接收输入有效边沿中断使能位。RXEDGIE=1,则 RXEDGIF置位时,能产生中断。

BERRIE:位错误中断使能位。BERRIE=1,则BERRIF置位时,能产生中断。

BKDIE:终止检测中断使能位。BKDIE=1,则BKDIF置位时,能产生中断。

 

SCIACR2:SCI可选择控制寄存器2(当AMAP=1时有效)

BERRM[1:0]:位错误模式位。这两位决定位错误检测的功能,对应功能如下表:

 

BKDFE:终止检测使能位。置1时,则使能。

 

SCICR2:SCI控制寄存器2

TIE:发送中断允许位。置1,则允许产生发送中断请求,即发送数据寄存器为空时,相应的标志位为TDRE。

TCIE:发送完成中断允许位。置1,则允许产生发送完成中断,相应的标志位为TC。

RIE:接收完毕中断允许位。置1,则允许产生接收中断请求,即接收数据寄存器为满时,相应的标志位为RDRF,或是溢出标志位OR。

ILIE:空闲线中断允许位。置1,则允许产生空闲中断请求,相应的标志位为IDLE。

TE:发送器允许位。置1,则允许发送器发送。

RE:接收器允许位。置1,则允许接收器接收。

RWU:接收器唤醒位。RWU=0时,为正常状态。RWU=1时,使能唤醒功能,同时禁止接收器中断请求。

SBK:发送终止位。SBK=0时,没有终止符。SBK=1时,发送终止符。

 

SCISR1:SCI状态寄存器1

TDRE:发送数据寄存器空标志位。TDRE=1时,表示要发送的数据已经移入发送移位寄存器,数据寄存器SCIDR为空,可以发送下一个数据。

TC:发送完成标志位。TC=1,表示发送已完成,此时TXD引脚空闲。

RDRF:接收数据寄存器满标志位。RDRF=1,表示接收器接收数据完毕,可以从数据寄存器SCIDR中读取收到的数据。

IDLE:线路空闲标志位。(当M=0时)当接收到10个连续的逻辑1,或(当M=1时)当接收到11个连续的逻辑1时,IDLE置1。IDLE=1时,表示接收器处于空闲状态。但是,当RWU=1时,空闲线的状态不能使IDLE置位。

OR:溢出标志位。当还没来得及读取数据寄存器中的数据,下一帧数据就到来时,OR位置,表示溢出。此时丢失接收移位寄存器中的数据,而数据寄存器中的数据不受影响。

NF:噪声标志位。NF=1时,表示接收器出现噪声错误。

FE:帧错误标志位。FE=1时,表示接收器出现帧错误,即停止位上接收到的逻辑0,此时禁止数据继续接收,直到清除此标志位。

PF:奇偶错误标志位。PF=1时,表示接收器出现奇偶校验错误。

 

SCISR2:SCI状态寄存器2

AMAP:AMAP=0,时SCIBDH,SCIBDL, SCICR1有效。AMAP=1,则SCIASR1,SCIACR1, SCIACR2有效。因为两组寄存器共用同一段地址,故通过AMAP来选择不同的寄存器。

TXPOL:发送极性。TXPOL=0时,为正常极性。TXPOL=1时,为相反极性。

RXPOL:接收极性。RXPOL=0时,为正常极性。RXPOL=1时,为相反极性。

BRK13:终止传送字符长度。当BRK13=0时,终止字符为10或11位。当BRK13=1时,终止字符为13或14位。

TXDIR:单线模式下发送引脚的数据传输方向位。在单线模式下,用该位来决定TXD引脚用于发送还是接收数据。当TXDIR=0时,TXD用于接收数据。当TXDIR=1时,TXD用于发送数据。当LOOPS=1,RSRC=1时,使能单线模式。

RAF:接收进行标志位。RAF=1,表示正在接收数据。

 

SCIDR:(SCIDRH:SCIDRL) SCI数据寄存器


当用8位数据格式时,只使用SCIDRL寄存器。当使用9位数据格式发送数据时,要先写SCIDRH寄存器,再写SCIDRL寄存器。当为9位数据发送格式,即M=1时,R8为接收到的第9位数据,T8则用来存放要发送的第9位数据。对于SCIDRL,读出时,则为接收的数据,记为R[7:0]。写入时,则为要发送的数据,记为T[7:0]。

 

                                                                                                                                                 ——BY DABAO

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多