概述
一、故事前提背景
之前项目中使用原子哥的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: 透明传输:相同地址 、 相同信道
参数: AB 地址一样, 信道一样, 速率一样
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成功
- 重要:命令字符串须以 "rn" 结尾。示例代码中确以这个结尾,但没标示其之重要作用。
// 代码已调试正常使用, 原创版权, 随便复制, 不谢~~~
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,5rn"); // 信道速率 (0-31,410Mhz-441Mhz) 4:9.6Kbps 5:19.2Kbps(默认)
vDelay_ms(t);
vLora_SendString("AT+UART=7,0rn" ); // 115200 无校检位
vDelay_ms(t);
vLora_SendString("AT+WLTIME=0rn" ); // 体眠时间 0:1秒(默) 1:2秒
vDelay_ms(t);
vLora_SendString("AT+TPOWER=3rn" ); // 发射功率 0:11dbm 1:14dbm 2:17dbm 3:20dbm(默认)
vDelay_ms(t);
vLora_SendString("AT+CWMODE=0rn" ); // 工作模式 0:一般(默) 1:唤醒 2:省电 3:信号强度
vDelay_ms(t);
vLora_SendString("AT+TMODE=0rn"); // 发送状态 0:透明(默) 1:定向
vDelay_ms(t);
vLora_SendString("AT+ADDR=00,01rn" ); // 模块地址 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
本篇完结,如有错漏,欢迎纠正~~
最后
以上就是年轻舞蹈为你收集整理的STM32开发 --- 正点原子LORA模块调试记录的全部内容,希望文章能够帮你解决STM32开发 --- 正点原子LORA模块调试记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复