打印

STM32串口不够用如何使用IO口模拟串口功能?

[复制链接]
9455|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang168506|  楼主 | 2013-10-26 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
          小弟最近在用STM32F417,目前需要7路IO,自带6路,需要模拟一路全双工串口,请坛内的各位大神大致讲讲硬件设计,现有问题如下:
     1、如果是模拟串口肯定回牵扯到电平转化问题,RS232是TTL电平,而IO是CMOS电平,小弟想知道硬件设计是不是需要上拉电阻?
     2、我如何知道所模拟的串口什么时候发送完成,想引入中断管脚,如何用该中断引脚检测数据(因为模拟的串口引脚不再是自带串口模块,所以中断应该会麻烦一些),请指教。
    3、STM32F417在编程过程中肯定要涉及到延时,该延时与始终周期以及波特率又有什么关系?如何换算。
    泣血拜谢!
沙发
wx85105157| | 2013-10-26 20:58 | 只看该作者
最小的资源开销是1个定时器中断,一个中断引脚。   如果需要多路串口接收的话,那就接到普通引脚,再接一个二极管到中断引脚。

引脚中断后去查询IO是那路串口接收到数据位。(最好有上升下降沿中断。不然就下降沿中断,定时器中断轮询)

发送也用同一个定时器。

定时器的中断速率最好比波特率快几倍,3倍是最好的。。

这样出来的多通道串口的波特率是一样的。。。其他的波特率代码要复杂点

使用特权

评论回复
板凳
hithms| | 2013-10-26 21:05 | 只看该作者
RS232是TTL电平???

使用特权

评论回复
地板
lhchen922| | 2013-10-27 17:34 | 只看该作者
http://blog.csdn.net/sy_lixiang/article/details/7783300
这里面有个帖子,介绍51用IO去模拟串口,有好几种方法,可以参考下。

使用特权

评论回复
5
pattywu| | 2013-10-27 17:49 | 只看该作者
    如果安全空间够的话,多用块MCU来扩展一下UART就行了,何必呢?

使用特权

评论回复
6
wang168506|  楼主 | 2013-10-27 21:54 | 只看该作者
hithms 发表于 2013-10-26 21:05
RS232是TTL电平???

- -!受教了  虽然知道是反逻辑正负12  一着急就说成TTL  谢谢更正!请问您这边能细说一下实现过程嘛  有劳了!

使用特权

评论回复
7
wang168506|  楼主 | 2013-10-27 21:55 | 只看该作者
pattywu 发表于 2013-10-27 17:49
如果安全空间够的话,多用块MCU来扩展一下UART就行了,何必呢?

为了一路串口扩展MCU不大好吧 :L

使用特权

评论回复
8
wang168506|  楼主 | 2013-10-27 21:55 | 只看该作者
lhchen922 发表于 2013-10-27 17:34
http://blog.csdn.net/sy_lixiang/article/details/7783300
这里面有个帖子,介绍51用IO去模拟串口,有好几 ...

谢谢

使用特权

评论回复
9
huzi2099| | 2013-10-28 13:00 | 只看该作者
wang168506 发表于 2013-10-27 21:55
为了一路串口扩展MCU不大好吧

如果只需要扩展一路串口还是看看io重新分配一下能不能挤出另外的串口,如果需要扩展的多还是用cpld实现好了.
用软件模拟硬件总是不好的.

使用特权

评论回复
10
huangxz| | 2013-10-28 13:57 | 只看该作者
用软件模拟usart比较浪费时间,还是用fpga比较好

使用特权

评论回复
11
wang168506|  楼主 | 2013-10-28 15:21 | 只看该作者
huangxz 发表于 2013-10-28 13:57
用软件模拟usart比较浪费时间,还是用fpga比较好

这个会不会太复杂呢?

使用特权

评论回复
12
huangxz| | 2013-10-28 17:30 | 只看该作者
wang168506 发表于 2013-10-28 15:21
这个会不会太复杂呢?

如果参数固定的还是比较好做的,如果参数可以设置的就比较麻烦了。

使用特权

评论回复
13
StephenZRT| | 2013-10-29 09:10 | 只看该作者
有没有想过,用SPI口再挂一颗MCU,,可以提供三个以上的Uart

使用特权

评论回复
14
wang168506|  楼主 | 2013-10-29 11:01 | 只看该作者
StephenZRT 发表于 2013-10-29 09:10
有没有想过,用SPI口再挂一颗MCU,,可以提供三个以上的Uart

这方法不好吧?因为一路串口,我就得加一个MCU的成本,几十块钱呢

使用特权

评论回复
15
wang168506|  楼主 | 2013-10-29 11:02 | 只看该作者
huangxz 发表于 2013-10-28 17:30
如果参数固定的还是比较好做的,如果参数可以设置的就比较麻烦了。

假设固定,比如说9600,但是这个数没法被整除的呀

使用特权

评论回复
16
wang168506|  楼主 | 2013-10-29 11:50 | 只看该作者
huzi2099 发表于 2013-10-28 13:00
如果只需要扩展一路串口还是看看io重新分配一下能不能挤出另外的串口,如果需要扩展的多还是用cpld实现好 ...

一共6路,不是被其他的占用了 而是全被串口占用了,而且目前还需要一路!

使用特权

评论回复
17
huangxz| | 2013-10-29 13:59 | 只看该作者
wang168506 发表于 2013-10-29 11:02
假设固定,比如说9600,但是这个数没法被整除的呀

固定参数的比较好做,判断一个起始位,然后隔固定的时间采样,就可以实现接收,
发送就更简单了。

使用特权

评论回复
18
eurphan| | 2016-4-2 21:38 | 只看该作者
有没有spi或者iic转串口的芯片啊

使用特权

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

本版积分规则

57

主题

811

帖子

5

粉丝