【lora模块调试:亿百特lora-型号E22-400T30D-V=代码调试-STM32H7xx/F4xx/F1xx-基础样例(2)】

news2024/11/28 10:37:25

【lora模块调试:亿百特lora-型号E22-400T30D-V=代码调试-STM32H7xx/F4xx/F1xx-基础样例(2)】

  • 1、概述
  • 2、实验环境
  • 3、实验说明
    • 3-1调试开发板H7
      • 1、先了解硬件H7
      • 2、测试keil版本的H7软件代码
          • (1)找到样例代码。
          • (2)keil打开和安装H7软件包
          • (3)初步改代码,测试串口
          • (4)配置另一个lora
          • (5)连接lora
    • 3-2调试开发板F4
          • (1)新建工程,cubeide运行编译。
          • (2)修改代码,初步串口测试
          • (3)连接Lora,进行测试
    • 3-3调试开发板F1
          • (1)新建工程,cubeide运行编译。
          • (2)修改代码,初步串口测试
          • (3)连接Lora,进行测试
  • 4、代码连接
  • 5、细节部分
        • (1)按照keil相关软件支持包文件,如下图,安装软件包。
        • (2)连接不通时,可尝试验证lora和验证串口
        • (3)使用STM32F4时,发现只接收一次,后续发送也不收了。
        • (3)使用STM32F4时,插在电脑PC的lora,忘记插M1跳线帽,导致错误
  • 6、总结

1、概述

前篇文章:【lora模块调试:亿百特lora-型号E22-400T30D-V=初步调试踩坑-认识模块-了解协议(1)】
继续上文,本篇我们来调试代码,做了一个简单样例,来进行使用lora实验。

2、实验环境

(1)软件环境:PC环境WIN10,keil5,STM32cubeIDE1.8.0。
(2)硬件芯片:lora模块:E22-400T30D
(3)硬件开发板H7:
(4)硬件开发板F4:
(5)硬件开发板F1:
(6)其它硬件: TTL串口传usb模块,ST-link下周器,杜邦线若干。
(7)其它说明,本次没有距离相关实验,模块离得比较近,所以不使用天线也可以通信。

3、实验说明

本次实验说明,代码开始时,会通过改变IO,来控制M0和M1,然后发送相应数据,进行配置。配置后,在设置通信模式,收到特定指令,回复消息。

1、我们需要两个IO控制M0和M1.
2、我们需要一个串口来是收发数据

虽然说是调试lora实验,但更像是调试串口实验。

3-1调试开发板H7

我们接触使用新的开发板时,一般先是改它人代码,并不自己从头新建工程,所以这次我们先尝试改正点原子hal库代码,来实现我们的功能。

1、先了解硬件H7

之前只是刷过正点原子的教学视频,没有实际操作过H7,但是细节上有点差别,大方向应该差不多,在下载好的资料包内找到原理图。
在这里插入图片描述

(1)我们需要先看下原理图,一个是M0和M1进行控制,如下图所示,我们直接选择LED灯的两个控制引脚。
在这里插入图片描述
如下图,由此我们也知道,这两个引脚是PB1和PB0。
在这里插入图片描述

(2)串口我们也选择默认的uart1,这样我们直接在已有代码上改成我们需要功能就可以了。
在这里插入图片描述

2、测试keil版本的H7软件代码

(1)找到样例代码。

本次我们是在已有的代码实现我们需要功能,如下图,在给定的资料包内,我们找到本次使用的代码“实验3 串口通信实验”。
在这里插入图片描述
资料包可以去正点原子给到网站下载:http://www.openedv.com/docs/

(2)keil打开和安装H7软件包

然后我们使用keil打开,没有H7软件支持包的,需要按照下,详见下面“细节部分“内容。

安装好软件包后,打开工程就可以进行编译了,我们先不改变任何内容,将编译好的代码,直接烧录,确保ST-link与单片机和PC连接没有问题。

如下,下载好代码后,使用usb连接串口,没有任何问题的话,原代码会打印消息,并输入内容是,会返回内容。
在这里插入图片描述

(3)初步改代码,测试串口

我们先不连lora,直接连接会有问题,我们先写好反馈程序,如下,我发给单片机,固件数据:带{0x01,0x02…}开头数据,让单片机给我反馈数据。
串口发送数据:{0x01,0x02…}
设置配置lora数据:{0xc0,0x00,0x09,0x00,0x03,0x00,0x62,0x00,0x17,0x43,0x00,0x00}
单片机反馈数据:{0x00,0x01,0x17,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01}

其实这个反馈数据,就是单片机定点发送的数据,给地址0x01,信道0x17,发送后面数据:0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,具体数据解析,可以看前篇。
在这里插入图片描述

在这其中出现两次不通情况,一次是波特率不对,一次貌似硬件连接不对,第二次有点神奇,如下图,第一次如下是波特率应该为9600。
在这里插入图片描述
第二次后来验证了循环发送数据,才通的,应该是哪块链接不对。
在这里插入图片描述

重试,发送成功了。
在这里插入图片描述

(4)配置另一个lora

使用之前提到的工具:TTL转usb模块,就会很方便,此模块是可以从商家那边买到,直接插在电脑上,想要更换模式,直接插拔M1,M0不需要动。
我们在配置模式(M1=1,M0=0)情况下,先恢复出厂参数,然后设置定点模式,和地址为0x01,如下图所示。
在这里插入图片描述

(5)连接lora

配置好后,单片机可以连接lora了,将跳线帽拔掉,引脚PA9和PA0交叉连接lora的RX和TX,如果不同,就对调下。

在这里插入图片描述

然后将另一个lora,在通信模式下(M1=0,M0=0)情况下,打开串口软件,发送数据:
0x00,0x03,0x17,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09
,可以看到收到了数据,证明连接成功了。

如下图,发送自己发送的数据也发回来,说明下边有发送代码,只能执行了,如下图所示。
在这里插入图片描述
注释后,就正常了。
在这里插入图片描述

3-2调试开发板F4

开发板F4之前使用过很多次了,并且也有串口相关实验,可以选择使用之前代码,进行修改测试。
之前串口文章:软件STM32cubeIDE下使用STM32F4xx配置uart4+DMA接收数据+空闲串口函数-基础样例

以上为DMA的形式,编写起来还是很麻烦的,注意点很多,我尝试过,觉得改的太多了,不如直接重新弄个,不用DMA,只是为了实现功能,当样例,所以新建个简单工程吧。

(1)新建工程,cubeide运行编译。

1、初始化RCC和SYS:具体这里直接放个大致截图,不了解可以看代码。
在这里插入图片描述2、初始化串口和IO:串口9600,

PF9---M0
PF10--M1
uart1-PA9---uart1-TX
uart1-PA10-uart1-RX

在这里插入图片描述
其它默认,串口中断记得点上,IO如下,
在这里插入图片描述
3、时钟配置
在这里插入图片描述

(2)修改代码,初步串口测试

1、我们加入部分代码,先不插入lora,直接测试下uart1和LED的IO,看看灯和串口是否起作用,如下为IO控制和发送数组,是我们提取准备好的数据。
在这里插入图片描述
2、然后再while内加入接收函数,收到开头数组为0x01,0x01就会回消息,循环点亮开发板上的灯,如果不是开发板,可以直接测引脚也是可以的。
在这里插入图片描述
这里因为接收到数据后,没有清除,所以一直再重复发,我们每次收到后,清除一下,就可以了,如下
在这里插入图片描述
3、到这一步,准备就差不多了,可以进行下一步了。

(3)连接Lora,进行测试

1、可以将另一个lora链接电脑了,然后将lora开发板,串口连接开发板串口1,M0接PF9,M1接PF10,电源接5V.

M0----PF9---
M1----PF10--
RXD---uart1-PA9---uart1-TX
TXD---uart1-PA10-uart1-RX
AUX---空着
VCC---5V
GND---GND

在这里插入图片描述
2、修改成最后调试代码,
在这里插入图片描述3、实际测试结果。
在这里插入图片描述

3-3调试开发板F1

F1开发板之前也是用过,主要是调试串口,进行调试,所以说是调试lora,更像调试串口实验。
与F4大相径庭,不能说非常像吧,几乎一模一样吧。

(1)新建工程,cubeide运行编译。

1、SYS和CRC
在这里插入图片描述
2、uar1的中断
在这里插入图片描述
波特率和控制IO
在这里插入图片描述
3、时钟配置
在这里插入图片描述

