This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

怎么从430中ADC10MEN0中计算加速度传感器输入的加速度大小

Other Parts Discussed in Thread: MSP430FR5739, MSP-EXP430FR5739

我刚刚接触MSP430,前段时间有幸拥有一TI的一块MSP430fr5739开发板,就在我用里面的加速度传感器计算角度时,发现不知道该怎么样才能通过ADC10MENO算出原始的X,Y,Z方向加速度的值,望各高手帮忙

  • 不懂什么意思,直接采样不行么?不是有demo么?

  • 没仔细看,计算角度?

    原始的?指静止时候的值?demo中有CalibrateADC(),不过demo中好像只处理一个方向x,

    有相关算法资料么?提供点参考

  • 我现在想要进行X,Y,Z三个方向的话,务必要用多通道序列采样,但是我发现在多通道采样中,men0里的值都不太正常,在板子平放时,就采了X,Y两个通道的,采到的是0xff和0X03这个应该是不正常的。是不是我代码有问题,ADC的设置中,我只将TI提供的代码中的采样的模式从 ADC10CONSEQ_0改成 ADC10CONSEQ_1,然后加了个ADC10MSC,其他的都没改

  • 这个是我找到的算倾角的治疗,不过有个问题是,我现在我用序列采样模式采样到的数据感觉都不对,请问你知不知道这会是哪里出的问题

    ADXL335倾斜测试.pdf
  • 这个多通道序列采样我也没用过,我顺带问一下,这个多通道序列采样是不是一直递减采样到通道1?如果只要采样三个,其它的通道怎么处理?能绕过去么?否则不是浪费了采样时间么?

    谢谢楼上的文档。

    楼主如果能把您的相关代码贴出来,可能别人更好的解答您的问题

  • 如果多通道的话,你如果是3个通道的话,比如A13 A12 A11 的话,他是从A13开始采样然后递减到A11的,就三个通道采样完以后就结束了,下面附上我的代码,和原来TI代码基本相同,只是模式改了一下,然后采样的中断哪里改了一下,可是不知道哪里出了问题了,就是不行,希望看到的大侠们能帮我看一下

    ADXL3553轴串口通信实验版本.zip
  •  

    看了一下工程文件。其实像这样改动不多的,可以在这里直接贴出相关代码,再附上整个代码附件,我是前一段时间刚好琢磨过相关东西,因此感兴趣才打开您的附件的。您想,虽然德州的专家们是负有回答问题的责任,不过作为我们也要考虑到人家的工作量或者其个人的性格好恶,直接贴出相关代码,人家浏览也迅速。我是普通网友,但是要不是感兴趣,也就不一定下载附件再打开工程这么费事啦。

     

    您是不是将使用其它系列型号cpu的或者其它类型的内部ADC模块的经验用到FR57XX这儿来了?我怎么看指导手册,好像不能任意停止呢?看附件图片。我现在也知道了,确实有其它类型的ADC模块是可以指定序列采样的起始终止通道的,不过不是FR573X的

     

     

    另外,这一句:

    ADC10MCTL0 = ADC10SREF_0 + ADC10INCH_12+ADC10INCH_13+ADC10INCH_14;

    这样行么?会不会使ADC10MCTL0=00000000+00001100+00001101+00001110 = 00100111 = (VR+ = VEREF+ buffered and VR-= AVSS)+A7

    是不是变成了从A7通道开始序列采样?

     

     

     

  • 首先,谢谢FUCHONG WANG ,我第一次在这里发帖子,所以没经验,听了你的提醒,我以后会在这些方面注意的。

    这个ADC10MCTL0 = ADC10SREF_0 + ADC10INCH_12+ADC10INCH_13+ADC10INCH_14; 这一句的话我也是刚刚发现了问题,其实只需要写上序号最高的那个通道就可以了,这里的话是ADC10MCTL0 = ADC10SREF_0+ADC10INCH_14; 好像这样子就可以了。我这样子改了以后发现数据正常了一些。但是好像还是有点欠缺,可能还要调试一下代码。不过你说的那个A7我有点不太懂,我当初调试的时候发现MEN0里的值好像是1023,但是我那个代码好像是设置改为为低电平的,按理说不会输出1023呀,你知道吗,麻烦您能帮我讲解一下?谢谢

  • 您好,不用谢,我说话比较直接,有什么说什么,我只是建议,我又不是社区的人员。

    请问您用过MSP单片机多久了呀?

    唉,我已经把你那个文档删除了,现在又下了一遍。

    您说你那个代码好像是设置改为为低电平的是指什么?什么设置为低电平的?

    我猜是不是还是我第一个回帖问的问题,可能你观看的时候那个值可能是其它通道的?您对我上帖的图片中的指导手册内容怎么理解的呢?

    搞那么多通道麻烦呀

    我不知道那些通道的相关部分例如管脚功能没有打开会得到什么结果,可能管脚配置功能没有配置为ADC功能,也可以取得ADC值的,如果管脚电平正好为高电平,则转换可能就为1023了(ADC参考电压就是配置为AVCC电源的)

    是不是可以像官网的FR57XX的code example中的例子,里面好像有使用DMA的,如果您确实要用序列方式,可能DMA更适合?

     

    另外,你中断中的变量j是否在中断程序内部设置为静态变量为好?

    晕,我基本既然回答了,有点要有头有尾的,唉,耽搁我睡觉了,不早了。

  • 不好意思哈,我是个新手,问的问题也比较没有水平,还是谢谢你了

  • 从工程代码中看您应该不是用msp430很久的,不过没敢贸然揣度(其实您在楼顶已经说了,我确实没注意看到,不好意思呀)。

    还是请别的人确认一下序列采样是否采样到A0才停止。我个人看手册认为是如此的,我也需要别人确认一下,并希望能够提供一点关于这种方式的应用场合和一般的处理方法。

    您那个开发版应该就是MSP-EXP430FR5739吧?,就是ADC选择补码输出,也不会得到1023呀。

    既然是新手,很可能很正常的将寄存器的操作代码方式理解的不一样

    ADC10MCTL0=00000000+00001100+00001101+00001110 = 00100111

    001001111,则对应参考电压VR+ = VEREF+ buffered and VR-= AVSS,采样通道为A7

    这个仔细看一下头文件就知道了。

    您提供的那篇文献我还没看,刚刚打开,扫了一眼,应该很有参考价值,谢谢。

    只有多看手册了,英文的,如果像我一样英语不好够烦的,文档有时候也不那么人性化,例如FR37XX的指导手册的ADC10_B的各个寄存器的部分,没有提供快速的目录书签链接,翻页够烦的

    我自己也是入门的,仅供参考。回答也因为感谢您提供了资料文档。

    不过我以后不会回答您的问题了,如果有EEWORLD的网友可能知道,原因一样,我搞不清楚像您一样的到底是谁,是否说的真话,不像我堂堂正正真名实姓可据可考。我这样说,您可能不理解,如果是一个普通的网友的会莫名其妙,那么请勿怪。原因一下子说不清。