您尚未登录。

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

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

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

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

离线

楼主 #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
示波器看下波特率是不是偏差太大,如果太大,需要用外部晶振

离线

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

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

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

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

离线

页脚

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

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