74138居然没法传递串口信号!(解决了)
本帖最后由 新下级学 于 2022-4-16 18:55 编辑我用 STM32F103C6的串口经过 74HC138发数据给别的设备,设备再发回给单片机(不过74138)。
下面是74138 的真值表。注意红色方框。 单片机的 TX 接A0, Y0 接设备,应该就能传送。
下面是实际接线图,单片机和设备也是3.3V的:
已经验证过两点:
1、单片机直接连设备,正常;
2、手工控制单片机引脚电平高低,Y0 同步变化,说明 74138 是使能了的。
但是,实际工作时设备却没有反应。
因我无示波器,所以不能确定是设备收到没。但设备发给单片机的线路就是一根电线,没经过74138,应该不会出错。
所以,还是设备没收到的可能性大。
9600bps,也不算快。
哪位大侠指点一下,谢谢!
已经解决:原来是单片机 OD 输出!!
用音频信号试一下能不能通过74138最容易实现,比如9600赫兹的方波。 也是是双方波特率不一致呢 呵呵,不能直接接过去吗,为什么非要通过138芯片呢 这个用法好奇怪。居然不是选好通道通过Y0-Y7去分。还只有一路,那要用138干嘛。
我用4051分过232的串口信号,效果良好。 lyjian 发表于 2022-4-15 21:51
也是是双方波特率不一致呢
一楼说了:跳过74138直接通是没问题的。肯定不是BPS问题。 caosix 发表于 2022-4-16 09:17
不清楚 楼主 为何 要 如此 “古怪” 的 设计 串口数据链路 ?
,
恍惚 感觉是 要 : 1对N 的...
对的,我就是要 1对N的。一下让你看出来了{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}
单步运行时 Y0和 A0 是一样的,不明白为何9600 时就不行了。
中文名 74HC138
驱动电流 ±5.2mA
逻辑电平 CMOS
电压 2.0~6.0V
传输延迟 12ns@5V
功耗考量 低功耗或电池供电应用
caosix 发表于 2022-4-16 12:00
按理说 : 楼主 的 设计 思路 是 没问题 的 ,
毕竟 74HC138 就只是 简单的 组合逻辑 ,
延迟 12n ...
我宁可花10元买个 1对N 的串口扩展芯片。请问有吗?
我建议,你的TX不要接到A0,要接到E1#,这样就能1转8了。
你这个想法是没问题的,我也是这么用的,
用138把SPI变成1转8.可以用。
你肯定是其他地方的问题没注意。
caosix 发表于 2022-4-16 13:33
对了 —— 手里 总应该有 CP2102 之类的 :TTL串口 USB 转换器 吧 , 将它的 RX
接到 “译码器”的 Y0 ...
好主意!我想想具体怎么做。 caosix 发表于 2022-4-16 13:33
对了 —— 手里 总应该有 CP2102 之类的 :TTL串口 USB 转换器 吧 , 将它的 RX
接到 “译码器”的 Y0 ...
多谢你的提示。解决了。原来是单片机 OD 输出!! QuakeGod 发表于 2022-4-16 13:43
我建议,你的TX不要接到A0,要接到E1#,这样就能1转8了。
仅看真值表, TX 接 E1 和 A0 是一样的。
但是有什么区别呢?
我现在遇到新问题:https://bbs.21ic.com/icview-3228108-1-1.html
不知道改接E1 能不能解决。 QuakeGod 发表于 2022-4-16 13:44
你这个想法是没问题的,我也是这么用的,
用138把SPI变成1转8.可以用。
你肯定是其他地方的问题没注意。
你用 138 时有没有“串信号”?就是本来发给这路的信号,也跑到另一路去了?
我好像遇到了:
https://bbs.21ic.com/icview-3228108-1-1.html 新下级学 发表于 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 不在使能状态。
QuakeGod 发表于 2022-5-30 22:55
你的TX接到A0,你就只能用 Y0 Y2 Y4 Y6 这几路了,
如果TX接到E1, 你可以用任意Yx, x 取决于 A0A1A2 三 ...
关于竞争冒险,我每次改变 A0A1A2 后都要等 10us,应该能避免了吧? 新下级学 发表于 2022-5-31 08:08
关于竞争冒险,我每次改变 A0A1A2 后都要等 10us,应该能避免了吧?
你是等了10uS,但是你的信号已经发到后面的 Yx 了。
页:
[1]