(2)修改代码,初步串口测试

1、重复步骤,能跳的就先跳了,有疑问,可以看代码。

//第一段加入内容
#define UART1_Buf_LEN 100
 uint8_t UART1_SendBuf[UART1_Buf_LEN];
 uint8_t UART1_ReceBuf[UART1_Buf_LEN];
 uint8_t USART_Rx_send_lora_data[12]=         {0x00,0x01,0x17,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01};
 uint8_t USART_Rx_send_lora_data_set_mode[12]={0xc0,0x00,0x09,0x00,0x03,0x00,0x62,0x00,0x17,0x43,0x00,0x00};
 #define M0_set_0 	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_RESET);		//PC8   M0=0
 #define M1_set_0 	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_RESET);		//PC9   M1=0
 #define M0_set_1 	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_SET);		//PC8   M0=1
 #define M1_set_1 	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_SET);		//PC9  M1=1

............
//第二段加入内容
  /* USER CODE BEGIN 2 */
  HAL_Delay(500);
	  M0_set_0;
	  M1_set_1;
  HAL_Delay(500);
  HAL_UART_Transmit(&huart1,(uint8_t*)USART_Rx_send_lora_data_set_mode,12,0x200);
	  HAL_Delay(500);
	  M0_set_0;
	  M1_set_0;
  HAL_Delay(500);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {


//	  if(HAL_UART_Receive(&huart1,UART1_ReceBuf,10,0xff)==HAL_OK)// 接收10个字符
//	  {
//		  if(UART1_ReceBuf[0]==0x01 && UART1_ReceBuf[1]==0x02)
//		 	  {
		 		  HAL_UART_Transmit(&huart1,(uint8_t*)USART_Rx_send_lora_data,12,0x200);
//		 		  memset(UART1_ReceBuf,0,UART1_Buf_LEN);
//		 	  }
		 	  HAL_Delay(1000);
//	  }

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  HAL_UART_Receive(&huart1,UART1_ReceBuf,10,0xff);// 接收10个字符
	  if(UART1_ReceBuf[0]==0x01 && UART1_ReceBuf[1]==0x02)
	  {
		  HAL_UART_Transmit(&huart1,(uint8_t*)USART_Rx_send_lora_data,12,0x200);
		  memset(UART1_ReceBuf,0,UART1_Buf_LEN);
	  }
	  HAL_Delay(1000);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

2、引脚连接如下

PA9---uart1_TX ---lora---RXD
PA10--uart1_RX ---lora---TXD
PC8---M0
PC9---M1
AUX---空着
VCC--5V
GND--GND

3、这里遇到了一个问题,就是单片机接收端口好像有问题呢,一直不通,反复尝试两个lora之间通信是没有问题如下
在这里插入图片描述

后来直接的单片机连接串口,发现有一定概率,单片机还回,看起啦单片机哪里配置不对,不过尝试上下拉,如下依旧没解决
yi
尝试了很多次吧,都没很好解决,后来直接让单片的lora直接发送,也不判断了,感觉这块F103芯片有点菜啊,和F407确实不太一样。

(3)连接Lora,进行测试

具体硬件如下ruxi

如下图,是让单片机直接发送数据,就成功了,发送没有任何问题。
在这里插入图片描述

代码中,最后只是发送,不会判断了。
在这里插入图片描述

4、代码连接

(1)STM32H743IIxx改写正点原子代码,keil运行
代码链接:https://download.csdn.net/download/qq_22146161/88009530
(2)STM32F407xxx改写之前样例代码,STM32cubeIDE运行。
代码链接:https://download.csdn.net/download/qq_22146161/88009526
(2)STM32103xxx改写之前样例代码,STM32cubeIDE运行。
代码链接:https://download.csdn.net/download/qq_22146161/88009507

5、细节部分

(1)按照keil相关软件支持包文件,如下图,安装软件包。

在这里插入图片描述

(2)连接不通时,可尝试验证lora和验证串口

调试单片机本质是调试串口,所以可以直接usb转串口,直接连接电脑,来验证串口。
在这里插入图片描述

(3)使用STM32F4时,发现只接收一次,后续发送也不收了。

发现忘记加延时了,这块需要小心,如下图,发送一次后,确实收到了,但是后续发送,就没有。
在这里插入图片描述
实际更调试更复杂,我用DMA那个样例代码时,也是发现类似问题,同时觉得改动太多了,才重新弄了个样例,好在本样例,加入延时解决了。
在这里插入图片描述

(3)使用STM32F4时,插在电脑PC的lora,忘记插M1跳线帽,导致错误

在这里插入图片描述

刚刚配置完,忘记插M1跳线帽,这块实际上,是插了,但是插歪了,所以通信报告错误,如下图,还是要注意下的。
在这里插入图片描述
()
在这里插入图片描述

6、总结

3个单片机上,来回切换,确实有些难度,并且虽说实现功能相似,但是还是有差别的,不过也算完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.清除浮动

3.1 为什么需要清除浮动? 由于父级盒子在很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为0时,就会影响下面的标准流盒子。 ●由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排…

java开发微信公众平台之素材上传

微信公众平台官方文档 我在本地使用工具请求接口一切正常。 当我开始写代码的时候 我蒙了 后台怎么模拟form表单上传图片 放参考文章链接https://blog.csdn.net/subaiqiao/article/details/122059076 首先引入依赖 <dependency><groupId>com.squareup.okhttp3&l…

环状二肽:16364-36-6,cyclo(Ala-Glu),环(-丙氨酸-谷氨酸),具有明确的生物活性

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ Cyclo(Ala-Glu) 是一种环状二肽&#xff0c;环二肽(2,5-哌嗪二酮)是Z小的环肽&#xff0c;许多天然环二肽化合物都具有明确的生物活性&#xff0c;环二肽结构的特殊性使得这类化合物的合成自成体系&#xff0c;通常由N端游离…

sap abap,forms,smartforms 导出pdf

4种方法&#xff1a; 1.安装pdf程序&#xff0c;Foxit Reader,先敲回车 自动带出&#xff0c;如下图&#xff1a; 直接打印就会弹出保存pdf文档路径&#xff0c;点保存。这种方式是最简单的&#xff0c;可 forms 和 smartforms 。 2. forms 和 smartforms 打印到spool 中&…

Django搭建图书管理系统03:编写博客文章的Model模型

Django 框架主要关注的是模型&#xff08;Model&#xff09;、模板&#xff08;Template&#xff09;和视图&#xff08;Views&#xff09;&#xff0c;称为MTV模式。 它们各自的职责如下&#xff1a; 层次职责模型&#xff08;Model&#xff09;&#xff0c;即数据存取层处理与…

【设计模式】第六章:装饰器模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章&#xff1a;单例模式 【设计模式】第二章&#xff1a;工厂模式 【设计模式】第三章&#xff1a;建造者模式 【设计模式】第四章&#xff1a;原型模式 【设计模式】第五章&#xff1a;适配器模式 【设计模式】第六章&…

STM32外设系列—ESP8266(WIFI)

文章目录 一、ESP8266简介二、固件库烧录三、常用AT指令四、访问API4.1 获取IP地址4.2 GET天气信息4.3 访问结果展示 五、实战项目5.1 串口配置5.2 检测WIFI模块连接状态5.3 发送配置指令5.4 解析天气信息 六、成果展示 一、ESP8266简介 ESP8266是嵌入式和物联网开发中常用的模…

js实现用时间戳生成13位随机数

效果如图&#xff1a; methods里面写方法&#xff1a; changeTime(val) {//去掉-var reg new RegExp("-", "g");var a val.replace(reg, "");//去掉空格var regs new RegExp(" ", "g");var b a.replace(regs, "&qu…

MBD stm32开发 脉冲->GPIO

matlab1028b以上 stm32cubemx5.6.0以上 从正点原子下载&#xff0c;百度的可能存在java问题 stm32-mat/target 教程与代码分享 - 知乎 安装好这些后&#xff0c;打开matlab&#xff0c;打开路径STM32-MAT\STM32 打开MATLAB&#xff0c;在设置路径中添加STM32-MAT/TARGET文件…

港联证券|股指预计维持震荡格局 关注汽车、半导体等板块

6月全行业、全部非金融行业景气继续回落&#xff0c;中报或确认1Q23为本轮全A非金融盈利增速底&#xff0c;但价格支撑偏弱→复苏或缺弹性。结合本轮PPI见底时间、历次去库周期时长以及周期底部的合意库存水平&#xff0c;本轮库存周期大约3Q23见底&#xff0c;Q3市场或进入“补…

关于公安部三所开展网络安全产品认证工作的公告

各网络安全产品厂商&#xff1a; 2023年7月3日&#xff0c;国家互联网信息办公室、工业和信息化部、公安部、国家认证认可监督管理委员会发布了《关于调整<网络关键设备和网络安全专用产品目录>的公告》&#xff08;2023年第2号&#xff09;&#xff0c;调整了网络安全专…

最新kali Linux2023.1镜像下载链接

我们一般推荐使用国内镜像下载 kali linux-2023.1下载地址&#xff1a;国内镜像阿里云开源镜像站下载地址&#xff1a;kali-images-kali-2023.1安装包下载_开源镜像站-阿里云 kali linux-2023.1下载地址&#xff1a;国内镜像网易开源镜像站下载地址&#xff1a;http://mirror…

Spring Boot 中的模板引擎是什么,如何使用

Spring Boot 中的模板引擎是什么&#xff0c;如何使用 在 Web 应用程序中&#xff0c;模板引擎是一种用于动态生成 HTML、XML、JSON 等文档的工具。Spring Boot 内置了多种常见的模板引擎&#xff0c;例如 Thymeleaf、Freemarker、Velocity 等&#xff0c;让我们可以轻松地创建…

赋值CString时导致程序崩溃的一个问题

使用GetWindowTextW将vgj容器内指定结构体的opinion变量赋值 GetDlgItem(IDC_EDIT2)->GetWindowTextW(vgj.at(i).opinion);//将opinion赋值导致程序出现崩溃&#xff0c;通常这种崩溃是由于访问野指针造成的 检查之前的代码有 memset(&vgj.at(i), 0, sizeof(vgj.at(i…

TextFuseNet:具有更丰富融合特征的场景文本检测

计算机视觉 文章目录 计算机视觉摘要1.介绍2.相关工作3.方法3.1框架3.2 多层次特征表示3.3 多路径融合体系结构3.4 弱监督学习 4.实验4.1 数据集4.2 细节4.3消融实验4.4 与最新的形状文本检测方法的比较 5. 结论 论文地址&#xff1a;https://www.ijcai.org/Proceedings/2020/7…

Python教程(2)——开发python常用的IDE

为什么需要IDE 在理解IDE之前&#xff0c;我们先做以下的实验&#xff0c;新建一个文件&#xff0c;输入以下代码 total_sum 0 for x in range(1,101):total_sum x print(total_sum)非常非常简单的一个程序&#xff0c;主要就是计算1加到100的值&#xff0c;我们将它重命名…

阿里云国际站:阿里云究竟是如何胜出的?

标题&#xff1a;阿里云究竟是如何胜出的&#xff1f;   "阿里云究竟是如何胜出的&#xff1f;"这是一个引人入胜的问题&#xff0c;值得我们深挖细究。作为中国市场上引领潮流的云计算服务供应商&#xff0c;阿里云的成功并不是偶发事件&#xff0c;而是其在技术创…

Java语言 - Unicode编码与字符串互转

概述 项目需要Unicode编码与字符串互转&#xff0c;在此做个笔录。 1、code // Press Shift twice to open the Search Everywhere dialog and type show whitespaces, // then press Enter. You can now see whitespace characters in your code. public class Main {public…

一起来看看文档翻译哪个好吧

在繁忙的都市生活中&#xff0c;小玲是一位年轻的职场人士。她的工作经常需要处理各种文档和文件&#xff0c;而其中不乏需要与外国合作伙伴交流的时候。然而&#xff0c;她并不熟悉其他语言&#xff0c;这给她的工作带来了一定的困扰。于是&#xff0c;她开始寻找免费的文档翻…

npm配置淘宝镜像

1.直接配置 npm config set registry https://registry.npmmirror.com/ 2.工具配置 使用nrm配置&#xff0c;镜像地址为&#xff1a;npm registry manager 2.1安装 npm install -g nrm open8.4.2 --save 2.2使用淘宝镜像 nrm use taobao 2.3切换镜像 nrm ls 2.4查看配置项 n…