美文网首页
2020/09/28_SCI串口模块实验纪要

2020/09/28_SCI串口模块实验纪要

作者: HACHI_8 | 来源:发表于2020-10-09 08:29 被阅读0次

    1、SCI模块简介

    SCI模块包含3部分:RS232、RS485、LIN。

    2、通信设置步骤

    (1)波特率设置:涉及寄存器SCIBDH/SCIBDL,其中,SCIBDH的最高位IREN位(调制解调使能)需置0,否则不能正常通讯。 IREN=0时,波特率和时钟、寄存器位(12:0)之间的关系如下:

                           bordrate=SCI_CLK/(16xSBR[12:0]),SCI_CLK为芯片系统总线BUS时钟频率。

    受限于时钟频率的设定,通过寄存器设置的值不一定完全等于常见的波特率值,但尽量接近,以保证传输可靠性。

    (2)SCICR1控制寄存器1:设置数据格式、停止位、奇偶校验等;SCICR2控制寄存器2设置:发送/接收中断使能、发送/接收模块使能、中止符发送使能。

    通常只开启接收中断,发送/接收使能。若要发送数据,采取查询方式。

    (3)SCISR1状态寄存器:发送、接收相关的完成、中断、错误标志位。 进入中断或以查询方式操作时,需读取或清除相应的位。

    (4)SCIDRH、SCIDRL数据寄存器:发送和接收使用同一个寄存器,默认8位数据的模式下,数据保存在SCIDRL中,9位数据格式的模式下,SCIDRH的最高位保存接收到的第9位数据、次高位保存需发送的第9位数据。

    3、实例演示:中断模式接收、查询模式发送(将接收到的数据原样发回)

    (1)按照前述,使用SCI0模块,设置好相关的寄存器值,设定串口的相关参数:波特率、数据格式、停止位、奇偶校验。开接收中断,使能发送和接收模块。

            CLR SCI0CR2                    ; 禁止SCI0模块 ,等后续设置完成后再使能

            LDAA    SCI0SR1              ;虚拟读,清除相关的标志位

            LDAA    SCI0DRL              ; 虚拟读,清除接收标志位

            CLR    SCI0SR2                                             

            MOVW    #$0104,SCI0BD        ;设置波特率为 9600左右                               

            CLR    SCI0CR1                       ;设置数据格式、停止位、奇偶校验                       

            BCLR    SCI0SR2,$80              ;使用普通寄存器设置   SR1, SCIBD

            MOVB    #$2C,SCI0CR2          ;使能接收中断,使能发送和接收模块

    (2)编写中断处理(如果使能 了发送中断,也在这儿处理,共用一个中断向量)

            MOVB  #$0C,SCI0CR2             ; 进入中断后,第一步先关接收中断,以防多次中断。(注意发送和接收模块使能不能关)   中断模块的常见操作模式。

            LDAA    SCI0SR1                     ;读SCI0SR1寄存器和SCI0DRL数据, 以清除接收满标志位

            LDAB    SCI0DRL

            BRCLR  SCI0SR1,mSCI0SR1_TDRE,*                 ;查询模式,检查发送缓冲器是否空

    tx:    LDAA    SCI0SR1

            STAB    SCI0DRL          ; 将接收到的数据发回

            BRCLR  SCI0SR1,mSCI0SR1_TC,*           ;检查发送完成标志位

            MOVB    #$2C,SCI0CR2    ; 开接收中断

    相关文章

      网友评论

          本文标题:2020/09/28_SCI串口模块实验纪要

          本文链接:https://www.haomeiwen.com/subject/owzduktx.html