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.

[参考译文] CCS/MSP430FR2355:在单步执行时程序工作、但在运行时不工作

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

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/932624/ccs-msp430fr2355-program-working-when-stepping-trhough-but-not-when-running

器件型号:MSP430FR2355

工具/软件:Code Composer Studio

您好!

我目前正在尝试使用具有 IIS3DWB 的 msp430FR2355获取加速度值。 我的代码在调试模式下单步执行时工作、但在我运行时、接收到的数据是错误的。

这是调试问题吗? 如果是,如何解决? 使用串行通信模块时、这似乎是一个反复出现的问题。 我看到有几篇文章出现了相同的问题、但没有一篇文章真正解决了我的问题。  

非常感谢您的帮助、

此致

Gauthier  

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

    您好 Gauthier、

    如果您无法实时处理接收到的数据、数据是否可能会溢出? 接收到的缓冲区是否在被完全处理前被下一个字节覆盖? 是否要减慢通信速度并查看是否解决了问题?

    Srinivas

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

    您好 Srinivas、

    我已经使用传感器的功能来确保数据不会被覆盖、该功能在读取完整字节之前不会更新加速计缓冲器值。 我还将通信频率设置得非常低(6、5kHz、使用此传感器时应能够达到10MHz)、以避免计时问题。 顺便说一下、我使用 SPI 4线在单个主设备和单个从设备之间进行通信。

    我能够获得传感器的芯片选择线的快照、必须将其下拉以开始产生影响、然后将其上拉以停止发出警告。 该问题是由该线路在各种频率下振荡引起的。 我将端口3.0配置为输出 GPIO 以完成此任务、没有拉电阻器来获得0V 或3V 上的芯片选择。 我不明白为什么这条线在接近时钟频率的延迟处振荡、而不是简单地针对通信进行下拉和上拉。  

    我的传感器读数函数如下:

    uint8_t read_register (uint8_t 地址){
    uint8_t 结果;

    P3OUT &=~BIT0;//下拉 CS

    UCB1TXBUF =地址| 0x80;
    UCB1TXBUF = 0x00;

    P3OUT |= BIT0;//将 CS 拉回

    结果= UCB1RXBUF;
    返回结果;

    我将进入 UCB1中断例程、其中 Rx 和 Tx 标志都被复位。

    感谢您的帮助、

    Gauthier

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

    您好、再说一次、

    我通过轮询串行模块的状态字寄存器来解决了这个问题。 在第一个字节的发送完成之前、我确实发送了第二个字节。  

    uint8_t read_register (uint8_t 地址){
    uint8_t 结果;

    P3OUT &=~BIT0;//下拉 CS

    UCB1TXBUF =地址| 0x80;

    while (UCB1STATW 和 BIT0){_DELAY_CYCLES (1);}
    UCB1TXBUF = 0x00;

    while (UCB1STATW 和 BIT0){_DELAY_CYCLES (1);}

    P3OUT |= BIT0;//将 CS 拉回

    结果= UCB1RXBUF;
    返回结果;

    无论如何都感谢你们的帮助!

    此致

    Gauthier