发帖
10 0 0

AiPi-UNO-ET485开发板通过485发送请求,串口助手收不到

sddawei
注册会员

1

主题

7

回帖

128

积分

注册会员

积分
128
小安派·其他系列 39820 10 2025-9-18 15:26:06
小安UNO-ET485通过485发送请求,串口助手收不到,小安的485怎么用?那位高手给指点一下,举个栗子最好,谢谢
──── 0人觉得很赞 ────

使用道具 举报

板子只是串口支持485模式,你要有485的TTL
2025-9-18 21:03:37
这个代码试了试不行
#include "bflb_uart.h"
#include "board.h"

// 定义UART设备
struct bflb_device_s *uartx;

// 初始化UART和RS485模式
void uart485_init() {
    // 配置UART参数
    struct bflb_uart_config_s cfg = {
        .baudrate = 9600,         // 波特率,与串口助手保持一致
        .data_bits = UART_DATA_BITS_8,
        .stop_bits = UART_STOP_BITS_1,
        .parity = UART_PARITY_NONE,
        .flow_ctrl = UART_FLOWCTRL_NONE,  // 使用正确的常量名称
        .tx_fifo_threshold = 0,
        .rx_fifo_threshold = 1,
    };

    // 获取UART设备(使用串口1)
    uartx = bflb_device_get_by_name("uart1");
   
    // 初始化UART
    bflb_uart_init(uartx, &cfg);
   
    // 配置RS485模式
    bflb_uart_feature_control(uartx, UART_CMD_SET_TX_RS485_EN, 1);
    bflb_uart_feature_control(uartx, UART_CMD_SET_TX_RS485_POLARITY, 1); // 极性根据硬件调整
}

// 发送字节函数
void MDSSerialSendBytes(uint8_t *bytes, uint16_t num) {
    for (uint16_t i = 0; i < num; i++) {
        bflb_uart_putchar(uartx, bytes[i]);
    }
}

// 发送测试指令
void send_test_command() {
    // 测试指令内容,可自定义
    uint8_t test_cmd[] = "M61 RS485 Test: Hello, PC!\r\n";
    MDSSerialSendBytes(test_cmd, sizeof(test_cmd) - 1); // 减去字符串结束符
}

// Arduino初始化函数,替代main函数中的初始化部分
void setup() {
    // 板级初始化
    board_init();
   
    // 初始化RS485
    uart485_init();
}

// Arduino循环函数,替代main函数中的while(1)循环
void loop() {
    // 发送测试指令
    send_test_command();
   
    // 延时1秒,循环发送
    bflb_mtimer_delay_ms(1000);
}
2025-9-18 21:05:00
这个也不行
#define DE_RE_PIN 26
byte sendCommand[] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xC4, 0x0E};
int cmdLen = sizeof(sendCommand);

void setup() {
  Serial.begin(9600);
  pinMode(DE_RE_PIN, OUTPUT);
  delay(100);  // 等待串口初始化完成
}

void loop() {
  // 仅发送485命令,无任何调试打印
  digitalWrite(DE_RE_PIN, HIGH);
  delay(5);
  for (int i=0; i<cmdLen; i++) Serial.write(sendCommand[i]);
  Serial.flush();
  delay(5);
  digitalWrite(DE_RE_PIN, LOW);
  
  delay(3000);  // 3秒发送一次
}
2025-9-18 21:13:29
Ai-Thinker小泽 发表于 2025-9-18 16:43
板子只是串口支持485模式,你要有485的TTL

刚开始学习,能举个栗子吗?
2025-9-19 10:00:16
你的串口设备需要是支持485的吧,TTL RS232  还有 RS485 不一样,淘宝搜一下 ttl转rs485 模块,看看。
2025-9-19 10:30:12
小安UNO-ET485 自带485和网口,不知道咋用
2025-9-19 16:34:18
查了一下感觉也不对
RX_485       --> 连接到芯片的 UART 接收引脚(`GPIO16`)
TX_485       --> 连接到芯片的 UART 发送引脚(`GPIO17`)
DE_485       --> 连接到芯片的 GPIO 引脚(`GPIO2`),用于控制发送/接收方向这个不对
VDD3V3       --> 电源引脚(3.3V)
你用SDK开发,uart里有个485的示例。不要用arduino开发。
2025-9-22 12:32:11
Ai-Thinker小泽 发表于 2025-9-22 09:10
你用SDK开发,uart里有个485的示例。不要用arduino开发。

sdk根据网页里的教程,拉取M61 SDK中的子模块 下拉,里没有uart,从哪里拉
您需要登录后才可以回帖 立即登录
高级模式
12下一页
统计信息
  • 会员数: 31134 个
  • 话题数: 42217 篇