工具/软件:Code Composer Studio
您好!
我目前正在尝试使用具有 IIS3DWB 的 msp430FR2355获取加速度值。 我的代码在调试模式下单步执行时工作、但在我运行时、接收到的数据是错误的。
这是调试问题吗? 如果是,如何解决? 使用串行通信模块时、这似乎是一个反复出现的问题。 我看到有几篇文章出现了相同的问题、但没有一篇文章真正解决了我的问题。
非常感谢您的帮助、
此致
Gauthier
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.
工具/软件:Code Composer Studio
您好!
我目前正在尝试使用具有 IIS3DWB 的 msp430FR2355获取加速度值。 我的代码在调试模式下单步执行时工作、但在我运行时、接收到的数据是错误的。
这是调试问题吗? 如果是,如何解决? 使用串行通信模块时、这似乎是一个反复出现的问题。 我看到有几篇文章出现了相同的问题、但没有一篇文章真正解决了我的问题。
非常感谢您的帮助、
此致
Gauthier
您好 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