PDD买的,价格很nice
有一个小遗憾,接口是mini-usb,这种线找了半天,终于翻出来一根,插上去直接灯就亮了。
网上找了一些教程,才发现这个原来是美国saleae的山寨产品。。。但是群众们都一片叫好。
所以配套软件要去saleae官网下,https://www.saleae.com/pages/downloads,不过据说github也有开源的,但是我倒是没试过。
打开界面还是挺清爽的,看UI开发实力还是可以。
用来做实验的板子是一个树莓派Zero,价格很感人。
其实一开始是想用树莓派Pico,结果之前10块钱买的用了一个月就不亮了。。。又用了一个BLE Nano的板子,也是半天没搞定。。还好最后翻出来这个Zero。、
这次做实验的协议是I2C,说是有硬I2C和软I2C。最开始用软的,一直报错,就换成硬的。错误会不同,但是IO口一直报错,后面翻出来这个板子的说明,才发现硬件上来说很多口是固定的,不能随便乱用。这点真不像软件,基本上就是乱入。
从上面就可以看到I2C应该怎么接,我用的0,1口。代码如下:
from machine import Pin, I2C
import time
i2c = I2C(0) # default assignment: scl=Pin(9), sda=Pin(8)
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400_000)
while True:
i2c.scan() # scan for devices
time.sleep_ms(500)
#i2c.writeto(0x3a, '12') # write '12' to device with address 0x3a
代码非常简单,就是不停的找总线上的设备。本来想试试发送数据12,但是writeto一直失败,估计还是I2C协议有地方没配置对。这个下来有时间再看看吧。不过scan会有数据包,这个就够了。
I2C,就两跟线,所以就用了两个channel,0和2。这个是逻辑分析仪的接口,看你自己用哪根线。配置是这样的(示例图写成1和3了。。):
然后就很简单,Micropython开始跑,逻辑分析软件也一起跑,很快数据就抓出来了。
大概看了下,一个数据包是8位,总线是7位,基本上就是0x08到0x77全部发了一次数据。最后一个是读写位。
举个例子0x50,发送的就是| 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
如果有响应,就会将SDA,也就是上面那条线拉低,因为没有响应,所以显示的NAK。
最后索性再试了下我的祖传示波器DS0138。
抓的是SDA那条线,这个波形和上面的波形基本上是对应的。但是真的比较飘忽,而且我这个只有单通道,要看协议是真的不方便。就算双通道,甚至更多通道,要从波形读懂协议都是比较困难吧。。。
最后再说说逻辑分析仪和示波器,从功能上来说,逻辑分析仪真的强很多,但是我身边很多工程师为什么还是只用示波器呢?我想原因有2。
1 逻辑分析仪也就是最近几年才有了祖国版,价格白菜化。之前都是天价不是人人都能用,很多人不管是学校还是师傅,都没学这个所以后面也不怎么用。
2 大部分情况下,其实只要看波形出来,基本上就正确90%,至于波形对不对,很多工程师是不用关心的,所以一般示波器也都够了。
好了,这个课大概就到这里了,今天主要打通流程。协议细节后面如果要再看I2C或者SPI协议再说吧。