SCI即串行通信接口,是一个双线的异步串口,即具有接收和发送两根信号线的异步串口,一般可以看作是UART(通用异步接收/发送装置)。F2812的SCI模块支持DSP与采用NRZ(non-return-to-zero 不归零)标准格式的异步外围设备之间进行数字通信。
F2812内部有两个单独的SCI模块,SCIA与SCIB,每一个SCI模块都各有一个接收器和发送器。SCI的接收器和发送器各具有一个16级深度的FIFO队列,它们还都有自己独立的使能位和中断位,可以在半双工通信中进行独立的操作,或者在全双工通信中同时进行操作。需要注意的是,SCIA的13个寄存器都是8位的。
表1. SCI寄存器地址映射表
Bit(s) | Name | Description |
7 | STOP BITS | SCI停止位个数,该位决定了发送停止位的个数,接收器仅对一个停止位进行检查。 |
6 | EVEN/ODD PARITY | 奇偶校验设置位,奇偶校验是否有效取决于SCICCR(5)的设置 |
5 | PARITY ENABLE | SCI奇偶校验使能位,如果SCI处于address-bit multiprocesser模式(SCICCR(3)置1),地址位也包含在奇偶计算中,对于少于位的字符,剩余的无用位排除在奇偶校验之外。 |
4 | LOOPBACK ENA | 测试模式使能位,使能此位,Rx与Tx在内部连接在一起。 |
3 | ADDR/IDLE MODE | SCI多机模式控制位,多机模式与普通模式不同,需要使能SLEEP与TXWAKE功能。多机模式增加了一个地址位到数据帧中,普通模式(空闲模式)无此位,与典型的RS232通信兼容。 |
2-0 | SCICHAR2-0 | 字符长度控制位,1-8位长度可选,不够8位时,SCIRXBUF和SCIRXEMU寄存器中的数据是右对齐的,且SCIRXBUF中的无用位填0,SCITXBUF中的无用位不用填0。 |
Bit(s) | Name | Description |
7 | Reserved | 读为0,写无效 |
6 | RX ERR INT ENA | SCI接收错误中断使能位 |
5 | SW RESET | 软件复位,写0,复位SCI状态机与操作标志(SCICTL2与SCIRXST),不影响其余配置位。直至写1,所有起作用的逻辑均保持确定的复位状态,系统复位后,此位写1,才可使能SCI,当检测到一个接收间断时(BRKDT,SCIRXST(5)),清除该位。SW RESET影响的标志位如下 Value After |
4 | Reserved | 读为0,写无效 |
3 | TXWAKE | SCI发送器唤醒方式选择,取决于ADDR/IDLE模式的设定(SCICCR(3)) TXWAKE不由SW RESET复位,它由一个系统复位清除。 |
2 | SLEEP | 休眠位,根据ADDR/IDLE MODE选择的工作模式,TXWAKE选择的发送特征,在多机配置中,该位控制接收器的休眠功能。清除该位,唤醒SCI。当SLEEP置位时,接收器仍可工作,但是除非地址位被检测到,RXRDY与BRKDT,FE,OE,PE位不会被更新。当地址字节为被检测到时,SLEEP不会被清除。 |
1 | TXENA | 发送器使能位,TXENA置位,SCITXD管脚才会发送数据,如果发生复位,只有当写入到SCITXBUF中的数据发动完毕,发送才能挂起。 |
0 | RXENA | 接收器使能位,清除RXENA,停止将接收到的字符传到接收缓冲器,不产生中断,但是接收移位寄存器仍在工作,所以,如果接收一个字符的过程中,RXENA置位,完整的字符会被发送到SCIRXBUF与SCIRXEMU寄存器。 |
Bit(s) | Name | Description |
15-0 | BAUD | 两个8为寄存器构成16位波特率设置寄存器。如果寄存器值为0,SCI BAUD = LSPCLK/16;如果寄存器值为1~65535,SCI BAUD = LSPCLK/(BRR+1)/8 |
Bit(s) | Name | Description |
7 | TXRDY | 发送缓冲寄存器准备标志,置位时,表示SCITXBUF准备好接收另一个字符,向SCITXBUF写数据自动清除该位。如果该位置位时,相应的中断使能位置位,则产生一个发送中断。使能SW RESET或系统复位,可以置位此位。 |
6 | TX EMPTY | SCI发送器空标志,该位指示SCITXBUF与TXSHT寄存器的内容,一个有效的SW RESET或系统复位置位该位,该位但不会引起中断 |
5-2 | Reserved | 读为0,写无效 |
1 | RX/BK INT ENA | 该位控制由RXRDY与BRKDT引起的中断请求,但是不能阻止RXRDY与BRKDT位置位。 |
0 | TX INT ENA | 该位控制由TXRDY引起的中断请求,但是不能阻止TXRDY置位 |
5. SCIRXST
Bit(s) | Name | Description |
7 | RX ERROR | 接收器错误标志,此位为BRKDT,FE,OE,PE的或值,如果对应的中断使能位有效,该位出现1,将会引起中断。在中断服务程序中,该位可以作为快速的故障检测条件。此位不能被直接复位,只能通过SW RESET或系统复位清除。 |
6 | RX RDY | 接收器准备好标志,当此位置位时,说明SCIRXBUF中已经有一个可以被读取的字符。该位可以通过读数据,SW RESET或者系统复位清除。 |
5 | BRKDT | SCI传输间断检测位,冲丢失第一个停止位开始,SCIRXD连续保持10位的低电平,产生此中断。但是不会重载接收缓冲器。即使SLEEP设为1,也可以发生BRKDT中断。SW RESET或系统复位可以清除此位。检测到一个间断后,接收字符并不能清除该位。 |
4 | FE | 帧错误标志位,当检测不到一个需要的停止位时,置位该位。只检测第一个停止位,丢失停止位说明没能和启动位同步,字符帧发生错误。SW RESET或系统复位可以清除此位。 |
3 | OE | 覆盖错误,SCIRXBUF与SCIRXEMU中的字符还未被CPU或者DMAC完全读取,新的字符又写入了SCIRXBUF与SCIRXEMU中,置位该位。前一个字符被覆盖和丢失。SW RESET或系统复位可以清除此位。 |
2 | PE | 奇偶校验错误,使能奇偶校验时,此位有效,发生校验错误,置位该位。SW RESET或系统复位可以清除此位。 |
1 | RXWAKE | 接收器唤醒检测标志位,该位为1,表示监测到了唤醒接收器的条件。RXWAKE为只读位,它由下列条件清除: * 地址位传送到SCIRXBUF(NON-FIFO模式)后传送第一个字节 * 读SCIRXBUF * SW RESET * 系统复位 |
0 | Reserved | 读为0,写无效 |