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.

[参考译文] RTOS/TM4C1294NCPDT:在开关加电后、一些传感器读数失败、在复位引脚关闭后、一切正常

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/617303/rtos-tm4c1294ncpdt-after-power-on-with-switch-some-sensor-readings-fail-after-reset-pin-down-everything-works-fine

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

大家好

我正在试验一个项目板、该项目板使用 TI-RTOS、并通过电缆连接4个传感器(每个传感器都有加速计和陀螺仪)。

我正在初始化所有内容,但当我打开电路板时,有时我无法从一个或两个陀螺仪传感器获得数据,加速计工作正常,读数没有任何问题。 当我使用 jtagic 对电路板进行编程并尝试对其进行调试时、一切都正常、而且当我使用复位引脚将电路板复位为接地时、一切都正常、没有不良的传感器读数。

我还尝试延迟主菜单中的初始化过程、

尝试了一个 for cirle 来重新初始化所有内容2次、

执行 HWREG (NVIC_APINT)= NVIC_APINT_VECTKEY | NVIC_APINT_SYSRESETREQ;这会使我复位循环

我不知道是什么会导致这种偏斜传感器问题。

IM 使用:

RTOS 版本2.16.0.08

TivaWare 版本2.1.71b

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用的传感器是 KXG03
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Robert、
    您使用的是来自 KXG03传感器的 I2C 或 SPI 接口吗? 我建议您使用示波器或 LA 来观察 I2C 或 SPI 接口、并了解在上电期间 MCU 是否未正确发送命令或传感器未正确回复数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好。

    使用 (TI-RTOS)的 Tiva C tm4c1294ncpdt 和 四个 KXG03传感器的项目 使用 SPI 通信。 有时我可以读取全部四个传感器、有时我无法从四个陀螺仪读取其中一个陀螺仪数据、也无法读取加速度传感器。
    我使用以下代码来读取全部四 个传感器代码,代码仅用作指南:
    配置4 kxg03传感器
    如果不能 aWailable (欺骗 WAND_AM_I 寄存器)
    而不是读取传感器
    //这是对每4个传感器逐个进行的
    if (sensore1 awailable){
    isread=0
    (I 到80){
    读取 status1和 INT1_src1
    if (gyro_run && int_drdy_ACC && int_drdy_gyro){
    从 kxg03读取数据(进入缓冲区)
    Real_data =将 gyro y (msb lsb)和 gyro z (masb lsb)(buffer[0]+buffer[1]+buffer[2]+buffer[3])相加//这样,如果数据为零,我们就可以进行应答
    CHECK_DATA=(CHECK_DATA*9.997)+(REALL_DATA*0.003)滤波以实现更好的零校验
    isread = 1
    转至续;
    续:
    if (!isread){
    sensore1_STATUS_SET = 1;
    CHECK_DATA = 0;
    否则{
    sensore1_STATUS_SET = 0;
    我 会连续使用这四次、每个传感器都设置为自己的缓冲位置。
    之后、我会看到传感器数据是否良好。  
    //在四个传感器读数之后,我们会重置 Tiva C
    //如果读数有问题或传感器未连接
    if (check_data = 0){
    memset ((real-datac 和 check_data)、0、4)
    使用软件复位重新启动 Tiva C  
    当传感器出现陀螺仪零点问题时、我无法使用代码来检查数据是否为零、并且无法重新启动 MCU
    谢谢帮助,很抱歉语法不好,我会等待回复!!!
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Robert、
    您是否有机会监控示波器或逻辑分析仪上的 SPI 接口?
    这里有一些问题/建议:
    -由于您说加速计始终工作、但陀螺仪大部分时间都工作、您能否将传感器的读数倒转? 首先读取陀螺仪、然后读取加速计? 有什么不同吗?
    您有4个传感器。 哪种传感器提供了错误的陀螺仪值? 它是否始终来自同一个传感器? 如果您更改4个传感器的读数顺序、将会使同一个传感器提供错误的数据、或者它现在是另一个传感器。 这将隔离它是否是特定的传感器问题。
    -您如何控制传输到4个传感器的芯片选择信号? 您是否使用 GPIO 或硬件 SPI CS 手动控制 CS? 是否有两个芯片选择同时有效的任何时间?
    -如果您更改 SPI 时钟频率,是否会有所不同?

    同样、如果您有示波器或 LA、调试问题会更容易。