我试图对2Wire ADSL调制解调器/路由器进行反向工程,主要是为了练习。我打开它并找到一个串行端口(已经方便地安装了一个接头),但是我没有从中得到任何有用的数据,只是胡乱的。该设备确实可以正常工作(足以显示其Web UI),但只有此端口给我带来了麻烦。



为什么我很确定这是正确的引脚:


板上的其他任何引脚/焊盘都不会输出类似于数据的任何内容
如果我短接Tx和Rx,或者连接到终端和垃圾邮件空格键,它将失败开机(LED保持红色)
示波器上的一个NC引脚看上去与未连接时相同(轻微噪声而不是稳定的0V或3V)
已尝试:


多个波特率:1200、1800、2400、4800、9600、19200、38400、57600、115200、230400、460800、500000、921600、960000奇偶校验和停止位设置的组合
将其连接到USB FTDI适配器
将其连接到Raspberry Pi的串行引脚
在Tx上添加上拉和下拉电阻
硬件和软件中的Tx信号
保持串行接地未连接

无论如何,在我的范围内,它肯定看起来像数据,通电时在0V和+ 3.3V之间跳动约1/4秒,然后+ 3.3V并留在那儿。



但是我似乎找不到能够提供任何连贯输出的设置和连接的任何组合。我丢失了什么吗?

(出于记录,我确实拥有此调制解调器。)

评论

它是14针接头连接器的事实意味着它可能是常见的JTAG接口。路由器的型号是什么?

型号为2Wire 2701HG-H。

这是有关非常相似的路由器的文章:链接。看起来您标记为Rx和Tx的线是I2C线中的两条。 JTAG还使用了几个引脚,这可能使您可以了解事物的内部,但是我冒昧地认为它已经被锁定。
你是对的。我将这些引脚追溯到附近的串行EEPROM。不知道我如何错过那里的时钟信号。您可以将其发布为答案,以便我接受吗?

#1 楼

如果是数据,则应该有一个公共时钟,上升/下降沿信号全部在该时钟的各个刻度上。

我将示波器输出的下半部分水平缩放了500%,然后将gimp覆盖在网格上,并随着网格的宽度和偏移移动,直到我发现看起来像是时钟的东西(单击图像以查看其完整比例):

所以,是的,这可能是串行数据。而且,如果我正确理解了“ 10 us”显示,则您的白色网格虚线相距10 us,这意味着我的网格线相距1.6 us,这意味着比特率应该在1 / 0.0000016 = 625000波特左右与您的比特率有很大的不同,以防止它们起作用。如果可以,请尝试将比特率设置为更接近的比特率。在某些情况下,信号的上升沿和下降沿的斜率过于平坦-请参见绿色标记。并且有些尖峰看起来像是线路噪声(红色标记)。在我看来,这似乎是该数据线上的电容过多。这可以解释平坦的斜率-串行驱动器无法输出足够的电流来针对电容提高信号-并且可以解释红色标记-TX上的短脉冲甚至无法提高电压值应达到的值。

但是,我在这里的深度不够。也许在EE堆栈交换中友好的人员可以解决此问题。

评论


还有另一个可能的原因。有些设备不像MAX232那样使用DC / DC转换器进行RS232电压转换,而是直接从RX(主机设备的TX)获得功率,因此,如果接收信号中存在较大的间隙,电压降...被扭曲了。

– Spektre
16年6月8日在11:40

#2 楼

您的信号质量非常差:相对于比特率,上升和下降时间太慢。如果信号确实如您的示波器图所示,而不仅仅是测量问题,那么您无法从中获得一致的数据也就不足为奇了。相对于波特率,串行端口信号的上升和下降时间应该非常干净且定义明确。

首先,尝试获取尽可能干净的示波器跟踪。放大更多-在您使用的水平时基上,通过那些混乱的脉冲,很难很好地了解正在发生的事情。然后,确保您在探头上使用示波器的10x模式,并且所有负载功能(例如75Ω终端)均已关闭。确保探头的接地牢固,并且除示波器外,TX线上没有其他东西。然后,再次测量。您使用的是什么示波器?

假设这是一个标准的异步串行信号,则应该有一个从高到低的过渡标记每个字节(起始位)的开始。对于连续传输,这些应均匀间隔开。查看您的顶部图,看起来可能是这种情况,但是我很难将这样的网格与底部图对齐。尝试尽可能提高信号质量,然后放大捕获的稀疏(几乎为零)部分,看看是否可以确认这样的模式。如果这是ASCII,则应该能够找到一些空格字符,它们是0x20,并且应该由位序列0000001001表示(如果启用了奇偶校验,则应为000000100x1;如果有2个或1.5个停止位,则再附加一个或一半分别)。如果找不到均匀间隔的起始位转换,那么这可能不是标准的UART输出。

无论哪种方式,一旦解决了信号完整性问题,一切都应该更加清晰。

编辑:还要确保您的示波器探头得到了正确的补偿!