本帖最后由 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的波形没有产生低电平.
|