以下是微五科技CF5010RBT60开发板与庐山派开发板通过UART串口通信的详细步骤:
确定通信接口
电平转换(关键步骤)
CF5010RBT60的USART1输出为3.3V电平,而庐山派K230的UART2默认支持5V电平。为避免损坏设备,需添加电平转换电路:
物理连接
开发环境准备
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++);
}
}
主函数逻辑
在main()中调用初始化函数并测试通信:
int main(void) {
USART1_Init();
while (1) {
USART1_SendString("Hello from CF5010!\r\n");
delay_ms(1000); // 延时1秒
}
}
开发环境准备
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")
硬件检查
软件调试
异常处理
\r\n)。通信协议优化
其他通信接口
通过以上步骤,CF5010RBT60与庐山派可实现稳定的串口通信。关键在于电平转换的正确实现及双方参数的严格匹配。
更多回帖