WhyCan Forum(哇酷论坛)

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

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

awfans
会员
注册时间: 2018-04-03
累计积分: 247

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

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

离线

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

超级萌新
会员
注册时间: 2018-05-04
累计积分: 403

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

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

离线

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

awfans
会员
注册时间: 2018-04-03
累计积分: 247

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

超级萌新 说:

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

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

离线

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

awfans
会员
注册时间: 2018-04-03
累计积分: 247

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

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

离线

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

超级萌新
会员
注册时间: 2018-05-04
累计积分: 403

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

awfans 说:
超级萌新 说:

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

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

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

离线

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

jianfengxixi
会员
注册时间: 2018-06-14
累计积分: 11

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

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

离线

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

超级萌新
会员
注册时间: 2018-05-04
累计积分: 403

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

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

离线

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

Lvy
会员
注册时间: 2017-11-25
累计积分: 97

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

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

离线

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

awfans
会员
注册时间: 2018-04-03
累计积分: 247

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

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

离线

页脚