OpenEdv-开源电子网

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

IO口模拟串口通信问题

[复制链接]

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-9-27
在线时间
5 小时
发表于 2017-8-16 08:16:35 | 显示全部楼层 |阅读模式
1金钱
问题来自于今年国赛的光通信。
最后问题化简成这样

好了我单片发送方机编程实现的是在while循环里面不停的发0x07这个数据

  1.   while(1)
  2.         {
  3.             while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
  4.             USART_SendData(USART1,0x07);
  5.         }
复制代码

2.jpg

然后在串口助手里面查看,果然接收的数据为0x70刚好成了误码的数据了。

下面给出我分析的误码的原理
1.jpg
上图中S是串口通信起始位,T是停止位,空是两帧数据之间的间隔,上面是写出的得到误码的数据,下面是我期望的数据。
原因就是起始位置判断不对,它把原本数据的第4位看成了起始位,造成的,
我想知道这个怎么解决呢?







正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-9-27
在线时间
5 小时
 楼主| 发表于 2017-8-16 17:06:19 | 显示全部楼层
yklstudent 发表于 2017-8-16 09:33
楼主这是IO模块串口通信???

对,用IO口模拟串口通信
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3565
金钱
3565
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-8-16 17:42:07 | 显示全部楼层
起始之前拉高时间长一点
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-9-27
在线时间
5 小时
 楼主| 发表于 2017-8-16 18:49:33 | 显示全部楼层
Sun_Fly 发表于 2017-8-16 17:42
起始之前拉高时间长一点

这个比例关系是怎么样的? 我反正100K的速度
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-9-27
在线时间
5 小时
 楼主| 发表于 2017-8-16 18:50:06 | 显示全部楼层
Sun_Fly 发表于 2017-8-16 17:42
起始之前拉高时间长一点

实际上我是1帧传3个字节,3个起始,3个停止,中间24个数据,但是误码高
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-9-27
在线时间
5 小时
 楼主| 发表于 2017-8-26 15:19:45 | 显示全部楼层
yklstudent 发表于 2017-8-17 13:27
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
            USART_SendData(USART1,0x07);
...

这是单片机正常发送,模拟是另外一边
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 19:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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