打印

STM32F107 485电路调试(求助啊)

[复制链接]
2407|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电路如图,主函数实现功能是先初始化GPIO,再配置USART1工作模式,DIR为1即发送状态,先发送3个数据(如0x54,0x54,0x54),再DIR为0即接收状态,循环检查状态位RXNE,直到接收到数据(如41),然后DIR为1,将接收到的数据再发送出去。整个过程使用STM32f107,和max3485,以及一个485转串口模块,连接电脑。
问题如下:
1.发送数据时:串口调试助手上接收的数据总是 00 FF 54 54 54,多出一个00 FF,这是怎么回事??手动复位时发现按下复位按键后串口调试助手收到00,松开后,收到FF 54 54 54 54
2接收数据时:若JLINK单步仿真,则数据为 00 FF 54 54 54 41(前两个数不知从哪里来,每次发都会有,即问题1中的情况,第3,4,5个数为实际程序中发的数,第六个数 为stm32接收到串口调试助手发送的数后回显)。此时接收还正常。
但是在接收数据时,如不是单步仿真,而是硬件运行程序或软件仿真全速执行程序,则数据为00 FF 54 54 54 54,(注意此时我还没有通过串口调试助手向stm32发送数据41,但串口调试助手显示的数据54以比正常情况多了一个),正常情况应该是死循环等待我发送数据,可实际上多次测试发现,软件竟然将stm发送给串口调试助手的最后一个数据,又当成了串口调试助手发送给stm32的数据,置位了RXNE,并回显至串口调试助手这时就有了上面的数据4个54。
实在不明白为什么会这样,已经困惑了好几天了,不知道有没有人遇到和我相同的问题,求好心人解答。
另外:串口调试助手和232转485模块肯定不存在问题,因为在别人板子上用很正常

QQ截图20130318204944.png (19.66 KB )

QQ截图20130318204944.png
沙发
jiaxinhui| | 2013-3-18 21:58 | 只看该作者
终端电阻,你是怎么接的。去掉和接上两种情况都试过了吗?

使用特权

评论回复
板凳
790953623|  楼主 | 2013-3-18 22:36 | 只看该作者
jiaxinhui 发表于 2013-3-18 21:58
终端电阻,你是怎么接的。去掉和接上两种情况都试过了吗?

终端电阻120欧,一直接着

使用特权

评论回复
地板
jiaxinhui| | 2013-3-18 23:20 | 只看该作者
去掉终端电阻试试

使用特权

评论回复
5
790953623|  楼主 | 2013-3-19 09:03 | 只看该作者
本帖最后由 790953623 于 2013-3-19 09:45 编辑
jiaxinhui 发表于 2013-3-18 23:20
去掉终端电阻试试

终端电阻去掉后效果一样,我又重新焊了一块板子,这次接收正常了,但是发送前面还是有一个FF,单步调试时是正确的,没有FF,但一运行起来,就出现了,怪事啊

使用特权

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

本版积分规则

14

主题

71

帖子

1

粉丝