SCI发送器由发送数据缓冲器、发送移位寄存器、传输控制逻辑与中断控制逻辑组成,其内部结构如图10-7所示。
1.发送功能描述
SCI发送器输出引脚TxD的空闲态默认(复位后TXINV=O0)处于逻辑高电平,如果设定TXINV=1则TxD翻转为逻辑低电平。通过设置SCIxC2中的TE位为1可以使能发送器,此后发送器保持在空闲状态直到有效数据被写入发送数据缓冲器。通过写SCI数据寄存器SCIxD可以把数据存储到发送数据缓冲器中。
SCI发送器的核心部件是发送移位寄存器,它既可以是10位长,也可以是11位长,这取决于M控制位的设定。在本节的描述中,都假定M=l,选定普通的8位数据模式。在8位数据模式下,移位寄存器具有1位起始位、8位数据位和l位停止位共计10位长度。当发送移位寄存器可以发送一个新的字符时,在发送数据寄存器SCIxD中等待的数值被转送到移位寄存器(同步于波特率时钟),然后发送数据寄存器空标志位TDRE变为1以指示下一个字符能够被写入到发送数据寄存器SCIxD之中。
图10-7 SCI发送器原理结构图
当停止位被从TxD引脚移位输出之后,如果在发送数据缓存中没有新的字符,那么发送器将设置发送完成标志位TC为1并进入空闲模式,TxD引脚保持为高,等待新字符的发送。
向TE写0并不会立即释放,TxD引脚作为一个通用I/O引脚,必须等到正在处理中的所有发送活动结束,其中包括发送中的字符、队列中的空闲符和队列中的暂停符。(www.xing528.com)
2.发送暂停和等待空闲
SCIxC2寄存器的SBK位用于发送暂停符,暂停符是在字符发送期间内(10位包含开始位和停止位)一个字符的逻辑0。若置位BRK13=1,可以达到13位的长度暂停时间。通常,程序等待TDRE置位(表示信息的最后一个字符移到发送移位寄存器),然后向SBK位先后写1和0,此时,若移位寄存器可用,就会发送暂停符。如果当暂停符进入移位寄存器后SBK仍为1,则模块会继续产生待发送的暂停符。
当使用“空闲线唤醒”功能时,两个消息之间必须要有一个空闲字符(逻辑1),以唤醒处于睡眠状态的接收器。通常,程序等待TDRE置位,然后向TE位先后写0和1,此时,若移位寄存器可用,就会发送空闲符。只要移位寄存器的字符没有完成(TE=0),SCI发送器就不会释放对TxD引脚的控制。
暂停符的长度受BRK13和M位影响,如表10-3所示。
表10-3 暂停符长度
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。