打印
[技术讨论]

74138居然没法传递串口信号!(解决了)

[复制链接]
979|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 新下级学 于 2022-4-16 18:55 编辑

我用 STM32F103C6的串口经过 74HC138发数据给别的设备,设备再发回给单片机(不过74138)。
下面是74138 的真值表。注意红色方框。 单片机的 TX 接A0, Y0 接设备,应该就能传送。



下面是实际接线图,单片机和设备也是3.3V的:

已经验证过两点:
1、单片机直接连设备,正常;
2、手工控制单片机引脚电平高低,Y0 同步变化,说明 74138 是使能了的。
但是,实际工作时设备却没有反应。
因我无示波器,所以不能确定是设备收到没。但设备发给单片机的线路就是一根电线,没经过74138,应该不会出错。
所以,还是设备没收到的可能性大。
9600bps,也不算快。
哪位大侠指点一下,谢谢!
已经解决:原来是单片机 OD 输出!!



使用特权

评论回复
沙发
chineseboyzxy| | 2022-4-15 19:49 | 只看该作者
用音频信号试一下能不能通过74138最容易实现,比如9600赫兹的方波。

使用特权

评论回复
板凳
lyjian| | 2022-4-15 21:51 | 只看该作者
也是是双方波特率不一致呢

使用特权

评论回复
地板
deerdda| | 2022-4-15 22:17 | 只看该作者
呵呵,不能直接接过去吗,为什么非要通过138芯片呢

使用特权

评论回复
5
oufuqiang| | 2022-4-16 00:40 | 只看该作者
这个用法好奇怪。居然不是选好通道通过Y0-Y7去分。还只有一路,那要用138干嘛。
我用4051分过232的串口信号,效果良好。

使用特权

评论回复
6
新下级学|  楼主 | 2022-4-16 08:47 | 只看该作者
lyjian 发表于 2022-4-15 21:51
也是是双方波特率不一致呢

一楼说了:跳过74138直接通是没问题的。肯定不是BPS问题。

使用特权

评论回复
7
新下级学|  楼主 | 2022-4-16 10:28 | 只看该作者
caosix 发表于 2022-4-16 09:17
不清楚 楼主 为何 要 如此 “古怪” 的 设计 串口数据链路 ?

恍惚 感觉是 要 : 1对N 的  ...

对的,我就是要 1对N的。一下让你看出来了
单步运行时 Y0和 A0 是一样的,不明白为何9600 时就不行了。

中文名        74HC138
驱动电流        ±5.2mA
逻辑电平        CMOS
电压        2.0~6.0V
传输延迟        12ns@5V
功耗考量        低功耗或电池供电应用

使用特权

评论回复
8
新下级学|  楼主 | 2022-4-16 12:37 | 只看该作者
caosix 发表于 2022-4-16 12:00
按理说 : 楼主 的 设计 思路 是 没问题 的 ,
毕竟 74HC138 就只是 简单的 组合逻辑 ,
延迟 12n ...

我宁可花10元买个 1对N 的串口扩展芯片。请问有吗?

使用特权

评论回复
9
QuakeGod| | 2022-4-16 13:43 | 只看该作者
我建议,你的TX不要接到A0,要接到E1#,这样就能1转8了。

使用特权

评论回复
10
QuakeGod| | 2022-4-16 13:44 | 只看该作者
你这个想法是没问题的,我也是这么用的,
用138把SPI变成1转8.可以用。
你肯定是其他地方的问题没注意。

使用特权

评论回复
11
新下级学|  楼主 | 2022-4-16 13:46 | 只看该作者
caosix 发表于 2022-4-16 13:33
对了 —— 手里 总应该有 CP2102 之类的 :TTL串口 USB 转换器 吧 , 将它的 RX
接到 “译码器”  的 Y0 ...

好主意!我想想具体怎么做。

使用特权

评论回复
12
新下级学|  楼主 | 2022-4-16 18:54 | 只看该作者
caosix 发表于 2022-4-16 13:33
对了 —— 手里 总应该有 CP2102 之类的 :TTL串口 USB 转换器 吧 , 将它的 RX
接到 “译码器”  的 Y0 ...

多谢你的提示。解决了。原来是单片机 OD 输出!!

使用特权

评论回复
13
新下级学|  楼主 | 2022-5-30 19:55 | 只看该作者
QuakeGod 发表于 2022-4-16 13:43
我建议,你的TX不要接到A0,要接到E1#,这样就能1转8了。

仅看真值表, TX 接 E1 和 A0 是一样的。
但是有什么区别呢?
我现在遇到新问题:https://bbs.21ic.com/icview-3228108-1-1.html
不知道改接  E1 能不能解决。

使用特权

评论回复
14
新下级学|  楼主 | 2022-5-30 19:56 | 只看该作者
QuakeGod 发表于 2022-4-16 13:44
你这个想法是没问题的,我也是这么用的,
用138把SPI变成1转8.可以用。
你肯定是其他地方的问题没注意。

你用 138 时有没有“串信号”?就是本来发给这路的信号,也跑到另一路去了?
我好像遇到了:
https://bbs.21ic.com/icview-3228108-1-1.html

使用特权

评论回复
15
QuakeGod| | 2022-5-30 22:55 | 只看该作者
新下级学 发表于 2022-5-30 19:55
仅看真值表, TX 接 E1 和 A0 是一样的。
但是有什么区别呢?
我现在遇到新问题:https://bbs.21ic.com/i ...

你的TX接到A0,你就只能用 Y0 Y2 Y4 Y6 这几路了,
如果TX接到E1, 你可以用任意Yx, x 取决于 A0A1A2 三个的选择。

另外,你的A0 变化时,会产生 竞争冒险,导致出现不该出现的状态。
A0A1A2 这个三个信号变化的时候,要尽量保证 Ex 不在使能状态。

使用特权

评论回复
16
新下级学|  楼主 | 2022-5-31 08:08 | 只看该作者
QuakeGod 发表于 2022-5-30 22:55
你的TX接到A0,你就只能用 Y0 Y2 Y4 Y6 这几路了,
如果TX接到E1, 你可以用任意Yx, x 取决于 A0A1A2 三 ...

关于竞争冒险,我每次改变 A0A1A2 后都要等 10us,应该能避免了吧?

使用特权

评论回复
17
QuakeGod| | 2022-5-31 14:41 | 只看该作者
新下级学 发表于 2022-5-31 08:08
关于竞争冒险,我每次改变 A0A1A2 后都要等 10us,应该能避免了吧?

你是等了10uS,但是你的信号已经发到后面的 Yx 了。

使用特权

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

本版积分规则

254

主题

668

帖子

3

粉丝