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