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

[复制链接]
10194|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去模拟串口,有好几种方法,可以参考下。
pattywu 发表于 2013-10-27 17:49 | 显示全部楼层
    如果安全空间够的话,多用块MCU来扩展一下UART就行了,何必呢?
 楼主| wang168506 发表于 2013-10-27 21:54 | 显示全部楼层
hithms 发表于 2013-10-26 21:05
RS232是TTL电平???

- -!受教了  虽然知道是反逻辑正负12  一着急就说成TTL  谢谢更正!请问您这边能细说一下实现过程嘛  有劳了!
 楼主| wang168506 发表于 2013-10-27 21:55 | 显示全部楼层
pattywu 发表于 2013-10-27 17:49
如果安全空间够的话,多用块MCU来扩展一下UART就行了,何必呢?

为了一路串口扩展MCU不大好吧 :L
 楼主| wang168506 发表于 2013-10-27 21:55 | 显示全部楼层
lhchen922 发表于 2013-10-27 17:34
http://blog.csdn.net/sy_lixiang/article/details/7783300
这里面有个帖子,介绍51用IO去模拟串口,有好几 ...

谢谢
huzi2099 发表于 2013-10-28 13:00 | 显示全部楼层
wang168506 发表于 2013-10-27 21:55
为了一路串口扩展MCU不大好吧

如果只需要扩展一路串口还是看看io重新分配一下能不能挤出另外的串口,如果需要扩展的多还是用cpld实现好了.
用软件模拟硬件总是不好的.
huangxz 发表于 2013-10-28 13:57 | 显示全部楼层
用软件模拟usart比较浪费时间,还是用fpga比较好
 楼主| wang168506 发表于 2013-10-28 15:21 | 显示全部楼层
huangxz 发表于 2013-10-28 13:57
用软件模拟usart比较浪费时间,还是用fpga比较好

这个会不会太复杂呢?
huangxz 发表于 2013-10-28 17:30 | 显示全部楼层
wang168506 发表于 2013-10-28 15:21
这个会不会太复杂呢?

如果参数固定的还是比较好做的,如果参数可以设置的就比较麻烦了。
StephenZRT 发表于 2013-10-29 09:10 | 显示全部楼层
有没有想过,用SPI口再挂一颗MCU,,可以提供三个以上的Uart
 楼主| wang168506 发表于 2013-10-29 11:01 | 显示全部楼层
StephenZRT 发表于 2013-10-29 09:10
有没有想过,用SPI口再挂一颗MCU,,可以提供三个以上的Uart

这方法不好吧?因为一路串口,我就得加一个MCU的成本,几十块钱呢
 楼主| wang168506 发表于 2013-10-29 11:02 | 显示全部楼层
huangxz 发表于 2013-10-28 17:30
如果参数固定的还是比较好做的,如果参数可以设置的就比较麻烦了。

假设固定,比如说9600,但是这个数没法被整除的呀
 楼主| wang168506 发表于 2013-10-29 11:50 | 显示全部楼层
huzi2099 发表于 2013-10-28 13:00
如果只需要扩展一路串口还是看看io重新分配一下能不能挤出另外的串口,如果需要扩展的多还是用cpld实现好 ...

一共6路,不是被其他的占用了 而是全被串口占用了,而且目前还需要一路!
huangxz 发表于 2013-10-29 13:59 | 显示全部楼层
wang168506 发表于 2013-10-29 11:02
假设固定,比如说9600,但是这个数没法被整除的呀

固定参数的比较好做,判断一个起始位,然后隔固定的时间采样,就可以实现接收,
发送就更简单了。
eurphan 发表于 2016-4-2 21:38 | 显示全部楼层
有没有spi或者iic转串口的芯片啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

811

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部