首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

单片机一个串口复用有关问题

2013-08-06 
单片机一个串口复用问题我用一个单片机的TXD,RXD分别接两个模块,从一个接受信息,另一个发送信息,可以分时

单片机一个串口复用问题
我用一个单片机的TXD,RXD分别接两个模块,从一个接受信息,另一个发送信息,可以分时进行,电路不冲突(单个模块只与单片机的TXD RXD中一个连接即可通信),但波特率不同,那我是不是要分两次初始化串口呢?能实现吗?还有串口中断怎么写呢,可以通过写入SBUF的信息不同来判断吗?(分开单独通信已经搞定了) 单片机
[解决办法]
“但波特率不同,那我是不是要分两次初始化串口呢”
可以 2次 初始化, 不过 开销就大 了。

如果 硬件 有 2个 串口 就好了。
[解决办法]
“什么叫开销大啊” OverHead
就是 每次 改变 波特率时 都 要 重新 初始化 一次。
“发送” 一般 不用 中断, 因为 你 知道,发 什么, 什么时间 发。
接受 中断 是要 的。

[解决办法]
根据波特率不就可以判断了吗?
假设需要从A读信息发送到B
先设置成A的波特率,进中断,读取数据,配成B的波特率,发送出去,再设置成A的波特率等待。
[解决办法]
你现在 是 “半工”状态, 不能 同时 收发 (“全工“)
[解决办法]
就我们产品进行分时复用串行口的经验看,这样不太好弄.当然,我们是分别对两个设备,和楼主的有点区别

在用到对应的设备的时候,重新配置串行口

同时把接收和发送功能互斥配置(大概就是,接收数据的时候,不允许发送,发送数据的时候不允许接收)

虽然没这么用过,不过,感觉应该可以实现
[解决办法]

引用:
Quote: 引用:

根据波特率不就可以判断了吗?
假设需要从A读信息发送到B
先设置成A的波特率,进中断,读取数据,配成B的波特率,发送出去,再设置成A的波特率等待。

用波特率判断可行吗,判断哪个参数呢?


你应该预先知道A和B的波特率,
那么你设置成A的波特率的话,B发送的信息你是收不到的。
另外根据你的描述,你只要配置成A的波特率,B只是被动接受你发送的信息,所以你可以收到A的信息重新配置波特率然后发送给B,发完后再配成A的波特率。
[解决办法]

可以实现。每次收转发或发转收时重新设置波特率。
[解决办法]
一个串口当两个不同的波特率串口用时可以的,但是,要是有两个独立的串口不就好了嘛,干嘛非要这么折磨自己呢。
[解决办法]
用IO口模拟一个TXD就是了。反正是固定波特率的。自己延时程序调下就可以了。

热点排行