关于两块单片机进行串口通信的注意事项——基于STM32

本文分享了基于STM32F103ZET6和RBT6单片机间串口通信的经验,强调了在信息传输中加入' '的重要性。详细描述了如何设置USART1和USART2进行数据收发,并提到了正确的连线方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为比赛需要,要进行两块单片机之间的串口通信,之前也没弄过这一块,就将一些注意事项记录下来,此次我基于的是STM32F103ZET6和RBT6之间的通信,类比其他类型的原理是一样的。

其实只有一个点需要注意,那就是传输的信息需要加 “\r\n”。

第一块单片机的USART1进行发送,第二块单片机的USART2进行接受,第二块单片机的USART1将接收到信息发送到电脑上进行显示。之前一直没加\r\n,一直接收不到。
也可以第二块单片机使用USART1进行数据的接收和发送,这样也是可以的,就是如果使用串口下载的化,每次要将连接线拔下来,下载完后在插上。

最后说下连线,TXD–RXD RXD–TXD ,共地感觉没啥用,不过最好还是共上吧。

### STM32与树莓派连接方法教程 #### 一、硬件准备 为了实现STM32与树莓派之间的连接,需要准备以下材料: - STM32开发板一块; - 树莓派一台(建议Raspberry Pi 4 Model B及以上版本); - USB转TTL串口模块(如果采用串口通信方式),或杜邦线若干(用于I2C或其他接口连接)。 #### 二、软件环境搭建 对于不同的通信方式,在双方都需要安装相应的库文件和支持工具。如果是通过串口进行透传,则需确保Linux下的`minicom`等终端模拟器可用;而针对I2C通信,则要确认内核已加载对应的驱动程序并启用了相应功能[^1]。 #### 三、具体实施案例——串口透传 当选择使用UART作为两者间的数据交换通道时,可以按照如下步骤操作: 1. **STM32端设置** - 打开CubeMX初始化项目,找到USART外设选项卡,将其参数调整至适合的应用场景下工作,比如波特率9600bps、8位数据长度、无校验位以及一位停止位。 2. **树莓派端配置** - 登录SSH会话后编辑/etc/inittab文件来禁用默认占用TTYUSBx设备的服务进程,防止冲突发生。 - 使用命令行工具如screen或者picocom建立虚拟串行链接监听来自MCU的消息流。 3. **物理连线** - 将STM32的TXD管脚接到RPi GPIO引脚上的RXD位置处,并反向处理另一组信号线路以完成双向交互过程。 4. **测试验证** - 启动之前编译好的固件镜像运行于目标单片机之上并向远端发送ASCII字符序列检验连通状态良好与否。 ```bash sudo apt-get install screen screen /dev/ttyS0 9600 ``` #### 四、另一种方案-I2C总线通讯 除了上述提到的传统RS232/UART形式之外,还可以利用更为紧凑高效的二线制同步协议即I²C来进行跨平台交流活动。此时应注意几点事项: - SDA/SCL两条导线上均应接入上拉电阻以便维持稳定的逻辑电平变化趋势; - 主控方负责发起寻址请求动作同时控制整个对话流程节奏走向; - 奴隶节点响应查询指令并将内部寄存器内容反馈回去供对方解析获取有用情报资料; ```c // 初始化 I2C 接口 (假设为 I2C1) HAL_I2C_MspInit(&hi2c1); HAL_I2C_Init(&hi2c1); // 发送地址给从设备 uint8_t addr = 0x5A << 1; // 设备地址左移一位加读写标志位 if(HAL_I2C_Master_Transmit(&hi2c1, addr, buffer, length, HAL_MAX_DELAY)!= HAL_OK){ Error_Handler(); } ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值