英飞凌
直播中

刘燕

7年用户 1330经验值
私信 关注

能否通过arduino访问TLE9879的速度/电流测量值?

您好,
,我通过 Arduino IDE 将无刷直流电机屏蔽 TLE9879 与 Arduino 结合使用,以 HALL 模式简单地驱动无刷直流电机。
能否通过 arduino 访问 TLE9879 的速度/电流测量值?
我应该通过 J-link 使用 Keil 来修改 TLE9879 吗? 或者类似的东西?

回帖(1)

马占云

2024-5-23 17:09:40
是的,您可以通过Arduino访问TLE9879的速度/电流测量值。以下是实现此目的的步骤:

1. 首先,您需要确保TLE9879与Arduino正确连接。根据TLE9879的数据手册,将TLE9879的引脚与Arduino的相应引脚连接。

2. 接下来,您需要编写一个Arduino程序来读取TLE9879的速度和电流测量值。这通常涉及到读取TLE9879的寄存器值。您可以在TLE9879的数据手册中找到有关寄存器的详细信息。

3. 为了读取寄存器值,您需要使用Arduino的I2C库。TLE9879使用I2C通信协议与Arduino通信。首先,您需要在Arduino程序中包含Wire库:

```cpp
#include
```

4. 初始化Wire库并设置TLE9879的I2C地址。根据TLE9879的数据手册,设置I2C地址:

```cpp
#define TLE9879_ADDRESS 0x00 // 将此值更改为TLE9879的实际I2C地址
```

5. 初始化I2C通信:

```cpp
void setup() {
  Wire.begin();
}
```

6. 编写一个函数来读取TLE9879的寄存器值。例如,要读取速度寄存器,您可以编写如下函数:

```cpp
uint16_t readSpeedRegister() {
  Wire.beginTransmission(TLE9879_ADDRESS);
  Wire.write(SPEED_REGISTER); // 将SPEED_REGISTER替换为TLE9879速度寄存器的实际地址
  Wire.endTransmission();

  Wire.requestFrom(TLE9879_ADDRESS, 2);
  uint16_t speed = Wire.read() << 8 | Wire.read();
  return speed;
}
```

7. 在主循环中调用此函数以读取速度和电流测量值:

```cpp
void loop() {
  uint16_t speed = readSpeedRegister();
  uint16_t current = readCurrentRegister(); // 您需要为电流测量编写类似的函数

  // 根据需要处理速度和电流值
}
```

8. 将编写好的Arduino程序上传到Arduino板上。

通过以上步骤,您应该能够通过Arduino访问TLE9879的速度/电流测量值。您不需要使用J-link或Keil来修改TLE9879,因为您可以通过I2C通信协议直接从Arduino读取寄存器值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分