打印

(更新) 请问这个电路图是个什么原理(3.3V 和 5V互转)

[复制链接]
3967|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 vcxz_1982 于 2014-7-15 22:00 编辑

大家好!

我有个传感器和RS232 UART只采用1根线, 所以出了一个这么个电路图给我们参考.




由于MAX的IC不好申请, 所以选了TI的, TI给我推荐了TXS0101.
http://www.ti.com.cn/cn/lit/ds/symlink/txs0101.pdf
电路图如下:

我的单片机是一块ARM9 2440板, 使用的是第3个串口, 信号只有3.3V.
可以保证的是:
1. 传感器是好的(有demo板, ATMEL 128的5V RXD TXD 用个电阻接的).
2. 我的程序代码是好的, 发送的数据指令是正确的(MODBUS ACSII, 2400, 7bit, 偶效验 1个停止位)
3. 我的电路都是通的. 给rxd和txd短接, 都能收到数据.

但是现在遇到了问题, 通信没有建立起来, 发送指令出去, 没有反馈.

问题原因: 我感觉是传感器没有收到正确的数据.

测试: 由于手上没有示波器, 只能用万用表量电压变化.
1. TXD2的电压是3.27V左右
2. 经过1N4148, 被压降到2.71V左右.
3. TXS0101的B口电压始终是4.98V. A口是3.3V(发送数据是, 好像有点波动).

为了验证好坏, 我用镊子, 将COM_SM短接到GND产生TTL低电平, 程序能收到一些字符. 说明只要传感器能发送数据, 产生电平变化, TXS0101应该能将数据从B转给A端口.


所以我觉得问题还是出在 TXD2 将数据传递的问题上. RXD2需要高电平是>=2.8V

1N4148产生了压降, 而0101的VccA电压有3.3V, 根据数据手册, A口的高电平要求是VccA-0.4v, 但是这个二极管压降是0.45~0.55.

然后我又看了MAX3370的数据手册, 他的高电平要求比0101还要高一些, 但是是官方推荐电路, 所以我觉得是我自己没有理解这种芯片的数据手册的意思.

所以请教一下:
1. 我上述理解有哪里错了吗?
2. 为何官方会推荐这么一个电路, 因为我觉得, 当TXD发送数据, RXD岂不会马上收到数据? 虽然可以在软件上进行过滤(发出去后, 立即清空接收区)
3. 这里面电阻 R19和 R12的作用是什么呢?

更新: 2014年7月15日14:31:54:

刚刚用一个TTL转232的链接到电脑上测试,
ARM9发数据, 电脑上并没有收到数据.
电脑上发数据, ARM9也没有收到.

看来这个电路哪里还是有问题的. 应该是没有正确产生低电平的缘故.
因为我做了个试验: 用万用表测量电脑的TTL板子的 TXD脚, 当没有接到AMR机时, 万用表摆动3.0V~4.98V左右,
但是接上电路的TXS0101后, 电压摆动区间4.6V~4.98.

所以还是哪里导致无法产生低电平.

2014年7月15日15:32:40
刚刚把TXD2的二极管的2个脚用镊子直接短路, 电脑那头收到了指令... 看来那个IC还是在工作的, 接下来怎么让数据返回的问题了.

2014年7月15日15:38:57
然后想着, 把二极管去掉, 直接短路, 结果居然是电脑那头无法收到数据, 直接被ARM机自己接收了.


目前主要问题:
1. 为何将二极管用镊子短路2个脚, ARM和电脑那头就能收到了; 如果不用二极管直接短路2个焊点, ARM能收到, 电脑无法收到呢?

2. 为何电脑通过TTL板子, 发出的信号, 无**确传输到A口上呢? 需要加个什么东西.


最新测试结果:

1. 将二极管反接不行. (但是电阻不知道怎么个上拉法, 而且不懂上拉的意义, 还没有完全测试)
2. 我将二极管断开, 也就是说TXD2悬空, 测试一下TTL 5V转 3.3V看是否正常, 测试结果是正常的, 电脑发数据, ARM能收到.
3. 配上我前面将二极管接上, 并且用镊子短接二极管2个脚, 电脑也能收到数据.

