MSP430ADC转化失败的原因

来源:互联网 发布:办公软件英文怎么说 编辑:程序博客网 时间:2024/06/06 03:12

最近的我的一个项目中用到了MSP430F149的ADC转化,由于我需要两路模数转化,索性就使用了P6.0和P6.1口,按照User's Guide查寄存器,也参考了好多TI的官方例程,不管是单通道单次转化,还是多通道转化,结果一直都不正确,我反反复复修改了N遍程序,排除了任何可能出错的地方,可转化结果依然不对,尽管ADC的转化的特征曲线不是直线,但转化结果误差还是很大。我怀疑是430内部ADC的自身输入阻抗过小,在德州仪器的技术支持论坛上,TI总部的工程师也谈到过内部ADC的自身阻抗,在我更换了输入信号之后还是不成功。

由于我身边的朋友没有人会使用430,会的人也仅仅是Copy别人的程序,没有亲自写过ADC的程序。我不得不吐槽一句,我所在的整个机械与电子工程学院都没有几个人(还是研究生)能够熟练掌握430的人,他们不是采用51就是Arduino,设计到嵌入式操作系统,就采用树莓派(高校里面的自然科学基金项目竟然是采用这种方案结题)。市面上便携式仪器中很多都会用到超低功耗的430单片机,然而他们却还是停留在51单片机上,一些硕士毕业论文依然如此。所以我只能自己解决,因为实在没办法使用430内部的ADC,所以我使用了ADC0808这一款8位的模数转化芯片,根据时序图很容易写出了程序。但是这得耗费13个IO,我还是不甘心。

在我无意当中查看430的最小系统板的原理图时,偶然看到了原来板子上的P6.0和P6.1是已将连接到一个10K的分压电阻的,怪不得我每次输入一个信号,转化结果都不对。这下我终于找到看问题的原因所在,解决了困扰我好多天的疑惑。

这件事给我的教训是,在使用开发板做开发时,一定要仔细查看商家给的原理图,弄懂每个IO,每个插针的内部连接电路,这样才不容易出错。