打印

232串口通讯遇到了个问题,头疼,咋整

[复制链接]
楼主: 许世霞
手机看帖
扫描二维码
随时随地手机跟帖
21
对比两幅图,我认为是光耦的问题。这个型号没有用过,参数不了解。假设参数匹配,要考虑是不是次品,建议更换一片试试。
看起来不像是led驱动不足。根据原理图看,如果只是单单的驱动不足,下降沿会不好,但是上升沿应该合适。
你的两个边沿都不好,所以最大的可能就光耦有问题。
我在485通讯中常用 6N137 。

使用特权

评论回复
22
许世霞|  楼主 | 2012-5-31 10:47 | 只看该作者
同志们看这个

TEK0012.JPG (86.2 KB )

TEK0012.JPG

使用特权

评论回复
23
许世霞|  楼主 | 2012-5-31 10:48 | 只看该作者
这是我刚调的,U2两边都用751,波形看着挺好的了,用逻辑分析仪看数据也是正确的,可是那边模块不给力呀,发不出数据来。
但这个模块在别人的板子上就可以。头疼,咋整

使用特权

评论回复
24
许世霞|  楼主 | 2012-5-31 10:49 | 只看该作者
本帖最后由 许世霞 于 2012-5-31 10:53 编辑

就是模块还是没收到数据一样,真是无语了
2501光耦9600我们也试过是没问题的呀

使用特权

评论回复
25
hq_y| | 2012-5-31 11:03 | 只看该作者
本帖最后由 hq_y 于 2012-5-31 11:05 编辑

接收端102可能太小
为啥呢
因为,3,3V的电压,本身光耦这端的LED可能就要吃掉2V左右压降,也就是,才4mA;
而ctr才多少?
接收端需要5mA
再加上如果你是单片机的口线直接驱动光耦
或者不能给出4mA的电流
所以
1、加大接收端的上拉电阻到5K、10K,看波形
2、或者在单片机发射端和光耦之间加一级驱动,如7407、244这样的芯片
综合看看波形
另外再降低波特率,如1200bps,看看能否正常收到数据

---------------------------
当然,为了保证发射接收端都能正确收到数据,可以去掉光耦直接短接看看,注意一下;3.3/5V之间的电平匹配。先保证两端的发射接收程序正确。

使用特权

评论回复
26
Tinnal| | 2012-5-31 11:05 | 只看该作者
出来的波形很好,现在问题就不在光耦上了。我搞不清楚你“那边的模块”是什么意思,你是用两个相同的模块对收,还是什么? 这个波形对端能正确收到吗?
“可是那边模块不给力呀,发不出数据来。”,那边的模块发出来的信号,在这边的波形有图吗?
能不能把关系给我搞清楚一点。有点晕。

使用特权

评论回复
27
Ryanhsiung| | 2012-5-31 11:16 | 只看该作者
还在用光耦做隔离啊,试试这种数字隔离器件吧
110741
jjjyufan 发表于 2012-5-31 09:43

这个可以,我这边也用这个,不过电流有点大,100MA

使用特权

评论回复
28
许世霞|  楼主 | 2012-5-31 11:45 | 只看该作者
TINNAL,
是模块和CPU通信,现在CPU端将数据已经发到模块的接收端了。但是模块的发射端没有发出数据。

使用特权

评论回复
29
许世霞|  楼主 | 2012-5-31 11:46 | 只看该作者
HQ_Y,你那个接受端的102是指的哪个?被你说糊涂了,现在脑子已经短路了呵呵

使用特权

评论回复
30
Tinnal| | 2012-5-31 12:12 | 只看该作者
模块是你们做的吗?能知道他是否正确收到数据吗,这这种情况可能性比较多也。
1. 模块是TTL电平的还是RS232?
2.你发的命令如果模块收到的话,模块的确会相应?
3.模块是没发出数据,还是模块那边已经发出来的,经过你的接收光耦后,单片机收不到而已(因为你只贴了了单片机发送侧的波形)?

使用特权

评论回复
31
nongfuxu| | 2012-5-31 12:15 | 只看该作者
同志们看这个

怎么看光偶输出波形已经非常好了。
难道是程序原因? 还是MCU不给力? 光偶后加一级施密特整形试试。

使用特权

评论回复
32
mengdie_198599| | 2012-5-31 12:59 | 只看该作者
学习,学习!谢谢各位大侠们!

使用特权

评论回复
33
yzhj| | 2012-5-31 13:07 | 只看该作者
许 先暂停下,不急这一时。站起来走走,清醒头脑,梳理下思路。
然后回来分段排查。用些其他的设备,分段接入,保证每个部件都是好的,再去统调。
先放弃现有软件,使用串口调试工具测试,保证硬件传输正常后,再开软件。

使用特权

评论回复
34
许世霞|  楼主 | 2012-5-31 13:26 | 只看该作者
现在我感觉还不是接收的问题,
发射过来的数据是没问题的。但好像模块就是不识别,不然如果它收到数据了,那么在U1的2引脚就应该有数据才对呀。

使用特权

评论回复
35
草根白骨精| | 2012-5-31 13:54 | 只看该作者
把你的光耦输出负载,这里是R4加大一点,本人实验过,具体原理是:光耦输出也是一个三极管放大电路,当负载小电流大的时候,内部三极管会有一个相对较长的放大区域,也就会使波形畸变。输出驱动的负载阻抗要尽量的大,那么,光敏管很快就进入饱和或截止状态,不至于引起波形的严重畸变,本人曾经驱动输入0.5MA,输出负载68K+运放阻抗转换,能轻松到36K。用的普通817光耦

使用特权

评论回复
36
chairmanisme| | 2012-5-31 14:08 | 只看该作者
头痛啊 呵呵

使用特权

评论回复
37
许世霞|  楼主 | 2012-5-31 14:24 | 只看该作者
我刚才也发了一个波形很好的图,可是就是不识别这个信号呀。

使用特权

评论回复
38
hq_y| | 2012-5-31 15:37 | 只看该作者
29# 许世霞
说的是光耦接收端的上拉电阻102,也就是R1和R4.
102表示为1K阻值
应该是不能完全饱和导通的。会导致接收端波形畸变,甚至没有输出。
当然具体波形如何看示波器。
把接受和发射波形对比一下就知道了。

使用特权

评论回复
39
cool_coder| | 2012-5-31 15:48 | 只看该作者
从输出低电平的幅度看,应该是饱和了,波形还不错。

使用特权

评论回复
40
许世霞|  楼主 | 2012-5-31 16:13 | 只看该作者
同志们,捷报来了
太过分了,软件人员没有把CPU控制模块的外部复位引脚拉高。导致模块的复位一直是低电平,所以才有信号过去,不能通信。
哎、害的我中午都没休息。
我挺郁闷的,软件人员真的对硬件不是很了解。但是我人微言轻,还不信我的呵呵。。非要我把模块的复位端直接拉高。我无话。后来找来个他能信得过的。**我的说法,采取别的方法验证才算说服。
不过也有收获。算是塞翁失马吧。
再次感谢各位的鼎力帮忙。非常感谢。让我很是感动呵呵。。有你们在,我还怕啥呢呵呵

使用特权

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

本版积分规则