这说明这个芯片还是好的, 两边的程序也都是好的, 就是无法做到互斥.

也就是说: 按照官方的图,
1. 当TXD发送数据时, 数据波形无**确生成到B点去, 可能收到了RXD的影响.
2. 当TTL通过COM_SM给数据过来时, 也无**确的生成波形, 让RXD接收.


最新测试结果:
依旧采用我画的电路图, 所有器件都按照电路图. 做了一个实验: 将TXD2设为低电平, 然后电脑用TTL板子发数据过来, RXD2可以正确收到数据, 说明那个图还是因为TXD2的高电平导致A的波形没有产生低电平.

相关帖子

沙发
jjjyufan| | 2014-7-15 10:32 | 只看该作者
示波器 自己看波形啊,
发送的波形 器件2端 是否一致 只是电平不一样

使用特权

评论回复
板凳
jjjyufan| | 2014-7-15 10:34 | 只看该作者
4148换肖特基

使用特权

评论回复
地板
vcxz_1982|  楼主 | 2014-7-15 10:34 | 只看该作者
突然觉得电路图有问题了, 或者说官方没有考虑到我的RXD TXD并不是单片机, 而是ARM机+WINCE系统.


假设: TXD 要产生低电平, 即使产生了, A口也一直是高电平吧, 因为RXD一直是高电平(可能是输入高阻态)., 怎么可能产生低电平呢?

使用特权

评论回复
5
vcxz_1982|  楼主 | 2014-7-15 10:47 | 只看该作者
本帖最后由 vcxz_1982 于 2014-7-15 10:49 编辑
jjjyufan 发表于 2014-7-15 10:34
4148换肖特基

能说说为什么吗? 是因为他只有0.4v的压降吗?

1N4148是官方给出的.

使用特权

评论回复
6
vcxz_1982|  楼主 | 2014-7-15 11:12 | 只看该作者
本帖最后由 vcxz_1982 于 2014-7-15 11:19 编辑
jjjyufan 发表于 2014-7-15 10:34
4148换肖特基

手上有个肖特二极管, 美台的B320A, 压降确实只有0.4, 和txs0101还是匹配的, 但是 换了后还是不行.

将3.27 压降到 3.0~3.1左右. (准确来说, 是我吧VccA的供电恢复成了3.3v, 所以A口自己提升了一部分)

使用特权

评论回复
7
shalixi| | 2014-7-15 14:22 | 只看该作者
IC接错了吧。

使用特权

评论回复
8
vcxz_1982|  楼主 | 2014-7-15 14:30 | 只看该作者
shalixi 发表于 2014-7-15 14:22
IC接错了吧。

没有啊.

使用特权

评论回复
9
vcxz_1982|  楼主 | 2014-7-15 15:00 | 只看该作者
有个问题:

如果B脚发出一个波形, A脚始终是个3.3v, 那这个IC怎么识别是A发到B, 还是B发到A呢?

使用特权

评论回复
10
shalixi| | 2014-7-15 15:00 | 只看该作者
vcxz_1982 发表于 2014-7-15 14:30
没有啊.

我查了一下,没有错。

使用特权

评论回复
11
vcxz_1982|  楼主 | 2014-7-15 15:04 | 只看该作者
shalixi 发表于 2014-7-15 14:22
IC接错了吧。

你可能是说我的OE上拉的地方不对吧? 应该上拉到A, 我拉到B去了, 但是手册说可以最大5.5V.

使用特权

评论回复
12
vcxz_1982|  楼主 | 2014-7-15 15:04 | 只看该作者
shalixi 发表于 2014-7-15 15:00
我查了一下,没有错。

http://e2e.ti.com/support/interface/etc_interface/f/391/p/296171/1042583.aspx#1042583

这里有个人是这么接的.

使用特权

评论回复
13
shalixi| | 2014-7-15 15:09 | 只看该作者
vcxz_1982 发表于 2014-7-15 15:04
http://e2e.ti.com/support/interface/etc_interface/f/391/p/296171/1042583.aspx#1042583

这里有个人 ...

那你试试看。

使用特权

