433M串口模块无线通信(STM32)
一、前期准备
单片机:STM32F103C8T6*2
开发环境:MDK5.14
库函数:标准库V3.5
433M模块:淘宝有售
二、实验效果
2.1 Master 初始化
2.2 Slave 初始化
2.3 Master发送,Slave接收
2.4 Slave发送,Master接收
三、驱动原理
按照文档配置,SET脚置1为配置模式,绿色灯会亮起,SET脚清零为工作模式。
需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。
四、驱动代码
4.1 Master
wireless_433m.h
#ifndef __CONF_433M_H__
#define __CONF_433M_H__
#include "stm32f10x.h"
#include "gpio.h"
#include "uart.h"
//Rate of Work
#define Rate_Defualt 0x00 //20dBm
#define Rate_1dBm 0x01
#define Rate_2dBm 0x02
#define Rate_5dBm 0x03
#define Rate_8dBm 0x04
#define Rate_11dBm 0x05
#define Rate_14dBm 0x06
#define Rate_17dBm 0x07
#define Rate_20dBm 0x08//Baudrate
#define Buad_Default 0x00 //9600
#define Buad_1200 0x01
#define Buad_2400 0x02
#define Buad_4800 0x03
#define Buad_9600 0x04
#define Buad_19200 0x05
#define Buad_38400 0x06
#define Buad_57600 0x07
#define Buad_115200 0x08//RF Baudrate
#define RF_Buad_Defualt 0x00 //10k bps
#define RF_Baud_500 0x01
#define RF_Baud_2400 0x02
#define RF_Baud_10000 0x03
#define RF_Baud_20000 0x04
#define RF_Baud_40000 0x05
#define RF_Baud_100000 0x06
#define RF_Baud_150000 0x07
#define RF_Baud_250000 0x08//Serial Port Format
#define Serial_Mode_default 0x00 //8N1
#define Serial_Mode_8N1 0x01
#define Serial_Mode_8O1 0x02
#define Serial_Mode_8E1 0x03//Frequency Band
#define Frequency_Default 0x02
#define Frequency_433M 0x00
#define Frequency_315M 0x01
#define Frequency_433M_1 0x02
#define Frequency_868M_915M 0x03/* Master IO Definitions */
#define M_TXD_Pin GPIO_Pin_2
#define M_RXD_Pin GPIO_Pin_3
#define M_SET PAout(5)
#define M_Mode_Config M_SET = 0
#define M_Mode_Work M_SET = 1#define M_Test_Key PAin(0)#define RecLen 64extern uint8_t M_RecData[RecLen];
extern uint8_t *M_pIndex;
extern uint8_t *M_pWrite;
extern uint8_t *M_pRead;
extern uint8_t M_DataLen;extern void Wireless_433MConfiguration(void);
extern void Wireless_433MInitalized(void);
#endif
wireless_433m.c
#include "conf_433m.h"uint8_t M_RecData[RecLen] = {0};
uint8_t *M_pIndex = M_RecData;
uint8_t *M_pWrite = M_RecData;
uint8_t *M_pRead = M_RecData;
uint8_t M_DataLen = 0;void Wireless_433MConfiguration(void)
{GPIO_InitTypeDef GPIO;//Enable APB2 BusRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//Register IO GPIO.GPIO_Pin = GPIO_Pin_5;GPIO.GPIO_Speed = GPIO_Speed_50MHz;GPIO.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_Init(GPIOA, &GPIO);GPIO.GPIO_Pin = GPIO_Pin_0;GPIO.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOA, &GPIO);M_Mode_Config;
}void Wireless_433MInitalized(void)
{uint8_t Wireless_433_Conf[15] = {0};uint16_t Base_Freq = 430;uint8_t i = 0;uint16_t Checksum = 0;//F8 00 00 00 28 12 34 12 34 00 00 02 B6//0 1 2 3 4 5 6 7 8 9 10 11 12Wireless_433_Conf[0] = 0xF8;Wireless_433_Conf[1] = Buad_Default;Wireless_433_Conf[2] = Rate_Defualt;Wireless_433_Conf[3] = (uint8_t)(((434 - Base_Freq)*10) / 256);Wireless_433_Conf[4] = (uint8_t)(((434 - Base_Freq)*10) % 256);Wireless_433_Conf[5] = 0x11;Wireless_433_Conf[6] = 0x11;Wireless_433_Conf[7] = 0x22;Wireless_433_Conf[8] = 0x22;Wireless_433_Conf[9] = RF_Buad_Defualt;Wireless_433_Conf[10] = Serial_Mode_default;Wireless_433_Conf[11] = Frequency_Default;for (i = 1; i < 12; i ++){Checksum += Wireless_433_Conf[i];}Wireless_433_Conf[12] = (uint8_t)(Checksum % 256);printf("Master Config Cmd: ");for (i = 0; i < 13; i ++){printf("%02X ", Wireless_433_Conf[i]);}printf("\r\n");for (i = 0; i < 13; i ++){USART_Send(USART2, Wireless_433_Conf[i]);}while(M_DataLen == 0);printf("M_RecData: %s\r\n", M_RecData);if (M_DataLen == 2){if (M_RecData[0] == 'O' && M_RecData[1] == 'K')printf("Config Master PASS!\r\n");}else if (M_DataLen == 5){printf("Config Master Error!\r\n");}else{printf("DataLen = %d!\r\n", M_DataLen);}M_DataLen = 0;memset(M_RecData, 0, RecLen);M_Mode_Work;
}
4.2 Slave
wireless_433m.h
#ifndef __CONF_433M_H__
#define __CONF_433M_H__
#include "stm32f10x.h"
#include "gpio.h"
#include "uart.h"
//Rate of Work
#define Rate_Defualt 0x00 //20dBm
#define Rate_1dBm 0x01
#define Rate_2dBm 0x02
#define Rate_5dBm 0x03
#define Rate_8dBm 0x04
#define Rate_11dBm 0x05
#define Rate_14dBm 0x06
#define Rate_17dBm 0x07
#define Rate_20dBm 0x08//Baudrate
#define Buad_Default 0x00 //9600
#define Buad_1200 0x01
#define Buad_2400 0x02
#define Buad_4800 0x03
#define Buad_9600 0x04
#define Buad_19200 0x05
#define Buad_38400 0x06
#define Buad_57600 0x07
#define Buad_115200 0x08//RF Baudrate
#define RF_Buad_Defualt 0x00 //10k bps
#define RF_Baud_500 0x01
#define RF_Baud_2400 0x02
#define RF_Baud_10000 0x03
#define RF_Baud_20000 0x04
#define RF_Baud_40000 0x05
#define RF_Baud_100000 0x06
#define RF_Baud_150000 0x07
#define RF_Baud_250000 0x08//Serial Port Format
#define Serial_Mode_default 0x00 //8N1
#define Serial_Mode_8N1 0x01
#define Serial_Mode_8O1 0x02
#define Serial_Mode_8E1 0x03//Frequency Band
#define Frequency_Default 0x02
#define Frequency_433M 0x00
#define Frequency_315M 0x01
#define Frequency_433M_1 0x02
#define Frequency_868M_915M 0x03/* Slave IO Definitions */
#define S_TXD_Pin GPIO_Pin_2
#define S_RXD_Pin GPIO_Pin_3
#define S_SET PAout(5)
#define S_Mode_Config S_SET = 0
#define S_Mode_Work S_SET = 1#define S_Test_Key PAin(0)#define RecLen 64extern uint8_t S_RecData[RecLen];
extern uint8_t *S_pIndex;
extern uint8_t *S_pWrite;
extern uint8_t *S_pRead;
extern uint8_t S_DataLen;extern void Wireless_433MConfiguration(void);
extern void Wireless_433MInitalized(void);
#endif
wireless_433.c
#include "conf_433m.h"uint8_t S_RecData[RecLen] = {0};
uint8_t *S_pIndex = S_RecData;
uint8_t *S_pWrite = S_RecData;
uint8_t *S_pRead = S_RecData;
uint8_t S_DataLen = 0;void Wireless_433MConfiguration(void)
{GPIO_InitTypeDef GPIO;//Enable APB2 BusRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//Register IO GPIO.GPIO_Pin = GPIO_Pin_5;GPIO.GPIO_Speed = GPIO_Speed_50MHz;GPIO.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_Init(GPIOA, &GPIO);GPIO.GPIO_Pin = GPIO_Pin_0;GPIO.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOA, &GPIO);S_Mode_Config;
}void Wireless_433MInitalized(void)
{uint8_t Wireless_433_Conf[15] = {0};uint16_t Base_Freq = 430;uint8_t i = 0;uint16_t Checksum = 0;//F8 00 00 00 28 12 34 12 34 00 00 02 B6//0 1 2 3 4 5 6 7 8 9 10 11 12Wireless_433_Conf[0] = 0xF8;Wireless_433_Conf[1] = Buad_Default;Wireless_433_Conf[2] = Rate_Defualt;Wireless_433_Conf[3] = (uint8_t)(((434 - Base_Freq)*10) / 256);Wireless_433_Conf[4] = (uint8_t)(((434 - Base_Freq)*10) % 256);Wireless_433_Conf[5] = 0x22;Wireless_433_Conf[6] = 0x22;Wireless_433_Conf[7] = 0x11;Wireless_433_Conf[8] = 0x11;Wireless_433_Conf[9] = RF_Buad_Defualt;Wireless_433_Conf[10] = Serial_Mode_default;Wireless_433_Conf[11] = Frequency_Default;for (i = 1; i < 12; i ++){Checksum += Wireless_433_Conf[i];}Wireless_433_Conf[12] = (uint8_t)(Checksum % 256);printf("Slave Config Cmd: ");for (i = 0; i < 13; i ++){printf("%02X ", Wireless_433_Conf[i]);}printf("\r\n");for (i = 0; i < 13; i ++){USART_Send(USART2, Wireless_433_Conf[i]);}while(S_DataLen == 0);printf("S_RecData: %s\r\n", S_RecData);if (S_DataLen == 2){if (S_RecData[0] == 'O' && S_RecData[1] == 'K')printf("Config Slave PASS!\r\n");}else if (S_DataLen == 5){printf("Config Slave Error!\r\n");}else{printf("DataLen = %d!\r\n", S_DataLen);}S_DataLen = 0;memset(S_RecData, 0, RecLen);S_Mode_Work;
}
由于作者能力有限,有不妥之处欢迎指正,邮箱alex_hua@foxmail.com
433M串口模块无线通信(STM32)相关推荐
- 使用CH340串口模块对STM32进行程序下载
使用CH340串口模块对STM32进行程序下载 一.接线 二.利用FlyMcu进行STM32程序下载 1.STM32配置 2.FlyMcu配置 一.接线 CH340 STM32 VCC VCC GND ...
- MJKDZ PS2手柄控制OskarBot小车(三):STM32接收无线串口模块的数据并处理
MJKDZ PS2手柄控制OskarBot小车(三):无线串口模块接收数据并处理 [目录] 1.硬件与软件设计思路 - 1.1 硬件资源 - 1.2 STM32串口接收数据的方法 2.源代码详解 - ...
- stm32驱动Lora串口模块
本文使用的硬件 stm32MCU+亿佰特-Lora串口模块,型号E32-433T20D 定义各配置字节 /*配置报文头部选项*/ #define HEAD_Save 0xC0//配置后掉电保存 #de ...
- 【无线串口模块快速选型指南】通信频点、芯片、通信距离、功率灵敏度、电流 空中速率
目录 简介 串口模块的选型要点 01 通信频点 02 芯片方案 03 通信距离 04 发射功率.接收灵敏度 发射功率 接收灵敏度 05 发射电流.接收电流.休眠电流 06 空中速率 07 天线接口形 ...
- 基于HC-05蓝牙模块的STM32无线控制智能系统硬件开发
本文主要面向刚开始接触嵌入式开发的小白,详细介绍如何搭建基于蓝牙的STM32无线控制硬件平台,蓝牙模块使用淘宝上的HC-05串口转蓝牙模块,开发板使用基于STM32F407的航发RH407. 实验器材 ...
- HC-05蓝牙模块与STM32控制led灯亮详解
HC-05蓝牙模块与STM32控制led灯亮 一.HC-05蓝牙模块解析 1.简介 2.HC-05原理 3.HC-05实物图 二.使用AT指令进行配置 1.进入命令响应工作模式 2.配置串口 3.进行 ...
- ch340串口驱动_如何使用串口来给STM32下载程序
前言 第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成.后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进 ...
- 无线串口模块通信技术参数快速选型指南
首先我们来说一下什么是无线串口模块?无线模块即是通过无线电信号来传输数据的软硬件模组,串口模块即是使用串口通信协议来传输数据的软硬件模组,那么无线串口模块也就是使用串口协议来进行无线电通信的软硬件模组 ...
- CH9121串口转以太网模块STM32驱动
CH9121串口转以太网模块STM32驱动 文章目录 CH9121串口转以太网模块STM32驱动 0. 简介 1. 特性: 2. 应用场合 3. 示例平台 4. 代码 0. 简介 CH9121 集成T ...
最新文章
- matlab中的mkdir函数_科学网—Matlab中计算函数运行时间的三种方法及判断新建文件夹 - 张伟的博文...
- EasyUI--datebox设置默认时间
- Zabbix实现微信告警
- 60%收入来自海外,VC追着投资,这匹千里马如此回答“AI往何处去”
- docker安装最新版Jenkins:拉取镜像/创建容器
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
- 选择条件WD_SELECT_OPTIONS_20
- outlook qr码在哪里_胡志明市第一次将QR码附加在街道名称板上,目的是什么?
- 手机应用的照相录像功能,为什么转到后台就不能工作了?
- 搭建影视APP需要准备的工具
- 目标检测-ImageAI从安装到使用详解
- 【C语言初学】C语言中表示次方与开根
- 微信小程序获取位置信息基于腾讯地图实现
- unity支持的模型数据格式,unity3d模型制作规范
- lattice fpga ddr3 读写控制
- arcgis sceneView 风场
- CSP初赛基础知识整理
- 2022年11月编程语言排行
- 2021年,我们 CSDN App做了什么?
- js 截取指定字符前的字符
热门文章
- Oracle EBS Interface/API(18) - 标准采购订单、PBA和一揽子发放等等审批API
- Windows CE 6.0 环境搭建
- 三维翼智发光字3D字壳打印机有什么功能?
- 高频电子线路:小功率调幅发射机multisim设计学习记录
- Mysql安装-Centos7-阿里云虚拟主机
- 幻影追逐者服务器维护,《幻影追逐者》游戏特色曝光 开启与邪恶争斗冒险之旅...
- 医用雾化器芯片/PCBA方案
- python深度遍历
- 眨眼控制 眨眼检测 眼球运动来控制指令
- POJ1009:Edge Detection