打印

USART数据长度问题

[复制链接]
1988|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuxj00|  楼主 | 2012-4-21 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是STM32F103VE在使用USART串口收发数据时,
如果需要8位数据,无奇偶校验,则WordLength=8
如果需要8位数据,有奇偶校验,则WordLength=9   
这一个已经实现,

但是现在遇到的问题是,我接收的数据位是7位的1个偶校验位1个停止位,程序中将
WordLength=8,但是接收的时候会出现部分数据时错误的,想请问是什么原因
就是对于发送和接收7位的数据时不知道怎么设置,现在是7位数据位。1个偶校验1个停止位怎样设置
沙发
香水城| | 2012-4-21 11:20 | 只看该作者
接收7位的数据时,你要在程序中把最高位屏蔽,最高位就是奇偶校验位。

使用特权

评论回复
板凳
airwill| | 2012-4-21 15:45 | 只看该作者
这个 WordLength=9  很是让人产生歧义! 当然 MCU 的角度来说, 是处理简单了.
我第一次用 USART, 也在这长度上碰了壁, 因为其他处理器都不把校验位算到数据长度里.

使用特权

评论回复
地板
lut1lut| | 2012-4-23 10:47 | 只看该作者
"但是接收的时候会出现部分数据时错误的" 什么样的错误,能否举例。

USART_DR[8:0]

当帧格式是:7(data) + 1(parity) + 1(stop),则发送时,DR[7]无论用户写什么都无效,都会被硬件计算出来的校验位替代;接收时,收到的第8个位是校验位;

当帧格式是:8(data) + 1(parity) + 1(stop),则发送时,DR[8]无论用户写什么都无效,都会被硬件计算出来的校验位替代;接收时,收到的第9个位是校验位

使用特权

评论回复
5
wuxj00|  楼主 | 2012-5-7 21:42 | 只看该作者
谢谢各位,十分感激强大的论坛给与帮助。。

使用特权

评论回复
6
wuxj00|  楼主 | 2012-5-7 21:43 | 只看该作者
强大

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

14

帖子

0

粉丝