评论回复
14
vcxz_1982|  楼主 | 2014-7-15 15:25 | 只看该作者
shalixi 发表于 2014-7-15 15:09
那你试试看。

我的问题主要是无法产生TTL低电平信号.

使用特权

评论回复
15
vcxz_1982|  楼主 | 2014-7-15 15:46 | 只看该作者
jjjyufan 发表于 2014-7-15 10:32
示波器 自己看波形啊,
发送的波形 器件2端 是否一致 只是电平不一样

-_- 没有示波器

使用特权

评论回复
16
djxf| | 2014-7-15 16:35 | 只看该作者
vcxz_1982 发表于 2014-7-15 15:46
-_- 没有示波器

去看下手册,是不是Max3370不带bus-hold 功能,而TXS0101带bus-hold。

正常情况下,A的低电平是由R19决定的,此时即使RXD2为高电平3.3V,经过R12和R19的分压,A点的电平也是低电平0.25V左右。如果A得不到低电平,很可能就是上一个状态是B-->A为高电平,如果TXS0101带bus-hold,那么此时A就维持在高电平。

可以这么试试,每次当B发完高电平,如果下一个状态是等待TXD2发送数据时,将B先置成低电平。

使用特权

评论回复
17
vcxz_1982|  楼主 | 2014-7-15 16:49 | 只看该作者
本帖最后由 vcxz_1982 于 2014-7-15 16:50 编辑
djxf 发表于 2014-7-15 16:35
去看下手册,是不是Max3370不带bus-hold 功能,而TXS0101带bus-hold。

正常情况下,A的低电平是由R19决 ...


Bus-hold? 2个IC好像都是互转的, 都没有方向控制引脚.


2014年7月15日15:32:40
刚刚把R19电阻去掉了, 然后吧TXD2的二极管的2个脚用镊子直接短路, ARM和电脑那头都收到了指令... 看来那个IC还是在工作的, 接下来怎么让数据返回的问题了.

2014年7月15日15:38:57
然后想着, 把二极管去掉, 直接短路, 结果居然是电脑那头无法收到数据, 直接被ARM机自己接收了.


目前主要问题:
1. 为何将二极管用镊子短路2个脚, ARM和电脑那头就能收到了; 如果不用二极管直接短路2个焊点, ARM能收到, 电脑无法收到呢?

2. 为何电脑通过TTL板子, 发出的信号, 无**确传输到A口上呢? 需要加个什么东西.

使用特权

评论回复
18
vcxz_1982|  楼主 | 2014-7-15 16:55 | 只看该作者
djxf 发表于 2014-7-15 16:35
去看下手册,是不是Max3370不带bus-hold 功能,而TXS0101带bus-hold。

正常情况下,A的低电平是由R19决 ...

TXS0101全文就没有hold字样.

使用特权

评论回复
19
hdp7891000| | 2014-7-15 19:56 | 只看该作者
我觉得电路可能有问题。COM和TXD有短路风险。
是否是经过验证的电路?还是根据你的需求给你的方案?
我觉得R2上拉,二极管方向调换下会比较好。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
vcxz_1982 + 3 很给力! 按照你的方法, 发送和接收都OK了.
20
vcxz_1982|  楼主 | 2014-7-15 20:53 | 只看该作者
本帖最后由 vcxz_1982 于 2014-7-15 20:57 编辑
hdp7891000 发表于 2014-7-15 19:56
我觉得电路可能有问题。COM和TXD有短路风险。
是否是经过验证的电路?还是根据你的需求给你的方案?
我觉得 ...


不是专门给我的方案, 是德国一个传感器厂商的PDF说明书给的电路.

联系了他们, 暂时还不知道是否验证过.

二极管方向调换? 还是对着TXD2 还是说将二极管对着RXD2?

如果是后者, 我觉得你说的有道理, 其实也就是RXD2 和 TXD2交换对吧. 说着说着就觉得有道理了...

呆会割线测试.

============================
补充: 我理解错了, 我以为二极管调换一下, TXD无法发送数据, 但是看了一下, 如果TXD低电平就会导致A点变化.

使用特权

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

本版积分规则

22

主题

202

帖子

1

粉丝