热度 34
2010-4-26 11:14
5726 次阅读|
15 个评论
1. 前言 : G Sensor 的选型 对于今天市场上充斥着各种型号 , 铺天盖地出货量的 G Sensor. 工程师可以做的选型很多 . 比较而言 , (1) Bosch 的出货量保证了其价格维持在一个相当的低位 . a. 令人惊叹的复杂的 datasheet 与 sample driver/application. ( 作为精度不高的 G Sensor 的应用 , 这样复杂的功能的作用在哪里 ?``` 当然也可以说 , 有比没有好 `). 我们可以分析出 , Bosch 的软件开发团队一定比较 powerful. b. bma020 似乎会干扰 spi 总线 ? 当然这可能是我们的误用 . 是否某些初始设定不正确 , 导致 bma020 触发某些中断 ? 复杂的文档决定我们没有时间再去细研 . c. bma020 的焊盘脆弱 , 在 SMT 阶段 , 这不是个问题 . 在调试阶段 , 没有转接板的情况下 , 调试是工作量较大的 . (2) 美新号称工业级别的 G Sensor 也引起了极大的兴趣 . a. 毕竟同 Bosch/VTI 服务于消费类电子的几种主流型号比较 . 美新的 pin 脚 ( 邮戳状 ) 决定了加工便易 , 以及将来设备运行的高可靠度 . b. 但是 Datasheet 只给出了 I2C, 没有 SPI? 这令人奇怪 , 是否我们检查的型号不够多 ? c. 3D 在哪里 ? 没有 3D 好奇怪 . 如果只有 2D 的模块 , 限定了设备的安装方向 ? (3) VTI 的 CMA 3000 a. 超小的 size, 目视比 0805 的电阻 / 电容封装大不了多少 ? -- 手持设备的开发者超喜欢吧 ? b. 芬兰的小型公司制作 ? 导致价位偏高 ? c. 球状焊盘 , 很好很强大 , 接触面积大 , 调试也不容易弄掉 . d. SPI/I2C 兼容 . SPI 着重强调了多个 slave 的使用 . 对 SPI bus 上挂上 CMA3000, 提供了充分的信心 . e. 简洁的 Datasheet, 少到 10 个左右寄存器 , 简单到仅仅 2 个 read/write function 的 sample driver code. acc-x/y/z 输出很理想 , 1bytes 搞定 . 很容易计算补码输出 , 这些均导致代码量小 , 兼容简单 . f. 最终我们兼容了 Bosch bma020 与 VTI CMA3000. 限于 TTM 时间 , 以上仅仅是数周内的一己之见 . 2.VTI CMA3000 的 datasheet 的重要疏漏 (1) 调试的过程本来是轻松的简单旅途 . 被 datasheet 的疏漏弄成了 1 天痛苦煎熬 . 记录在此 , 方便将来的同行的工作 . (2) 反复检查简单到最简的应用电路 , 确定没有连接问题 . 再次换用新的 sample 也不能顺利读出数据 . (3) 再次检查 datasheet, 一个不起眼的地方引起我们的兴趣 , CMA3000 开机后 , 会报告 soft_reset / hard_reset 状态 . 而且状态位固定为 2 个 bit, 在 tx bus 上主动输出 , 并放置在 cmd resp data 之前 . (4) 我们确认 , 重新上电后 , bit6/bit7 的位置应该固定输出 1. (5) 通过阅读 tx bus, 我们的确观察到两个 1, 但是遗憾不在 bit6/bit7. 但是无论如何 , 这说明 CMA3000 在工作 ... (6) 调整 SPI 的时序 , 调整 SPI 的 speed, 主动加入 delay 在 SPI read function. 我们观察到了这两个 1 bit 的位置不断的变化 ? 那么真的是 SPI bus 错误吗 ? (7) 枯燥的思考和调试过程不表 . (8) 结论是 , CMA3000 使用 SPI mode0. 使用 SPI mode3, 它会不爽 . 发现如此简单的事实后 , 在下再次努力阅读了 datasheet. 在下在凌晨 1 点时产生一种冲动 , 就是希望给 datasheet 的 writer 的大头上 , 一个狠狠的糖炒栗子 . 为啥不说呢 ? 只认 mode0, 不认 mode3, 你倒是要说啊 ?!... (9) 之后的工作是简单愉快的 , 就不表了 . (~~)