您尚未登录。

楼主 #1 2018-06-23 08:17:56

awfans
会员
注册时间: 2018-04-03
已发帖子: 264
积分: 264

stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码,
就一个串口,现在要三个,得模拟两个,
模拟串口9600波特率,
是用定时器不断的判断起始位接收数据,还是外部中断加定时器,
两种方法都试了,都只能接受到前面几个字节是对的,后面就错了.
晶振16Mhz 2分频, 8Mhz,
我用示波器比较了标准串口的104us,然后我用定时器拉高拉低io口,示波器量了也是104us,
发送没什么问题,就是接收比较麻烦.

离线

#2 2018-06-23 08:20:00

超级萌新
会员
注册时间: 2018-05-04
已发帖子: 408
积分: 407

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

你可以短路你自己模拟的两个io,看看能不能自发自收

离线

楼主 #3 2018-06-23 08:20:24

awfans
会员
注册时间: 2018-04-03
已发帖子: 264
积分: 264

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

超级萌新 说:

你可以短路你自己模拟的两个io,看看能不能自发自收

前面几个字节正常,后面就错了,是不是由于定时器中断代码运行占用了一定的时间,导致后面时序偏差了

离线

楼主 #4 2018-06-23 08:21:30

awfans
会员
注册时间: 2018-04-03
已发帖子: 264
积分: 264

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

你用大循环做肯定不行
别人的例子只是例子而已,只是告诉你有这么一个功能和方法
你需要用状态机
主循环去轮巡状态机,中断去填充缓冲区
你想想,如果让你设计个硬件串口,你能如何设计?就解决这个问题了
另外就是,单片机要跑16M
示波器看下波特率是不是偏差太大,如果太大,需要用外部晶振

离线

#5 2018-06-23 08:23:08

超级萌新
会员
注册时间: 2018-05-04
已发帖子: 408
积分: 407

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

awfans 说:
超级萌新 说:

你可以短路你自己模拟的两个io,看看能不能自发自收

前面几个字节正常,后面就错了,是不是由于定时器中断代码运行占用了一定的时间,导致后面时序偏差了

所以让你用状态机
通讯的时候,不执行代码
数据接收完成才执行代码

离线

#6 2018-06-23 15:41:23

jianfengxixi
会员
注册时间: 2018-06-14
已发帖子: 11
积分: 11

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

接收几倍频率采样的,最起码得9600×4吧

离线

#7 2018-06-23 21:42:42

超级萌新
会员
注册时间: 2018-05-04
已发帖子: 408
积分: 407

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

我认为楼上说的完全有道理。

离线

#8 2018-06-24 00:19:42

Lvy
会员
注册时间: 2017-11-25
已发帖子: 107
积分: 96.5

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

采样频率提高就可以了,或者用stm8的捕获功能。

离线

楼主 #9 2018-06-26 08:52:34

awfans
会员
注册时间: 2018-04-03
已发帖子: 264
积分: 264

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

谢谢大家搞定了, 我提高了采用频率,连续三个低则判定低电平,连续三个高则判定高电平。

离线

#10 2020-06-10 23:21:27

hujiaabc
会员
注册时间: 2020-06-06
已发帖子: 8
积分: 3

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

要用定时器触发 DMA的读取和发送方式 ,更高效

离线

#11 2020-07-19 22:58:16

林夕——linxi
会员
注册时间: 2020-07-19
已发帖子: 3
积分: 3

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

最近也在研究这个,有个项目用了F407但是需要七个串口,而且还是一个232的,波特率估计不会很高,尝试了几种方案都感觉有误码。

离线

#12 2020-08-05 10:35:12

zhangjink
会员
注册时间: 2020-07-02
已发帖子: 46
积分: 168

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

用状态机,而且提高采样率,每次检测到起始位的时候,都开始新一轮的数据接收,这样应该就可以避免前几个字节对,后面错误的问题

离线

#13 2021-05-07 08:44:04

duanhnhy
会员
注册时间: 2020-05-16
已发帖子: 33
积分: 0

Re: stm8l gpio模拟串口,有没有好方法啊,我用定时器不停判断高低电平,现在接收数据老是有误码

模拟串口,采样是要放在最高级别

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn