STM32开发 --- 正点原子LORA模块调试记录


一、故事前提背景

之前项目中使用原子哥的LORA模块,曾花了近半个月才调通使用(别笑,人笨就得工夫多)。

近日在项目的显示板第9板中修改电路板后,  出现问题:LORA模块不能接收. 

重查LORA资料, 发觉之前刨得很熟, 调试了半个月的老朋友,变陌生人了!  需重新学习熟悉.  归结原因, 是之前没整理好资料, 以使后来方便迅速翻查熟悉。

目录

一、正点原子 LORA模块 优缺点

二、引脚解释

三、工作参数 

四、传输模式

五、编程要点:


一、正点原子 LORA模块 优缺点

原子哥家的LORA模块, 有插针版、邮票孔版,使用上:电气参数、代码一样。插针版用排线直连开发板,邮票孔版嘛, 我当时画了个转接板配合调试.

先陈述一下模块使用过程中发现优缺点,放文章后怕没耐性翻到最后。

优点: 

  • USART通信,  收发简单,  配合DMA接收特省事, 。 
  • 把参数的配置也封装得很方便,usart发几条命令就成,调过安信可LORA模块的兄弟就明白了,那才叫苦。

缺点: 

  • 示例代码啰嗦,技术支持马虎。 原子哥,你别查我水表,我给你们多写几篇产品后期教程!但你们的示例代码真的.....。
  • 速度慢. 速度慢. 速度慢!  使用逻辑分析仪观察,  通信时每1ms只有1字节数据,其中数据占用86us, 其余900us是空白的!!!!!! 这一点特意问过技术,回复没干货,问了也白问。 另外,发送时, 数据不满足一包(56个字节)时, 会等待80ms才开始发送. 接收时, 也会有20ms等待时间!!!!!  你算算,100字节要多长时间。
  • 实测数据太少,最起码的商家做个通信距离数据实测吖,难道我们一千个人买这模块, 那不得做一千次测试??

二、引脚解释

  • MD0   配合AUX引脚切换工作模式, 【配置模式:MD0=1,AUX=0】、【通信模式:MD0=0,AUX=0】
  • AUX   同上
  • RXD   接开发板的 USARTx - TX引脚,注意:是TX不是RX
  • TXD   接开发板的 USARTx - RX引脚
  • GND
  • VCC 3.3~5.0 V

三、工作参数 

下面是我自己的几个重要参数, 请漠视右边的地址参数,因为我三个板子收发数据,重点看:模块配置软件操作说明.pdf

波特率:      115200                                  C板 模块地址:  1

校验位:      无                                          D板 模块地址:  2

空中速率:  19.2K                                     V板 模块地址:  3

休眠时间:  1S

信道:          5

发射功率:   20dBm

!!!要通信的模块,这几个参数必须一致,否则无法通信。!!!


四、传输模式

配合使用, 可以完成各种发送和接收工作.

1: 透明传输相同地址 、 相同信道

参数: A\B 地址一样,  信道一样, 速率一样

A发送:  AA BB CC DD EE 

B收到:  AA BB CC DD EE。

用户数据可以是字符或 16进制数据形式)


2: 定向传输: 指定地址 、指定信道 

发送格式: 高位地址+ 低位地址+ 信道+ 用户数据。

A设备, 地址:0x1400,信道:0x17, 23 信道 、433Mhz

B设备, 地址:0x1234,信道: 0x10,16 信道、 426Mhz

A发送:12 34 10 AA BB CC,其中 1234 为模块 B 的地址,10 为信道,

B收到: AA BB CC。


3:广播与数据监听:

地址: 0xFFFF

发送: 可以被相同信道上任意地址的模块收到

接收: 可以接收相同信道上任意地址模块发送的数据


五、编程要点:

编程顺序是:  1:GPIO初始化 > 2:USART初始化 > 3:模块参数写入 > 3:进入接收/发送模式

GPIO和USART的初始化没什么特别要注意的,就主要是参数写入和收发通信。

参数配置写入、接收、发送都是通过usart进行的,我们只要注意当前的工作模式、代码顺序和数据格式就可以了。

下面将以一段参数设置代码说明。如需要整个c文件的,留言邮箱,我已整理好很方便移植。没发在这上面,下载要积分。

这段代码的得来不易。MLGB,  示例代码中功能各种啰嗦,各种绕,好几个点没说明白,问过技术、问过Q群,都没得到准确的答案.害得调试时浪费了很多时间,从8月份断断续续调通,到现在11月初,才发现如何用代码配置参数.期间参数配置一直失败,几经摸索才发现各种暗雷。这个真的是大坑,一想起这个就火大,浪费了多少日子。

  • 进入配置模式MD0=1,AUX=0
  • 命令间延时>80ms,每个命令间要延时,应该是用于确定'包'的完整,经验:试过60ms配置失败,90ms成功
  • 重要:命令字符串须以 "\r\n" 结尾。示例代码中确以这个结尾,但没标示其之重要作用。
// 代码已调试正常使用, 原创版权, 随便复制, 不谢~~~

void vLora_Set(void)
{   
    char t = 110;                 // 延时时间,试过60ms失败
                                              
    vDelay_ms(t);        
    while(  (LORA_AUX_GPIOx ->IDR & LORA_AUX_PINx)!=0);     // 等待AUX为0,即非工作状态
    
    vMD0(1);                                   // 配置模式,MD0=1,AUX=0
    vSys_SetGPIO(LORA_AUX_GPIOx ,LORA_AUX_PINx ,G_MODE_OUT  ,G_OTYPE_PP ,G_OSPEED_50M ,G_PUPD_DOWN ,0);
    vAUX(0);     
                 
    vDelay_ms(t);   
    vLora_SendString("AT+WLRATE=5,5\r\n");     // 信道\速率  (0-31,410Mhz-441Mhz)     4:9.6Kbps  5:19.2Kbps(默认) 
    
    vDelay_ms(t);  
    vLora_SendString("AT+UART=7,0\r\n"  );     // 115200 无校检位
    
    vDelay_ms(t);  
    vLora_SendString("AT+WLTIME=0\r\n" );      // 体眠时间     0:1秒(默)  1:2秒
   
    vDelay_ms(t);  
    vLora_SendString("AT+TPOWER=3\r\n" );      // 发射功率   0:11dbm   1:14dbm  2:17dbm  3:20dbm(默认)
    
    vDelay_ms(t);  
    vLora_SendString("AT+CWMODE=0\r\n" );      // 工作模式   0:一般(默) 1:唤醒    2:省电    3:信号强度
    
    vDelay_ms(t);  
    vLora_SendString("AT+TMODE=0\r\n");        // 发送状态     0:透明(默) 1:定向
    
    vDelay_ms(t);  
    vLora_SendString("AT+ADDR=00,01\r\n" );   // 模块地址  16进制,高低位
    
    vDelay_ms(t);       
    vMD0(0);                                   // 退出配置模式, MDO=0,AUX=0
    vSys_SetGPIO(LORA_AUX_GPIOx ,LORA_AUX_PINx ,G_MODE_IN ,G_OTYPE_PP ,G_OSPEED_50M ,G_PUPD_DOWN ,0);   
    vDelay_ms(t);         
}

完整代码下载:

正点原子LORA代码重写: https://download.csdn.net/download/zhouml_msn/17264736


本篇完结,如有错漏,欢迎纠正~~

  • 30
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 59
    评论
正点原子LORA模块是一种无线通信模块,主要用于远距离低功耗通信。下面是正点原子LORA模块的使用步骤: 1. 硬件连接:将LORA模块通过杜邦线连接到开发板或者其他控制器上。通常需要连接VCC、GND、TXD、RXD等引脚。 2. 编程设置:在程序中引入LORA模块的库文件,然后通过编程进行设置。首先,需要设置LORA模式为接收模式或发送模式。通过设置工作频率、信道、传输速率等参数,以满足通信需求。根据具体情况,还可以设置接收或发送缓冲区的大小。 3. 发送数据:在发送模式下,将要发送的数据写入发送缓冲区,然后调用相应的发送函数将数据发送出去。在发送完成后可以等待接收确认信号或者直接发送下一条数据。 4. 接收数据:在接收模式下,LORA模块会不断监听信道上的数据。当接收到数据时,将数据读取到接收缓冲区中。然后,可以对接收到的数据进行处理,比如解析数据包、进行数据验证等操作。 5. 错误处理:在使用LORA模块时,需要注意错误的处理。比如,当发送数据失败时,可以根据错误码进行错误处理,比如重新发送数据或者进行其他操作。 需要注意的是,LORA模块的使用还需要根据具体的开发板或者控制器进行适配和调试。通常情况下,还需要了解LORA模块的具体功能和操作说明,以便更好地使用和调试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 59
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值