打印
[STM32F4]

关于USART问题,为什么?

[复制链接]
1466|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 始于116 于 2014-9-3 12:46 编辑

今天没事用示波器看了一下USART波形,我是设置的数据位8位,停止位1位,对应发送数字0x04,在奇校验时对应示波器上一个周期的01码为00000100011,偶校验为00001000111,无效验时为00000100011,感觉前8位应该是数据位之后两位的校验,之后1位校验位,之后停止位,那停止位岂不是两位了?第一个问题:为什么在偶校验时数据位发送的数据都移位了,变为0x08了?第二个问题:这是我在示波器上从右向左读的这段码,那不应该是左边是先到的数据吗,也不能够呀,所以我只能从右向左读码,就对应数字0X01,0x02等都符合规则了?
沙发
始于116|  楼主 | 2014-9-3 12:24 | 只看该作者
这个示波器波形和程序应该没错的,码也绝对是这个顺序

使用特权

评论回复
板凳
始于116|  楼主 | 2014-9-3 12:25 | 只看该作者
用的STM32F4的板子,甚是诡异呀,呜呜

使用特权

评论回复
地板
始于116|  楼主 | 2014-9-3 12:40 | 只看该作者
本帖最后由 始于116 于 2014-9-3 12:47 编辑

:)

使用特权

评论回复
5
始于116|  楼主 | 2014-9-3 13:31 | 只看该作者
这是STM32F4对应手册上写的,我用示波器测试,感觉应该不是这个顺序,感觉没有起始位吧?

$3(5$G_0E6VU{CEGFMSPC$1.jpg (207.37 KB )

$3(5$G_0E6VU{CEGFMSPC$1.jpg

使用特权

评论回复
6
小浣熊| | 2014-9-3 16:53 | 只看该作者
好像是的,,你再想想,问题在哪里吧!

使用特权

评论回复
7
mmuuss586| | 2014-9-4 08:29 | 只看该作者
:)
看你的数据好像不对;
是不是前面少看了1位0;

使用特权

评论回复
8
mmuuss586| | 2014-9-4 08:30 | 只看该作者
串口通讯概述:

使用特权

评论回复
9
始于116|  楼主 | 2014-9-4 14:31 | 只看该作者
本帖最后由 始于116 于 2014-9-4 14:37 编辑
mmuuss586 发表于 2014-9-4 08:29
看你的数据好像不对;
是不是前面少看了1位0;

这个就是11位的,我是周期看的,应该错不了,最多就是00000100011循环的起始点不对,这是一个环的,我仔细看过没错的,但是数字发的是0x04,如果按照STM32的手册,一个0,七个数据位,之后校验位停止位,我觉得10位也就够了,但是数据还是11位的,我是配置的数据位8位,停止位1位的,感觉不出是哪儿的问题。。。。我设置停止位两位就12位循环了,不知道为什么。。。。。非常真心的谢谢您的帮助

使用特权

评论回复
10
始于116|  楼主 | 2014-9-4 14:39 | 只看该作者
这是我按照手册放的数据,但是不知道问题在哪,有点钻牛角尖了的说,但通信使用啥的都没问题的

$3(5$G_0E6VU{CEGFMSPC$1.jpg (99.87 KB )

$3(5$G_0E6VU{CEGFMSPC$1.jpg

使用特权

评论回复
11
penghuiyanbiyun| | 2014-9-11 15:10 | 只看该作者
我也跟楼主碰到了类似的问题,不知道楼主现在解决了没,求共享

使用特权

评论回复
12
始于116|  楼主 | 2014-9-11 20:03 | 只看该作者
penghuiyanbiyun 发表于 2014-9-11 15:10
我也跟楼主碰到了类似的问题,不知道楼主现在解决了没,求共享

还暂时没解决,但用起来从来也就这样用的

使用特权

评论回复
13
penghuiyanbiyun| | 2014-9-12 09:08 | 只看该作者
我在配置完USART后加了一条 USART_ClearFlag(USART3, USART_FLAG_TC);  然后把一些延时什么的都删了,就不会查看数据了,用示波器查看发送端的波形是10位,一位起始位0,然后接着是8位数据(最低有效位在前),最后一位停止位1,总共10位没错。

使用特权

评论回复
14
想做大牛的小马| | 2014-9-12 09:35 | 只看该作者
感觉十有**和那几个uart的reg配置有关~

使用特权

评论回复
15
始于116|  楼主 | 2014-9-14 19:12 | 只看该作者
penghuiyanbiyun 发表于 2014-9-12 09:08
我在配置完USART后加了一条 USART_ClearFlag(USART3, USART_FLAG_TC);  然后把一些延时什么的都删了,就不 ...

好的,谢谢了,明天我试试看:D

使用特权

评论回复
16
始于116|  楼主 | 2014-9-14 19:12 | 只看该作者
想做大牛的小马 发表于 2014-9-12 09:35
感觉十有**和那几个uart的reg配置有关~

恩,谢谢啦~~

使用特权

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

本版积分规则

33

主题

199

帖子

2

粉丝