OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5258|回复: 3

模拟232串口通信遇到的几个问题

[复制链接]

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2014-9-16 23:05:17 | 显示全部楼层 |阅读模式
利用模拟232与工程师进行通信,我将接收信息显示于点阵屏幕,遇到的几个问题可能很简单,但却让我为难不少,在此做一总结,向从未谋面周哥的无私帮助、正点原子的无私奉献致敬!
1.何为模拟232。
我和工程师芯片工作电压不同(3.3V/5V),通过一根线将两个芯片串口进行对接,中间进行电压转换,也就是说没有遵守串口232电平约定,直接对接。我作为配合器件只负责接收数据以及简单处理显示。
2.仿照正点原子串口初始化,串口1能够正常接收数据,串口2无法接收外部数据,但是串口2能够接收串口1发送的数据。
这个问题反复测试很久,眼看批量板子就要生产出来了,串口2始终无法接收数据,做了跳线到串口1的最坏打算,结果在新做出来的板子上一测试串口2能够正常接收,原来是自己实验板子的原因,在此给大家提个醒,遇到问题要考虑实验平台的问题,多换一下实验器件,寻找是否有所不同。
3.串口1与串口2之间通信时,接收总是滞后发送一个字节。
网上有篇文章专门讲了这个,一时没找到,原子哥好像也提到过。可以在串口初始化最后加上while((USART2->SR&0X40)==0); 进行解决,也希望正点原子以后的串口函数能加上这句,使SYSTEM文件夹更加完善(个人浅见)。
4.串口通信时接收到的大部分数据是错误的。
波特率。这个有点搞了,接收数据不正确,怀疑是波特率不匹配,工程师通过示波仪观察我的波特率,然后把他的波特率改为2300,我测试时我的2400仍然不行,然后我试着将我的波特率改为2300,然后竟然通了。(工程师是用延时实现波特率,并不是直接配置实现)
5.看门狗反复复位几次后点阵显示页面乱跳,不能正常工作。
串口通讯对接不协调,开始以为是串口初始化做的不好,反复查找,最后经指点才恍然与工程师对接时我只是负责接收,就是在自己准备好后不管接收到的是工程师数据包的哪个字节都做一般处理导致页面显示异常,最后利用字节间间隔远短于数据包间隔进行判断,解决偶尔接收异常的问题。
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2014-9-16 23:25:41 | 显示全部楼层
对正点原子SYSTEM文件夹,绝对是入门者的登云梯,但在实际运用时也可能会造成一些疑惑,个人浅见,还望指教。
1.sys文件夹:绝对经典,仰之敬之!!!
2.delay文件夹:构造精简干练,调用极为简单,但不知为何在使用时尽然会在delay函数中循环而出不来,难道自己配置时出现矛盾,不得而知。
3.usart文件夹:原子哥自己定义的寄存器中标志位介绍有些少,这些标志位可能是在串口调试助手等可能起作用,自己实际通信时开始阶段就照搬了,这是自己能力浅,在此也提醒串口使用时对这点的注意。
题外话:我遇到问题时问我购买开发板的店家,答复两点,其一,他们只负责板子硬件问题,对开发不负责;其二,他们竟推荐我去买另一个人的学习视频,并且指出视频是很大部分针对此开发板,我彻底无语。
在此向正点原子的开源精神致敬、并对开发过程中在本论坛提问的耐心指导表示感谢!
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-16 23:51:17 | 显示全部楼层
谢谢分享。

回复【2楼】龙之谷:
---------------------------------
2,不存在出不来的问题,你是不是延时时间太久了?可以仿真看下到底是怎么回事。
3,这确实是精简版本的串口通信,仅仅用到最基础的功能,因为大部分人都只需要到这一层次即可满足要求了。如有特殊要求,确实得自己修改才行。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2014-9-17 13:57:01 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
刚测试下,在现有程序中使用delay函数确实能够正常工作,不存在出不来问题,可能是在子函数调用有些混乱。更改如下
2.delay文件夹:构造精简干练,调用极为简单。程序中延时很重要,个人在使用时要规范使用延时,不要使延时过长或过短。
3.usart文件夹:原子哥所使用寄存器为自定义寄存器,尤其是结束标志位要根据不同情况进行取舍,此处需进行灵活使用。
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-1 09:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表