第6章TMS320F2812串行通信接口SCI.ppt
《第6章TMS320F2812串行通信接口SCI.ppt》由会员分享,可在线阅读,更多相关《第6章TMS320F2812串行通信接口SCI.ppt(32页珍藏版)》请在三一办公上搜索。
1、第6章 TMS320F2812串行通信接口(SCI),学习重点F2812串口通信SCI特点及结构。SCI模块寄存器各位的含义及配置。基于C语言的SCI程序设计实例。,学习内容,SCI概述SCI 模块发送和接收数据的工作原理SCI 数据格式SCI 通信波特率SCI 发送和接收数据的机制多处理器通信SCI 的例程,1、SCI概述,SCI(Serial Communication Interface),即串行通信接口,是一个双线的异步串口,即具有接收和发送两根信号线的异步串口,一般可以看作是 UART(通用异步接收/发送装置)。F2812 的 SCI 模块支持 DSP 与采用 NRZ(non-ret
2、urn-to-zero 不归零)标准格式的异步外围设备之间进行数字通信。2812 内部具有两个相同的 SCI 模块,SCIA 和 SCIB,每一个 SCI 模块都各有一个接收器和发送器。SCI 的接收器和发送器各具有一个 16 级深度的 FIFO(First in fist out 先入先出)队列,它们还都有自己独立的使能位和中断位,可以在半双工通信中进行独立的操作,或者在全双工通信中同时进行操作。,串行通信的三种方式,根据信息的传送方向,串行通信可以分为单工、半双工和全双工三种,其各自的定义如下图所示。,SCI的CPU接口,SCI 模块具有两个引脚,SCITXDA 和 SCIRXDA,分别实
3、现发送数据和接收数据的功能,分别对应于 GPIOF 模块的第 4 和第 5 位,在编程初始化的时候,需要将 GPIOFMUX 寄存器的第 4 和第 5 位置为 1,才能使得这两个引脚具有发送和接收的功能,否则就是普通的 I/O 引脚。CPU 的系统时钟 SYSCLKOUT经过低速预定标器之后输出低速时钟 LSPCLK 供给 SCI。要保证 SCI 的正常运行,系统控制模块下必须使能 SCI 的时钟,也就是在系统初始化函数中需要将外设时钟控制寄存器 PCLKCR 的 SCIAENCLK 位置 1。SCI 可以产生两个中断,SCIRXINTA 和 SCITXINTA,即发送中断和接收 中断。,SC
4、I 模块的其他特点,2、SCI 模块发送和接收数据的工作原理,SCI 发送数据的过程:在 FIFO 功能使能的情况下,首先发送数据缓冲寄存器 SCITXBUF 从 TX FIFO 中获取由 CPU 加载的需要发送的数据,然后 SCITXBUF 将数据传输给发送移位寄 存器 TXSHF,如果 SCI 的发送功能使能,TXSHF 则将接收到的数据逐位的移到 SCITXD 引脚上。SCI 接收数据的过程:首先接收移位寄存器 RXSHF 逐位接收来自 SCIRXD 引脚的数据,如果 SCI 的接收功能使能,RXSHF 将这些数据传输给接收缓冲寄存器 SCIRXBUF,CPU 就能从 SCIRXBUF
5、读取外部发送来的数据。如果 FIFO 功能使能的话,SCIRXBUF 会将数据加载到 RX FIFO 的队列中,CPU 再从 FIFO 的队列读取数据。,3、SCI 数据格式,在 SCI 中传输的数据格式可以通过 SCI 的通信控制寄存器 SCICCR 来进行设置,规定通信过程中所使用的数据格式。SCI 使用的是 NRZ 的数据格式,如下表所示:,数据是 18 位,1 个字符的长度。将带有格式信息的每一个数据字符叫做一帧。SCI 有空闲线模式和地址 位模式,若是在两个处理器之间的通信,例如 2812 和 PC 机或者 2812 和 2812 之间通信,更适合使用空闲线模式,而地址位模式一般用于
6、多处理器之间的通信。,在空闲线模式下,SCI 发送或者接收一帧的数据格式如下图4 所示,其中 LSB 是数据的最低位,MSB 是数据的最高位。,具体的定义上图所示数据格式的寄存器是通信控制寄存器 SCICCR,其内容下图所示。,使 用 SCICCR 进行数据格式编程如下表所示:,使用 SCICCR 进行数据格式编程SciaRegs.SCICCR.bit.SCICHAR=7;/选择数据长度,为 8 个数据位SciaRegs.SCICCR.bit.PARITYENA=1;/开启极性功能,值为 0 的时候取消极性功能SciaRegs.SCICCR.bit.PARITY=0;/在开启极性功能的前提下,
7、该位值为 0 时选择偶极性,值为 1 时选择奇极性SciaRegs.SCICCR.bit.STOPBITS=0;/选择停止位,该位为 0 时有 1 个停止位,该位为 1 时有 2 个停止位。上述这几个语句,我们也可以合并成如下的语句:SciaRegs.SCICCR.all=0 x23;,4、SCI 通信波特率,SCI通信波特率就是指每秒所能发送的位数。2812 的每个 SCI 都具有 两个 8 位的波特率寄存器,SCIHBAUD 和 SCILBAUD,通过编程,可以实现达到 64K 不同的速率。波特率的 计算公式如下所示:,其中 BRR=波特率选择寄存器中的值,从十进制转换成十六进制后,高 8
8、 位赋值给 SCIHBAUD,低 8 位赋值给 SCILBAUD。注意:式 1 所示的波特率公式仅适用于1 BRR 65535,当 BRR=0 是,波特率如下:,波特率计算方法举例,例如外部晶振为 30M,经过 PLL 之后 SYSCLKOUT 为 150MHz,然后,当低速预定标器 LOSPCP 的值为 2 的时候,SYSCLKOUT 经过低速预定标器之后产生低速外设时钟 LSPCLK 为 37.5MHz,也就是说 SCI 的时钟为 37.5MHz。如果预设置SCI 的波特率为 19200,则将 LSPCLK 和波特率的数值代入式 1,便可得到:BRR=243.14,由于寄存器都是正整数,所
9、以省略掉小数后可以得到 BRR=243。将 243 转成 16 进制是 0 xF3,因此 SCIHBAUD 的值为 0,SCIHBAUD 的值为 0XF3。由于省略了小数,将会产生 0.06%的误差。当 LSPCLK 为 37.5M 时,对于 SCI 常见的波特率,其寄存器的值如下表所示:,在SCI通信时双方都必须以相同的数据格式和波特率进行通信,否则通信会失败。,5、SCI 发送和接收数据的机制,通常使用的有两种方式:一种是查询方式,另一种是中断方式。查询方式,就是程序不断去查询状态标志位,看看 SCI 是不是已经做好了数据发送或者接收的准备。当数据发送时,需要查询的是位于 SCI 控制寄存
10、器 2(SCICTL2)的第 7 位 TXREADY,发送缓冲寄存器就绪标志。当这个位为 1 的时候,表明发送数据缓冲寄存器 SCITXBUF 已经准备好开始接收并发送下一个数据了。当数据写入 SCITXBUF,TXREADY自动会清零,如果 TXENA 使能了,发送移位寄存器 TXSHF 就会把 SCITXBUF 里面的数据发送出去。当数据接收时,需要查询的是 SCI 接收状态寄存器(SCIRXST)中的 RXRDY,接收器就绪标志。当从 SCIRXBUF 寄存器中已经准备好一个字符的数据,等待 CPU 去读时,RXRDY 位就会置 1。当数据被 CPU 从 SCIRXBUF 读出后,或者系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TMS320F2812 串行 通信 接口 SCI
链接地址:https://www.31ppt.com/p-6355804.html