STC15F2K60S2单片机串口分时复用

you_chao 2016-05-30 04:27:52
如题,现在用到STC15F2K60S2单片机,需要用到3个串口,但是本身只有2个串口,想用串口1分时复用,望大神能解答一下怎么实现,串口中断怎么工作的
...全文
1403 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
you_chao 2016-05-31
  • 打赏
  • 举报
回复
非常感谢!如果分为主设备(主设备优先,也是单片机)与次设备,现在想的是主设备要通信前另外给个信号(IO口),单片机接收到这个信号就将串口切换到接收主设备的IO口,完成后再切换到次设备通信的IO口。理论上想想是可以实现,但是我担心是否可以随时切换IO口,会不会有什么冲突,什么情况下会丢包,现在还是做方案,还没试过,不知道可不可行,马上试试。
gspUser 2016-05-31
  • 打赏
  • 举报
回复
串口分时复用通常是用分出来的两个串口都是主动发数据收数据的情况,两个被动收的数据是有点问题。 按你的要求,就是串口一直保证切换在P1口,当P3口有数据要发送或接收时,就切换到P3口通信,这样就要求你要知道什么时候P3串口有数据,比如P3口与串口型传感器连接的话,可以用定时器之类的,偶尔需要数据时切换到P3口,采集到数据后马上切换回P1口。 当两个串口的数据量大时,必然会有丢包的情况 你可以这样试下,效果不好的话就用多串口的ARM或者用串口扩展芯片
you_chao 2016-05-30
  • 打赏
  • 举报
回复
谢谢,Datasheet看过,大致情况了解,没试过。实际的需求是我希望复用的两个串口设备是有优先级的,比如串口1可以在P1口与P3口切换,我想要P1口只要有串口中断就处理,P1口没有的话就一直让P3口通信,这要怎么实现呢?
gspUser 2016-05-30
  • 打赏
  • 举报
回复
你下载这个单片机的datasheet看下串口的说明就行了 STC的单片机串口有寄存器可以设置切换,比如默认的串口1是在P3那里,设置切换寄存器以后可以切换到P1口那里作为串口1。 也有部分封装是有P4口的,串口2也可以在P1口和P4口之间设置切换 就是硬件线路上的切换。 以串口1切换为例子 你把电路板上P1和P3的串口管脚都接成串口,软件处理上还是串口1,中断这些都没变化,只是要自己软件判断是接在P1口还是P3口。 分时复用串口1就是把串口1设置切换到P3口,与设备1进行通信,通信完后设置串口1切换到P1口,与设备2进行通信,这样一个串口就模拟两个串口了

27,508

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