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.

[参考译文] MSP430G2553:MSP430G2553 + ADXL345 over SPI

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430G2553

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/665534/msp430g2553-msp430g2553-adxl345-over-spi

部件号:MSP430G2553

你(们)好

我试图在此 主题中发布我的问题,但是,它被锁定了!

我正在通过SPI将MSP430G2553连接到ADXL345加速计,并使用此代码设置ADXL345:

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SPI_write(void){

P3OUT &=~CS; // bit 3.7 是CS

while (!(IFG2&UCA0TXIFG));//等待TXBUF ready
UCA0TXBUF = 0x2D;//我们要在

(!(IFWrite&UCA0TXIFG)时写入电源寄存器;//等待TXBUF ready UCA0TXBUF = 0x2D;//
待机状态= 0x00-----------------待机状态下--

while (!(IFG2&UCA0TXIFG));//等待TXBUF READY
UCA0TXIFF = 0x31;//我们要在ADXL345处于待机模式

时写入数据格式寄存器,而(!(IFG2&UCA0TXIFG));//等待TXBUF READY UCA0TCA0TF-写入UCA0T0F---
-----------------------------------------------------------------------------------------------------------

while (!(IFG2&UCA0TXIFG));//等待TXBUF就绪
UCA0TXBUF = 0x2C;//我们要在

(!(IFG2&UCA0TXIFG))时写入BW_RATE寄存器;//等待TXBUF就绪
UCA0TXUF = 0x09; //将0x09写入BW_RATE寄存器以将ACC设置为25Hz数据速率(数据表中的表7 p#14)
//将ACC设置为此加速采样速率应使其消耗90microAmp。
//参见数据表第5页上关于唤醒时间的注释7//------------------

while (!(IFG2&UCA0TXIFG));//等待TXBUF READY
UCA0TXBUF = 0x2d;//我们要在

(!(IFG2&UCA0TXIFG))中写入电源寄存器;//等待TXBUF READY
UCA0TXBUF = 0x08;//要在电源寄存器中写入,---—————

delay_ms(10);
while (!(UCB0STAT&UCBUSY)=0);
IFG2 &=~UCA0RXIFG;

P3OUT |= CS;
}//////////////////////////////////

我正在恢复数据。 但它与ADXL345连接到Arduino时不同。

例如, 当加速度计仍在扫描床上时,我得到的是0.79 G,而不是Z轴的1 G

任何人都可以帮我解决这个问题

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这可能与MCU /传感器之外的许多原因有关。 需要考虑的是:扫描床是完全平坦的,还是传感器的Z轴正交于地球中心?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    正如Mike所指出的,这可能是由于加速计连接到每个MCU时的方向不同。 另一个要检查的问题是每个MCU上的SPI相位和极性是否相同。 有关详细信息,请参阅MSP430G2553产品页上的用户指南和示例代码。

    此致,
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    传感器的方向和位置与两个MCU相同,即我只从一个MCU断开电线,然后将其连接到另一个MCU,而不移动传感器。

    需要补充的一点是:我从Arduino获得的原始数据与MSP430的数据不同!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    同样,如果原始数据不同,我会检查SPI相位和极性。 此外,您是否有逻辑分析仪或示波器,可以用来探测线路,以查看数据是否真的不同,或者MCU是否只是以不同的方式解释数据?

    此致,
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    我正在尝试寻找另一个引脚来代替MSP430G2553上的1.4 作为USCI A上SPI的时钟。但是,我看到这是唯一一个可用于此目的的引脚。 是否有其他方法可以使用另一个PIN? 如何实现?

    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    否,这是唯一可用于此设备上的USCI A模块的引脚。 此设备不包含端口映射控制器或更改引脚功能的任何其他方式。

    此致,
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复

    还有一件事。 我希望尽可能降低功耗。  因此,我将设置如下所示的针脚:

    P1IE &=~(RXD | TXD | SCL);
    P1SEL ||(RXD | TXD | SCL);// 1.1 :SDO,1.2 :SDA,1.4 :SCL //我们需要此信息和P1SEL2
    P1SEL2 ||(RXD | TXD | SCL);
    P1DIR ||(TREXD | SCL);
    ~/输出=(TXD和SCL) //禁用上拉/下拉电阻
    器P1OUT ||(TXD | SCL);//P1OUT &=~TXD;
    
    P3REN &=~(CS);//禁用上拉/下拉电阻
    器P3OUT ==~CS;
    P3DIR = CS;// 3.7 :CS
    P3OUT || CS;
    

    然后将它们设置为如下所示:

    P1SEL &=(~RXD);
    P1SEL &=(~TXD);
    		P1SEL &=(~SCL);
    		P3SEL &=(~CS);
    		P1DIR |= RXD;
    		P1OUT |= RXD;
    		P1DIR |= TXD;
    		P1OUT |= TXD;
    		P1DIR |= SCL;
    		P1OUT |= SCL;
    		P3DIR |= CS;
    		P3OUT |= CS; 

    是这样吗?  




  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    是的,这应该会降低您的功耗。

    此致,
    Nathan