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

2010-4-11 10:59 2714 7 14 分类: 消费电子

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) 之后的工作是简单愉快的, 就不表了. (~&~)


文章评论7条评论)

登录后参与讨论

用户1228018 2010-4-21 16:13

其实很多从设备都不会去规定是哪类SPI mode的,他们只是规定时序“MISO在SCK的下降沿开始传数据,而MOSI在SCK上升沿开始传输数据”。这类似于规定了SPI的工作模式,那些带硬件SPI的MCU经常会去定义工作模式,然后通过寄存器去选择,切换工作模式。

用户1375904 2010-4-20 10:54

顶一下

allen_zhan_752827529 2010-4-14 08:30

谢谢 JKC2 老兄. 主动输出"敲击"中断的确是一个比较特别的地方. 一般我们见过的 module 都会输出 motion 中断. vti 我记得会给出"自由落体" interrupt. 那也提供信息于此, 方便将来某些行业的同行缩短查询资料的时间.

用户1331960 2010-4-14 00:11

之前用过美新的一个Gsensor和freescale的一款,对于一般的简单的运用,freescale的相对更好用一些,可以直接读出芯片的各种姿态,也可以通过读reg来获得若干个简单的动作(如“敲击”之类的),而美新的是通过I2C读取数据,然后自己写算法来做的,相对要麻烦一些。

allen_zhan_752827529 2010-4-13 09:28

ST 的产品线十分复杂, 我们阅读了几个sample datasheet, 我一个粗略的印象是同时支持 I2C 和 SPI. Freescale 我们没有找到供应商支持. 所以无法评价. 电子世界就是这样, 我们选型一方面被产品性能, 价格决定, 一方面则取决于分销商的服务和一贯的合作...

用户1196911 2010-4-13 08:03

博主写的很好! 不过还有ST和Freescale呢,都不错啊

用户1277994 2010-4-12 10:43

很实用的文章!
相关推荐阅读
allen_zhan 2023-02-27 19:08
对"三极管"译名由来的探讨
想讨论一个有意思的话题:今天中国大陆的电子业界, 为何将 BJT 称呼为 "三极管"? 或因其象形, 前辈自行进行随意的不严谨定义么? 带着疑问我们做了一下延伸查阅, 或得出这样的结论, 即中译名"三...
allen_zhan 2023-02-19 18:15
对知乎提问"为何三极管的一个PN结工作在反偏"的回复
将这个回复, 也发表在博文中, 作为自己的一个学习笔记叭.知乎问题: "三极管里面的PN结相当于二极管,为什么里面PN结加反向电压也能导通?"我的回复:首先, 二极管的"反向"概念, 容易给初学者某种...
allen_zhan 2023-02-18 10:17
从肖特基二极管到PN结与三极管
最近数个工作日的兴趣是回顾电子基础器件的发明/发展历史, 期待夯实技术基础的底蕴. 在学习与搜索资料的过程中, 顺便对知乎的一个同学的基础问题, 进行了回复. 不小心回复一下就成了千字文, 觉得挺有趣...
allen_zhan 2023-01-28 11:53
微功率 ISM 频率探讨相关文档组总结
不知不觉, 自开启关于微功率频率的话题起, 即从第一份文章写就到今天总结之日, 已经接近 10 个工作日左右. 早先的想法是对工程界未来的微功率设备相关项目, 从项目规划开始, 对选择系统, 频率, ...
allen_zhan 2023-01-27 22:50
关于 LoRa 应用场景的讨论
说明: 本文中斜体部分表示来自公告文件的部分内容剪贴或合并整理.1. "第52号文" 对 470MHz 的约束引自 如下:(四)民用计量仪表限在建筑楼宇、住宅小区及村庄等小范围内组网应用,任意时刻限...
allen_zhan 2023-01-25 13:24
ISM 频段中 2.4G 与 5.8GHz 设备的使用与限制
说明: 本文中斜体部分表示来自公告文件的部分内容剪贴或合并整理.1. ISM 频段定义中的 2.4G 与 5.8GHz正如同 文中确定的, 2.4G, 5.8GHz 属于中国大陆 ISM 频段的定义...
我要评论
7
7
关闭 站长推荐上一条 /2 下一条