前言
一般情况下,你大概只需要同时测试几颗sensor就可以了,很少会采用阵列的方式(有人用a dozen的IMU一起工作来提高性能),因此遇到这个问题的时候,多半来源于测试。
传统的测试机台,讲究的是快,一般也会有多SITE,但是不会太多,比如常见的144 site,只要测试的时间足够短,那么一台机器一个月也可以有很大的吞吐量。
但是这种办法在某些情况下会遇到问题,特别是那么缓变信号。
基于I2C的系统扩展
如前所示,你如果想测试Dozen hundreds Sensors,那么大概率其I2C地址也是类似的,一般顶多会给你留1~2个地址片选,也就是说,你即使用TCA9548A这样的经典I2C扩展芯片,你一个板子上也没法测试很多,而且像TCA9548A,有3个片选,也就是最多8片并联。。。。如果不想办法,大概率也就128*2这样的测试数量了,如果还要更多?
最简单的一种,大约还是利用TCA9548A级联使用,由于TCA9548A有3个地址片选,因此TOP层的TCA9548A不能与下一层的TCA9548A的地址相同,以免冲突。
如果上层的PCA9548A换成LTC4314或者直接用MCU来处理,单一的节点还可以更多一些。
USB口可以有很多,不同的USB口可以看作是类似的并行工作。
这样就可以实现Dozen hundreds Sensors 同时测试了。
并行
对于慢速的sensor来讲,一般不会工作在连续测量模式,像温湿度这样的sensor,大部分写的驱动都是单次测量模式,你发一次命令,sensor测量一次,然后就休眠了,只留下接口低功耗的等着读数据。
有些sensor在ASIC设置的ODR较低时(内部的OSR较高),可能需要等100多ms。
这种情况,如果你只测试一两颗芯片,其实怎么读都不会觉得慢,但是如果你需要Dozen hundreds Sensors,就需要考虑另外的方式了。
先给所有的sensor发送测量命令,然后再一个个去读,这样中间的等待时间就只有一个单位了。
这样做的好处,其实还有另外一个,就是当你的环境不是那么稳定的时候,Sensor测量数据的时间也是基于在并行的,可以有一个比较好的评估。
[ 完】