这个错误大概困扰了我一个下午左右。实在是太诡异了,为什么一会跳两行正常的读数,一会又是全0了?后来我一根一根的换线,一点一点的排查,发现问题出在FDC2214的SD脚上!
在我这块板子,也是国内最常见的一块FDC2214开发板上,SD是接地了的。但是由于各种可能的原因,比如绘板的时候屏蔽没做好啊、管脚在悬空状态易受影响啊,这样种种的原因,只要轻轻碰一下FDC上的插座,马上输出就会置0;reset之后问题就会解决,但是只要再碰到一下,马上又置0。
我的FDC2214是红树伟业的一块开发板:
这个SD在FDC2214上是一个总关断脚,在FDC2214的手册上描述道:
捡其中重要的两句话翻译:SD管脚置高的时候,FDC进入关断模式。关断模式是FDC最低功耗的状态。如果想要退出关断模式,请把SD置低。进入关断模式会将所有寄存器设置恢复到他们初始的状态。
这也是为什么我reset一下 ,让程序从新配置FDC的寄存器就好用了。
解决办法就是:把SD直接接地!虽然板子的原理图画着SD端口是接地了,但是那根悬空的引脚有时候也会受到静电之类的影响,所以把SD再次用一根杜邦线接地,避免了手碰到啊、屏蔽不良啊之类对整个芯片的影响。或者你也可以想其他办法把悬空的引脚保护一下,例如带个小帽子什么的,这里就不再赘述。
以上!