单片机/MCU论坛
直播中

哆啦r梦

未满1年用户 35经验值
擅长:嵌入式技术 EDA/IC设计
私信 关注
[文章]

微五科技 CF5010RBT60 开发板与庐山派开发板通过 UART 串口通信的详细步骤

以下是微五科技CF5010RBT60开发板与庐山派开发板通过UART串口通信的详细步骤:

一、硬件连接

  1. 确定通信接口

    • CF5010RBT60:使用USART1(兼容STM32F103RBT6的引脚定义),对应引脚为PA9(TX)和PA10(RX),位于开发板的排针J5(参考摘要7的引脚定义)。
    • 庐山派K230:使用UART2,对应引脚为GPIO11(TX)和GPIO12(RX),位于开发板的GH1.25-4P带锁接口(参考摘要2、3)。
  2. 电平转换(关键步骤)
    CF5010RBT60的USART1输出为3.3V电平,而庐山派K230的UART2默认支持5V电平。为避免损坏设备,需添加电平转换电路:

    • 方案一:使用74HCT125四总线缓冲器(或类似芯片),将CF5010的TX(3.3V)转换为5V连接至庐山派的RX,同时将庐山派的TX(5V)通过74HCT125转换为3.3V连接至CF5010的RX(参考摘要24)。
    • 方案二:使用N沟道MOS管(如2N7002)搭建简易电平转换电路,具体连接方式可参考摘要28。
  3. 物理连接

    • CF5010的PA9(TX)→ 电平转换器输入 → 庐山派的GPIO11(RX)。
    • 庐山派的GPIO12(TX)→ 电平转换器输入 → CF5010的PA10(RX)。
    • 两者的GND引脚直接相连,确保共地。

二、CF5010RBT60软件配置(基于Eclipse IDE)

  1. 开发环境准备

    • 安装微五科技提供的Eclipse集成开发环境及配套SDK(参考摘要7、17)。
    • 导入USART1通信示例工程,或新建工程并配置USART1外设。
  2. USART1初始化代码
    参考STM32F103的USART配置逻辑(CF5010硬件兼容),代码示例如下:

    #include "cf5010.h"
    
    void USART1_Init(void) {
        // 使能USART1和GPIOA时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
    
        // 配置TX引脚(PA9)为复用推挽输出
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
    
        // 配置RX引脚(PA10)为浮空输入
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
    
        // USART1参数配置
        USART_InitTypeDef USART_InitStructure;
        USART_InitStructure.USART_BaudRate = 115200;    // 波特率
        USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 8位数据位
        USART_InitStructure.USART_StopBits = USART_StopBits_1;    // 1位停止位
        USART_InitStructure.USART_Parity = USART_Parity_No;    // 无校验
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 无流控
        USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; // 收发模式
        USART_Init(USART1, &USART_InitStructure);
    
        // 使能USART1
        USART_Cmd(USART1, ENABLE);
    }
    
    // 发送单个字节
    void USART1_SendByte(uint8_t Byte) {
        USART_SendData(USART1, Byte);
        while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); // 等待发送完成
    }
    
    // 发送字符串
    void USART1_SendString(char* String) {
        while (*String) {
            USART1_SendByte(*String++);
        }
    }
    
  3. 主函数逻辑
    main()中调用初始化函数并测试通信:

    int main(void) {
        USART1_Init();
        while (1) {
            USART1_SendString("Hello from CF5010!\r\n");
            delay_ms(1000); // 延时1秒
        }
    }
    

三、庐山派K230软件配置(基于MicroPython)

  1. 开发环境准备

    • 安装CanMV IDE并连接庐山派开发板(参考摘要4)。
    • 确保庐山派已烧录最新的CanMV固件(支持UART2用户模式)。
  2. UART2初始化代码
    使用MicroPython的machine.UART模块,代码示例如下:

    from machine import UART, FPIOA
    
    # 配置引脚
    fpioa = FPIOA()
    fpioa.set_function(11, FPIOA.UART2_TXD)  # GPIO11 → UART2_TX
    fpioa.set_function(12, FPIOA.UART2_RXD)  # GPIO12 → UART2_RX
    
    # 初始化UART2,波特率115200,8位数据位,无校验,1位停止位
    uart = UART(UART.UART2, baudrate=115200, bits=8, parity=None, stop=1)
    
    # 接收数据测试
    while True:
        data = uart.read()
        if data:
            print("Received from CF5010:", data.decode())
            uart.write("Message received by LuShan-Pi!\r\n")
    

四、测试与验证

  1. 硬件检查

    • 确保电平转换电路连接正确,无短路或断路。
    • 检查开发板供电是否正常(CF5010通过Type-C,庐山派可通过USB或外部电源)。
  2. 软件调试

    • CF5010:编译并下载程序,观察串口输出是否正常(可通过板载USB转UART芯片连接电脑,使用串口助手监控)。
    • 庐山派:在CanMV IDE的串行终端中观察是否接收到CF5010发送的消息,同时检查庐山派是否能正确回传数据。
  3. 异常处理

    • 无数据接收
      • 检查波特率、数据位、停止位等参数是否一致。
      • 使用逻辑分析仪或示波器检测TX/RX引脚波形,确认信号是否正常传输。
    • 乱码
      • 检查电平转换电路是否正常工作,确保3.3V与5V信号转换正确。
      • 确认代码中是否遗漏了字符串结束符(如\r\n)。

五、扩展建议

  1. 通信协议优化

    • 在应用层添加校验和(如CRC16)或数据帧头/尾,提高通信可靠性。
    • 使用DMA传输大数据量,减少CPU占用(参考摘要13、14)。
  2. 其他通信接口

    • 若需更高速度,可尝试SPI通信。CF5010的SPI1引脚为PA5(SCK)、PA6(MISO)、PA7(MOSI),庐山派可通过FPIOA配置对应引脚(参考摘要9)。

通过以上步骤,CF5010RBT60与庐山派可实现稳定的串口通信。关键在于电平转换的正确实现及双方参数的严格匹配。

更多回帖

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