完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM8 UART 发送器
发送器根据M位的状态发送8位或9位的数据字。当M位置1,字长为9位,并且第九位(MSB)应该写入寄存器UART_CR1的T8位。 当发送使能位(TE)被设置时,发送移位寄存器中的数据在TX脚上输出,相应的时钟脉冲在SCLK脚上输出。 字符发送 在UART发送期间,在TX引脚上首先移出数据的最低有效位。在此模式里,UART_DR寄存器有一个缓冲器(TDR),位于内部总线和发送移位寄存器之间。 每个字符之前都有一个低电平的起始位;之后跟着数目可配置的停止位。UART支持以下停止位。 注意: 1.在数据传输期间不能复位TE位,否则将破坏TX脚上的数据,因为波特率计数器停止计数。 正在传输的当前数据将丢失。 2.TE位被激活后将发送一个空闲帧。 |
|
|
|
可配置的停止位
随每个字符发送的停止位的位数可以通过控制寄存器3的位5、4进行编程。
|
|
|
|
配置步骤:
1.编程UART_CR1的M位来定义字长。 2.在UART_CR3中编程停止位的位数。 3.按下列顺序编写波特率寄存器选择要求的波特率。 a) UART_BRR2 b) UART_BRR1 4.设置UART_CR2中的TE位来使能发送模式。 5.把要发送的数据写进UART_DR寄存器(此动作清除TXE位)。在只有一个缓冲器的情况下,对每个待发送的数据重复此步骤。 单字节通信 清零TXE位总是通过对数据寄存器的写操作来完成的。TXE位由硬件来置1,它表明:
如果此时UART正在发送数据,对UART_DR寄存器的写操作把数据存进TDR寄存器,并在当前传输结束时把该数据复制进移位寄存器。 如果此时UART没有在发送数据,处于空闲状态,对UART_DR寄存器的写操作直接把数据放进移位寄存器,数据传输开始,TXE位立即被置起。 当一帧发送完成时(停止位发送后),TC位被置起,并且如果UART_CR1寄存器中的TCIE位被置起时,中断产生。按以下步骤对TC位的清零。 1.读UART_SR寄存器 2.写UART_DR寄存器 断开符号 设置SBK可发送一个断开符号。断开帧长度取决M位。 如果设置SBK=1,在完成当前数据发送后,将在UART_TX线上发送一个断开符号。断开字符发送完成时(在断开符号的停止位时)SBK被硬件复位。UART在最后一个断开帧的结束处插入一逻辑'1',以保证能识别下一帧的起始位。 注意:发送的断开帧是不计入停止位位数的。如果设置UART为2个停止位,Tx线路会被拉低直到第一个停止位发送结束。之后在第二个字符前插入2个逻辑1。 注意:如果在开始发送断开帧之前,软件又复位了SBK位,断开符号将不被发送。如果要发送两个连续的断开帧,SBK位应该在前一个断开符号的停止位之后置1。 空闲符号 TEN置位将使得UART在第一个数据帧前发送一空闲帧。 |
|
|
|
只有小组成员才能发言,加入小组>>
772 浏览 0 评论
1148 浏览 1 评论
2527 浏览 5 评论
2858 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1065浏览 3评论
190浏览 2评论
453浏览 2评论
366浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 02:16 , Processed in 1.171045 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号