[STM32] STM32F407串口问题

[复制链接]
3685|17
 楼主| 阿比安吉 发表于 2015-1-29 17:11 | 显示全部楼层 |阅读模式
本帖最后由 阿比安吉 于 2015-1-30 14:07 编辑

小弟现在使用STM32F407的串口传输数据,程序设定是每次给单片机通过串口发送一个指令之后单片机返还一个数组。将STM32的TX和RX、GND三根线和串口模块的RX、TX、GND三根线相连,出现了错误,具体情况是每次发送完指令之后会返还一个0x00,之后才是返还设定好的数组。然后小弟又换了另一个串口模块,这次发送指令之后不会返还0x00,但是返还的数组有一定误码,比如0x90变成0xD0。程序中设定的是只有收到正确指令才会返回数据,所以应该发送过程中没有出现误码,应该是返还数据的时候出现了误码。我试过这两个串口模块相连然后接电脑,传输也并没有什么错误...
而由于这个STM32F407最后的TX和RX是要与一个CC2530透明串口模块的RX、TX相连构成无线通信的,因此找了一个已经验证过正确性的CC2530透传模块,将两者相连之后,接收端的2530透传模块会间断性的收到0x00,发送指令也不会返还数据。同事中有人告知有可能是高阻状态的串口引脚会出现这种情况,于是使用了一个电阻将TX拉高,RX拉至地端,此时通过CC2530发送指令后可以收到正确的数组,但是会在收到的数组之后多收到一个0x00 而且这时使用之前的两个串口出现同样的问题,会多收到一个0x00....
请问各位大神有人知道这个是什么情况吗?不胜感激!下列是STM32周边的电路原理图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
戈卫东 发表于 2015-1-29 17:43 | 显示全部楼层
电路?
 楼主| 阿比安吉 发表于 2015-1-30 09:06 | 显示全部楼层
戈卫东 发表于 2015-1-29 17:43
电路?

您是指硬件的问题吗?
crystal1987 发表于 2015-1-30 10:50 | 显示全部楼层
把通信的终端电阻去掉试试
 楼主| 阿比安吉 发表于 2015-1-30 11:00 | 显示全部楼层
crystal1987 发表于 2015-1-30 10:50
把通信的终端电阻去掉试试

通信终端的电阻是指什么呢?STM32的上下拉电阻吗?这时会出现第一段描述的那种错误...
戈卫东 发表于 2015-1-30 11:38 | 显示全部楼层
阿比安吉 发表于 2015-1-30 09:06
您是指硬件的问题吗?

我是说你把电路贴出来我们学习学习。。。。。
 楼主| 阿比安吉 发表于 2015-1-30 14:08 | 显示全部楼层
戈卫东 发表于 2015-1-30 11:38
我是说你把电路贴出来我们学习学习。。。。。

额贴上去了=。=
wang168506 发表于 2015-1-30 14:12 | 显示全部楼层
这还是查软件 我感觉   除非硬件不工作 不然你贴出来也没用
 楼主| 阿比安吉 发表于 2015-1-30 14:39 | 显示全部楼层
wang168506 发表于 2015-1-30 14:12
这还是查软件 我感觉   除非硬件不工作 不然你贴出来也没用

软件的话是这样,很早的时候用一个串口模块接收数据能够得到正确的数值,后来在软件没有修改的情况之下就变成现在这样了...
wang168506 发表于 2015-1-30 14:45 | 显示全部楼层
这更证明 你程序有些部分处理不当!因为串口硬件过于简单  实在很没有可能硬件出错!
crystal1987 发表于 2015-1-30 15:18 | 显示全部楼层
阿比安吉 发表于 2015-1-30 11:00
通信终端的电阻是指什么呢?STM32的上下拉电阻吗?这时会出现第一段描述的那种错误... ...

这个问题我之前也遇到过,短距离将两通信线上的终端电阻(120欧姆)去掉后,通信正常(00就没有啦);如果长距离通信终端电阻是需要的,并联在通信电路中。
玄德 发表于 2015-1-30 17:53 | 显示全部楼层
RX拉至地端

???

 楼主| 阿比安吉 发表于 2015-1-31 09:00 | 显示全部楼层
crystal1987 发表于 2015-1-30 15:18
这个问题我之前也遇到过,短距离将两通信线上的终端电阻(120欧姆)去掉后,通信正常(00就没有啦);如 ...

我现在尝试使用10k的电阻把STM32的TX引脚拉高,用另一个电阻把它的RX拉低,然后通信就正常了...请问这个是什么原理啊?
rogertianx 发表于 2015-1-31 17:31 | 显示全部楼层
哦,看了前面帖子第一感觉是通讯参数的设置问题。原来还是硬件电气的问题,学习啦!
玄德 发表于 2015-2-1 21:31 | 显示全部楼层
用另一个电阻把它的RX拉低,然后通信就正常了

为什么拉低?拉高才对。

 楼主| 阿比安吉 发表于 2015-2-2 07:38 来自手机 | 显示全部楼层
玄德 发表于 2015-2-1 21:31
用另一个电阻把它的RX拉低,然后通信就正常了

为什么拉低?拉高才对。

是指都拉高吗?为什么会有这种情况啊
玄德 发表于 2015-2-2 13:02 | 显示全部楼层
阿比安吉 发表于 2015-2-2 07:38
是指都拉高吗?为什么会有这种情况啊

都拉高!

没有时钟,发送方要发出下降沿。
这个下降沿,就是同步信号!
所以平时要拉高。

玄德 发表于 2015-2-2 13:02 | 显示全部楼层
阿比安吉 发表于 2015-2-2 07:38
是指都拉高吗?为什么会有这种情况啊

都拉高!

没有时钟,发送方要发出下降沿。
这个下降沿,就是同步信号!
所以平时要拉高。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部