STM32 两个单片机之间的通讯
原创 HS 平常灵感码头 2025年03月04日 11:25 广东
以上我们就是有A B两个板子来进行通讯,A板将吸收按键的键值,然后发送给B板,B板吸收键值,然后判定键值控制LED翻转,然后把键值按字符情势发送给PC
主函数展示
- if(key != 0xff) send_Uart2(key);
复制代码- case 1: LED1_OVERTURN ; send_Uart(data+48); break;
复制代码- case 2: LED2_OVERTURN ; send_Uart(data+48); break;
复制代码- case 3: LED3_OVERTURN ; send_Uart(data+48); break;
复制代码- case 4: LED4_OVERTURN ; send_Uart(data+48); break;
复制代码
关键代码解释
条件编译
- ifdef SENDA // 发送端代码#else // 接收端代码#endif
复制代码 通过是否界说 SENDA 宏,编译差别的代码段,实现同一份代码适配发送/吸收两种硬件。就是先把A板发送端的代码烧录进去,接着我们把界说的#define SENDA注释掉,就可以把接受端的代码烧录进去,接着就连接两个板子的PA2和PA3。就可以完成通讯了。
按键检测:
= key_an(); // 获取键值,0xff 表示无按键if (key != 0xff) send_Uart2(key); // 发送有效键值
发送端通过 key_an() 扫描按键,检测到按键后通过 UART2 发送键值。
LED 控制:
- case 1: LED1_OVERTURN; send_Uart(data+48); break;
复制代码 LED1_OVERTURN 是翻转 LED1 状态的宏,send_Uart(data+48) 将吸收到的数字转为 ASCII 字符(如 1 → '1')通过主串口(如 UART1)发送,可能用于调试输出。
1. 单片机通讯的关键技能
(1) 硬件接口
单片机之间的通讯依赖于 物理层接口,常见的硬件接口包括:
- UART(串口通讯) :常用于点对点通讯,简朴易用,如 PA2(TX) ↔ PA3(RX)。
- I²C(两线通讯) :适合多个装备通讯,比如传感器数据采集。
- SPI(高速通讯) :常用于高速数据传输,如屏幕驱动、SD 卡等。
- CAN(车载总线) :用于汽车、工业控制,抗干扰本领强。
- RS485(长隔断通讯) :适合多机通讯,抗干扰本领强。
本次实验采用 UART(串口通讯),是一种最基础、最常用的通讯方式。
(2) 通讯协议
通讯协议 规定了数据的格式、传输顺序、错误校验等。常见的协议包括:
- 自界说协议 :简朴易用,比如本实验中直接传输 按键键值。
- 尺度协议 :
- Modbus(工业控制协议)
- MQTT(物联网协议)
- Zigbee(无线通讯协议)
在本实验中,我们利用的是 简朴的自界说协议:
- 发送端(A 板):按键值 → 通过 UART 发送
- 吸收端(B 板):解析键值 → 控制 LED 并反馈给 PC
(3) 数据格式与编码
- ASCII 编码 :如 1 → '1'(data + 48)。
- 二进制数据 :直接传输数值,如 0x01, 0x02。
- 帧格式 :
- 帧头 (表示数据起始)
- 数据 (按键值)
- 校验 (确保数据精确性)
在本实验中:
(4) 波特率、数据格式
- 波特率(Baud rate) :决定命据传输速率,本实验利用 115200。
- 数据格式 :
- 数据位 :8 位
- 停止位 :1 位
- 校验位 :无校验(更简朴)
差别装备通讯时,波特率、数据格式必须匹配,否则可能发生数据丢失或乱码。
(5) 数据检测与错误处理
- 数据帧校验(Checksum) :可以防止数据传输错误。
- 超时机制 :如果长时间未收到数据,需要重新发送。
- 去抖动处理 :防止按键抖动导致误触发。
在本实验中,简朴处理:
- 吸收数据后判定是否为有效按键值 (1~4)。
- 发送 ASCII 数据给 PC,方便调试 。
2. 学习重点
(1) 串口通讯(UART)
- 熟练把握 UART 初始化、发送、吸收。
- 把握 串口调试助手 的利用。
- 明确 波特率、数据格式、校验方式。
(2) 按键扫描
- 明确 按键去抖动 方法(延时法、状态机法)。
- 能够 检测按键状态 并发送数据。
(3) LED 控制
- 把握 GPIO 端口控制。
- 学习 LED 翻转(OVERTURN)实现。
(4) 代码优化
- 把握 条件编译(#ifdef),便于在 发送端/吸收端 之间切换。
- 学习 怎样设计通讯协议(如加帧头、校验)。
(5) 调试本领
- 串口调试助手 :用于观察数据是否精确。
- printf 调试 :在 PC 端输出吸收数据,便于分析问题。
- 逻辑分析仪 :用于检查信号是否精确(高级调试)。
3. 进阶学习方向
如果把握了基本的 UART 通讯,可以进一步学习:
- I²C、SPI 通讯 :用于 LCD 显示、传感器读取等。
- RS485、CAN 通讯 :用于工业总线、多装备通讯。
- 无线通讯(BLE、Wi-Fi、LoRa) :用于物联网应用。
- 嵌入式操作体系(RTOS) :用于多任务通讯管理。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |