你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

UART通信,接收的数据总是不对

[复制链接]
liuzhu 提问时间:2015-6-14 22:39 /
用STM32的UART功能发送0x33,用电脑里的串口助手接收数据,是00 66。。。这中间应该是某个地方上,单片机和串口助手的通信有差别造成的吧。但是自己一直没想明白其中的原因。还望同志们不吝赐教!!谢啦
附上UART的设置:
UART2_DeInit();
  /* UART1 configured as follow:
        - BaudRate = 9600 baud  
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - Receive and Transmit enabled
        - UART1 Clock disabled
  */
  UART2_Init((uint32_t)9600, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, UART2_PARITY_NO,UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE);
UART2_Cmd(ENABLE);

UART2_SendData8(0x33);
while (UART2_GetFlagStatus(UART2_FLAG_TXE) == RESET)
{
}


收藏 评论17 发布时间:2015-6-14 22:39

举报

17个回答
liuzhu 回答时间:2015-6-14 23:21:40
lkl0305 发表于 2015-6-14 22:42
你看看你的上下位机的波特率设置一样吗?

进一步测试发现,单片机发送0x25,串口助手接收为0x6D;单片机发送0x6D,串口接收为0x49,反之亦然。
其中的规律为:单片机发送的0x25二进制为0010 0101,取反为11011010,在其开始加起始位0,在末尾加停止位1,则变为0110110101。这是串口助手直接从第一位开始读取,所以读到的数是0x6D,最后的01两位舍弃了。。。。同理也适用与0x6D变为0x49的情况
不知道这种情况是什么原因造成的??应该怎么避免掉起始位的问题呢
liuzhu 回答时间:2015-6-15 10:56:43
安 发表于 2015-6-15 10:30
同步模式需要连接全串口,大家不选择同步就是为了连接方便。
楼主用示波器测试一下波形,看看波特率实际输 ...

多谢楼主。。。实验条件简陋,连示波器都没有。。。工程我可以上传一下。。。
会不会与没有使用MAX232之类的转换芯片有关系呢?我现在是单片机的串口线直接接的USB转串口,再直连电脑
liuzhu 回答时间:2015-6-15 08:58:18
为什么是EEFOCUS小白 发表于 2015-6-15 08:20
上位机软件的所有设置都要和单片机的一致

单片机设置的参数都在上位机挨个核对过,波特率、停止位、奇偶校验、数据宽度都确认过,保证一致。只有一项“流控制”是上位机有但单片机没有,选择的无流控制。。。
lkl0305 回答时间:2015-6-14 22:42:09
你看看你的上下位机的波特率设置一样吗?
liuzhu 回答时间:2015-6-14 22:48:17
一样的。。。我怀疑是rs232数据包中初始位、停止位等,在串口助手上和单片机上不一样
为什么是EEFOCUS小白 回答时间:2015-6-15 08:20:42
上位机软件的所有设置都要和单片机的一致
莫林2020 回答时间:2015-6-15 08:57:19
看现象像是通信参数设置不匹配
liuzhu 回答时间:2015-6-15 09:00:42
单片机串口的同步模式是什么意思,我看例程大部分人都选择禁用同步模式。。。。UART2_Init函数里这一项有很多可以选择的模式,比如第二个脉冲沿检测等等,具体代表什么意思也讲不清楚
废鱼 回答时间:2015-6-15 10:30:50
同步模式需要连接全串口,大家不选择同步就是为了连接方便。
楼主用示波器测试一下波形,看看波特率实际输出是多少。
楼主可否把工程上传一下,大家看代码帮你测试才好解决。
废鱼 回答时间:2015-6-15 11:39:06
要看你的串口线是否和单片机的匹配,如果不匹配就是这个问题了。
liuzhu 回答时间:2015-6-15 11:42:31
安 发表于 2015-6-15 11:39
要看你的串口线是否和单片机的匹配,如果不匹配就是这个问题了。

怎么看串口线和单片机是否匹配呢?
废鱼 回答时间:2015-6-15 14:31:29
你看一下是COMS电平还是TTL电平的。这个上面都有标注的。楼主还是加个232电平转换吧。
liuzhu 回答时间:2015-6-15 15:06:46
安 发表于 2015-6-15 14:31
你看一下是COMS电平还是TTL电平的。这个上面都有标注的。楼主还是加个232电平转换吧。 ...

嗯,这个地方忽视了。。。想办法给开发板加个电平转换
watershade 回答时间:2015-6-16 09:22:04
刚好电平是相反的,TTL电平还是标准RS232要搞清楚。再不行,你直接取个异或算法
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版