知识杂货铺

不卖切糕

View on GitHub
17 January 2017 04:38

三明治PCB模块热拔插识别码

by 宋强

三明治系列的PCB模块最好当然是主控芯片能够识别到自身具有哪些能力,安装了什么东西什么的,这就需要一个好的识别,我考虑了一下,大概有三种方式来做:

  1. 每一层PCB上douy都有一颗小的MCU,来和最下面的主控层进行交互,板载IIC,引脚少逻辑功能可扩展性强。这一种方式先PASS了,首先比较浪费人民币,其次设计多了有强迫症,总想让空余的引脚做点啥,不然觉得浪费,而且最便宜的STM8也要一块多,并不便宜。
  2. 用集成的IIC模块,硬件区分meiy每一层的IIC地址,这样主控分辨每一层的时候只需要通过IIC地址来查询就可以了,但是逻辑功能扩展能力不强,而且关键是不一定能做出LED显示,当然LED并不是致命问题(美观问题也很重要!!我自己很矛盾!!),最关键是常用的AT24Cxx系列的芯片硬件寻址地址只有三位,意味着这系列的瓶颈在最多8张上,和我的伟大理想有点远,PASS。
  3. 用译码器的方式来实现,逻辑功能扩展能力也不强,但是有一个好处,能实现我想要的LED显示。而且理论上译码器可以无限扩展的,这个时候遇见新问题(设计这个有的时候就是在优化各种问题),如果采用38译码器的话,想要实现16张电路板就需要两个38译码器,我们都学过,像这种74系列的芯片,输出的时候很多是低电平的,这个也是,这样就得用非门来驱动后级的MOS了,还要再加一个04,变成了三个芯片,地方消耗太多了。这个时候我突然又想到了最原始的搭译码器的方法,是用与非门和非门共同实现译码器,这样就能同时利用到04的其他非门,而且输出也是高了。

原理图

这个0011是煎蛋层的代号,现在看来他们都可以被视作00011,000011,00000……11,0000000000000000000000000000……11这样,至于两个MOS是因为Y那个是返回信号的,这样的话假设这个层被MCU临幸了,所有层的Y都会变成零,但是只有这一层的LED会亮,然后当MCU读取完所有插入PCB的号码后,就可以让所有层流水灯了哈哈,肯定闪瞎眼。

PCB

注意到这张PCB设计时对于地层是全铜皮导通的,贴片地旁边一定注意放置过孔,而且remove dead copper来避免不导通区域的出现。

实物:

这个是实物图,所有的ID域的元器件都在每一张电路板的同一个位置,LED都在最边上,保证观察时候的清晰可见。

再来一张多层的图:

这个是给郭春生老师做的设备,刚好直接就可以应用,从下往上依次是MCU(Tuna), 电流检测,串口和定时器(Fried Eggs), 继电器,蜂鸣器还有SPI接口和另一部分定时器(Tomato),最上层是7存电容屏接口,OLED接口和2.2寸LCD接口(Toast)。

PS.这个排母真的很贵!!最便宜的两毛钱一个洞。

tags: PCB