首页 > 解决方案 > M600Pro 和 Arduino 之间没有干净的串行通信

问题描述

我有一个 DJI M600 Pro 连接到 Arduino Uno 上基于软件的串行端口,但我没有收到干净的信号。

DJ Assistant 中的波特率设置为 115200,Arduino 串行监视器也是如此。在 DJI 助手中启用 API 并禁用除 GPS 数据之外的所有输出并将其设置为 1HZ 以便于读取以进行测试。

我可以看到数据以 1HZ 飞入,但串行输出主要是问号和中间的一些字母。

串行数据是否加密?如果是这样,我该如何解密它?

这是代码:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(234000);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Native USB only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(234000);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

标签: arduinosdkuart

解决方案


你说波特率是 115200,但代码说它是 234000。Arduino 软件说它可以达到 115200。使用较旧的 ATmega8 处理器数据表中的 UART 详细信息,尝试获得 234000 波特率确实可以获得 250000 波特率 - 大约 6.8% 的误差。

也许尝试慢得多的东西 - 只是看看它是否可以工作。


推荐阅读