电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

驱动VTI-CMA3000之GSENSOR的重要提示

  1. 前言: gsensor的简单选型
    对于今天市场上充斥着各种型号, 铺天盖地出货量的 gsensor. 工程师可以做的选型很多. 比较而言,
    (1)  bosch 的出货量保证了其价格维持在一个相当的低位.
    a. 令人惊叹的复杂的 datasheet 与 sample driver/application. (作为精度不高的 gsensor 的应用, 这样复杂的功能的作用在哪里?``` 当然也可以说, 有比没有好`). 我们可以分析出, bosch的软件开发团队一定比较 powerful.
    b. bma020 似乎会干扰 spi 总线? 当然这可能是我们的误用. 是否某些初始设定不正确, 导致 bma020 触发某些中断? 复杂的文档决定我们没有时间再去细研.
    c. bma020 的焊盘脆弱, 在smt阶段, 这不是个问题. 在调试阶段, 没有转接板的情况下, 调试是工作量较大的.
    (2) 美新号称工业级别的 gsensor 也引起了极大的兴趣.
    a. 毕竟同 bosch/vti 服务于消费类电子的几种主流型号比较. 美新的pin 脚(邮戳状)决定了加工便易, 以及将来设备运行的高可靠度.
    b. 但是 datasheet 只给出了 i2c, 没有 spi? 这令人奇怪, 是否我们检查的型号不够多?
    c. 3d在哪里? 没有3d好奇怪. 如果只有2d 的模块, 限定了设备的安装方向?
    (3) vti的 cma3000
    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) 之后的工作是简单愉快的, 就不表了. (~&~)
博主
allen_zhan@163.com
allen_zhan's BLOG
allen_zhan's BLOG