打印
[应用相关]

stm32用GPIO模拟普通异步串口接收数据

[复制链接]
4391|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rospiers|  楼主 | 2018-2-28 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在用stm32f103做一些简单应用,芯片本身自带串口只有2个,我需要4个,才能达到要求,就想用普通GPIO口模拟串口收发。
数据发送比较容易,但接收一直有问题,之中无法通过串口工具像stm32正常发送数据。在网上找到的多数例子方法——计数器、中断等,都不太适合。我用的是HAL库,管脚数据用用逻辑分析 仪抓出的波形(发送的是接收到的数据:异常),求大神指点
沙发
香水城| | 2018-2-28 14:30 | 只看该作者
stm32 芯片里有很多系列UART都很多,F1系列里FLASH在256K及以上读支持5个UART.

ST官方有个基于STM8的UART模拟软件,你可以下载参考下。

UART emulation software in STM8S and STM8A microcontrollers (AN2781)。

使用特权

评论回复
板凳
Lewisnx| | 2018-2-28 14:41 | 只看该作者
IO模拟串口的接收最好辅助以外中断,纯粹的查询法需要系统资源够用且编程合理

使用特权

评论回复
地板
CCompton| | 2018-2-28 14:55 | 只看该作者
两个接收都在里判断,如果两个串口收到数据的时间不能保证一定间隔,就容易出问题

使用特权

评论回复
5
598330983| | 2018-2-28 14:58 | 只看该作者
因为你项目复杂,肯定有其他中断打断通信了

使用特权

评论回复
6
598330983| | 2018-2-28 14:58 | 只看该作者
你还是用硬件的吧

使用特权

评论回复
7
Richardd| | 2018-2-28 15:07 | 只看该作者
根据波特率,设置某个频率的中断。把波形拼出来。

使用特权

评论回复
8
Mattheww| | 2018-2-28 15:16 | 只看该作者
定时查询,这个需要合理调度系统资源的,对编程效率的要求也较高

使用特权

评论回复
9
Erichk| | 2018-2-28 15:25 | 只看该作者
模拟串口部分最好使用汇编编程,这样可以实现最高的编程效率。当然,这对编程能力的要求也较高。

使用特权

评论回复
10
Thorald| | 2018-2-28 15:37 | 只看该作者
不知道通信的两边是不是都是你写?
如果是那就简单了,直接来个IO 模拟I2C。
非要用串口,可以考虑电子开关,那样简单很多,成本也还好。

使用特权

评论回复
11
xietingfeng| | 2018-2-28 16:57 | 只看该作者
使用串口模块

使用特权

评论回复
12
suzhanhua| | 2018-2-28 16:57 | 只看该作者
计数器怎么设计的

使用特权

评论回复
13
mituzu| | 2018-2-28 16:57 | 只看该作者
你需要什么样的设计

使用特权

评论回复
14
hellosdc| | 2018-2-28 16:58 | 只看该作者
stm32f1有四个串口的。

使用特权

评论回复
15
uiint| | 2018-2-28 16:58 | 只看该作者
最简单的方式就是换个芯片。

使用特权

评论回复
16
xietingfeng| | 2018-2-28 16:58 | 只看该作者
串口模块可以代理。

使用特权

评论回复
17
suzhanhua| | 2018-2-28 16:58 | 只看该作者
通过寄存器模拟串口。

使用特权

评论回复
18
mituzu| | 2018-2-28 16:58 | 只看该作者
怎么不使用串口模块

使用特权

评论回复
19
uiint| | 2018-2-28 16:58 | 只看该作者
可以使用stm32F4芯片呀。

使用特权

评论回复
20
hellosdc| | 2018-2-28 16:59 | 只看该作者
楼主换个串口试试看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

116

主题

377

帖子

0

粉丝