F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)

1 SCI模块的功能单元

(1)1个发送器(TX)及相关寄存器。
(2)1个接收器(RX)及相关寄存器。
(3)一个可编程的波特率产生器。
(4)数据存储器映射的控制和状态寄存器。

SCI模块的所有寄存器表:
F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第1张图片
F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第2张图片

2 信号接收过程和及其寄存器配置

2.1 SCI接收信号过程
F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第3张图片

(1) 标志位RXENA(SCICTL1,位0)变高,使能接收器接收数据;
(2) 数据达到SCIRXD引脚后,检测起始位;
(3) 数据从RXSHF寄存器移位到接收缓冲器(SCIRXBUF),产生一个中断申请,标志
位RXRDY(SCIRXST,位6)变高表示已接收一个新字符;
(4) 程序读SCIRXBUF寄存器,标志位RXRDY自动被清除;
(5) 数据的下一个字节达到SCIRXD引脚时,检测启动位,然后清除;
(6) 位RXENA变为低,禁止接收器接收数据。继续向RXSHF转载数据,但不移入到接收缓冲寄存器

2.2 相关寄存器及其配置
接受状态寄存器SCIRXST
F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第4张图片

F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第5张图片

数据接受缓冲寄存器SCIRXBUF

F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第6张图片
F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第7张图片
1,对于接收状态寄存器SCIRXST,我们一般只用他的第6位,通过判断第六位是否为1,来判断是否有新的数据可读。
2,数据接收缓冲器SCIRXBUF,我们可以把它理解成一个盒子,用来存放你发送给DSP的数据,也就是DSP接受的数据,等待你的CPU来这个盒子里面取走这个数据,他的配置也比较简单直接通过一个变量取走这个值即可。
3,而接收FIFO寄存器,主要是用到以下几点
判断8~12位是否为0,来判断是否接受完全,即FIFO内的值是否都传到了RXBUF里面。
RXFFIENA使能中断位,打开FIFO中断。
中断标志位,和清除中断标志位互相作用。

3 数据的发送过程及其寄存器配置
3.1 数据发送过程
F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第8张图片
(1)位TXENA(SCICTL1,位1)变高,使能发送器发送数据;
(2)写数据到SCITXBUF寄存器,从而发送器不再为空,TXRDY变低;
(3)SCI发送数据到移位寄存器(TXSHF)。发送器准备传送第二个字符(TXRDY变高),并发出中断请求(使能中断,位TXINTENA,SCICTL2中的第0位置1);
(4)在TXRDY变高后,程序写第二个字符到SCITXBUF寄存器(在第二个字节写入到SCITXUBF后TXRDY又变低);
(5)发送完第一个字符,开始将第二字符移位到寄存器TXSHF;
(6)位TXENA变低,禁止发送器发送数据,SCI结束当前字符的发送;
(7)第二个字符发送完成,发送器变空准备发送下一个字符

3.2 发送寄存器配置
发送缓冲寄存器SCITXBUF
在这里插入图片描述
发送FIFO寄存器SCIFFTX
F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第9张图片
发送寄存器的配置和接收寄存器的配置类似,不再在此赘述。

4 SCI自动波特率检测
大多数SCI模块硬件不支持自动波特率检测。一般情况下嵌入式控制器的SCI时钟有PLL提供,设计的系统工作时会改变PLL复位时的工作状态,这样很难支持自动波特率检测功能。在F28335处理器上,增强功能的SCI模块硬件支持自动波特率检测逻辑。寄存器SCIFFCT位ABD和CDC位控制自动波特率逻辑,使能SCIRST位使自动波特率逻辑工作。增加自动波特率检测功能的SCI通信接口除了能够满足正常通信自动检测系统的通信速率外,还支持采用SCI接口上电引导装载程序,这对于通过上位机采用SCI接口实时更新系统软件非常重要。
当CDD为1时,如果ABD也置位表示自动波特率检测开始工作,就会产生SCI发送FIFO中断(TXINT)。同时在中断服务程序中必须使用软件将CDC位清0,否则如果中断服务程序执行完CDC仍然为1,则以后不会产生中断。具体操作步骤如下。
(1) 将SCIFFCT中的CDC位(位13)置位,清除ABD位(位15),使能SCI的自动波特率检测模式。
(2) 初始化波特率寄存器为1或限制在500Kb/s内。
(3) 允许SCI以期望的波特率从一个主机接收字符“A”或字符“a”。如果第一个字符时“A”或“a”,则说明自动波特率检测硬件已经检测到SCI通信的波特率,然后将ABD位置1.
(4) 自动检测硬件将用检测到的波特率的十六进制值刷新波特率寄存器的值,这个刷新逻辑也会产生一个CPU中断。
(5) 通过向SCIFFCT寄存器的ABD CLR位(位13)写入1清除ABD位,响应中断。写0清除CDC位,禁止自动波特率逻辑。
(6) 读到接收缓冲的字符“A”或“a”时,清空缓冲和缓冲状态位。
(7) 当CDC为1时,如果ABD也置位表示自动波特率检测开始工作,就会产生SCI发送FIFO中断(TXINT),同时在中断服务程序中必须使用软件将CDC位清0。

SCIFIFO控制寄存器SCIFFCT
F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)_第10张图片

通过配置SCIFFCT来控制自动波特率检测模块。

你可能感兴趣的:(DSP28335)