标题: STM32实现SX1278 LORA通信源码与资料 [打印本页]

作者: czx814    时间: 2018-5-20 21:43
标题: STM32实现SX1278 LORA通信源码与资料
一个特别不错的STM32实现LORA通信的资料
SX1278芯片的中文资料下载:http://www.51hei.com/bbs/dpj-119513-1.html

简单基本收发功能测试,大部分照搬原参考程序,增加部分注释。
LORA只是工程一部分,现并未完善,跟LORA不相关的可直接忽视。

A板:收到数据后 回传ABCDE;
B板:收到数据后 回传VHELL!

硬件注意:只需最小系统,串口测试使用USART1;晶振都为外部12M..

仅供参考!



单片机源程序如下:
  1. #include "X_02.h"

  2. u32                 error0,error_i,crc,EMM,BE_EN,xx0;
  3. u32                 BE_EN0,BE_EN2;
  4. int main(void)
  5. {                                 
  6.         init();
  7.         gSendBuffer[0] = *"V";
  8.                 gSendBuffer[1] = *"H";
  9.                 gSendBuffer[2] = *"e";
  10.                 gSendBuffer[3] = *"l";
  11.                 gSendBuffer[4] = *"l";
  12.                 gSendBuffer[5] = *"!";
  13.                 gSendBuffer[6] = *" ";
  14.         while(1)
  15.         {               
  16.                 LORA_BOX();    //处理空闲模式,发射接收都在里面,主要的就是这个函数
  17.                 if(vvi502%40==0)        
  18.                 {
  19.                         vvi502++;
  20.                         EN_ROLA=1;                         //发射
  21.                         TES0=1;
  22.                         delay_ms(40);
  23.                         TES0=0;
  24.                 }
  25.         }
  26. }
  27. void init(void)
  28. {
  29.         Stm32_Clock_Init(SYSCLK_i/HSE_i);                //系统时钟设置          //12MHz*6=72M
  30.         GPIOX_init();                          //初始化通用硬件接口
  31.         delay_ms(200);
  32. //        ATMCxx_init();
  33.         LORA_int();
  34. //        DMA_init();                           //注意DMA与ADC初始顺序,否则规则传输顺序有误!?
  35. //        ADC_init();        
  36.         EXTIX_Init();
  37.         PVD_init();
  38.         Ci();
  39.         TIM2_Int_Init(20,719);                         //1us/data 200us
  40.         TIM3_Int_Init(64000,35);                //500ns/data 32ms         //预分频器35,重装载64000,溢出 32MS               
  41. }
  42. void GPIOX_init(void)
  43. {               
  44.         //AFIO寄存器操作异于其它寄存器;配置某位 其余位默认0配置
  45.         //关闭JTAG/SWD;PB3,4;PA13,14,15;PE2,3,4,5,6;引脚重定义,I/O可用;TIME3_CHX1~3完全重映射;
  46.         RCC->APB2ENR|=1<<0;//使能AFIO时钟
  47.         AFIO->MAPR&=0x00fff3ff;
  48.         AFIO->MAPR|=0x04000c00;
  49.         delay_us(20);         
  50.         RCC->APB2ENR&=~(1<<0);

  51. /*        RCC->APB2ENR|=1<<2;            //使能PORTA时钟 设置PA13/14/15 上拉输入  PA2/3 推挽输出 2M .max         
  52.         GPIOA->CRH&=0X000FFFFF;        
  53.         GPIOA->CRH|=0X88800000;
  54.         GPIOA->CRL&=0XFFFF00FF;        
  55.         GPIOA->CRL|=0X00002200;
  56.         
  57.         RCC->APB2ENR|=1<<3;            //使能PORTB时钟 设置PB3/4/5 上拉输入  PB0/1/6/7/12~15 推挽输出 2M .max         
  58.         GPIOB->CRH&=0X0000FFFF;        
  59.         GPIOB->CRH|=0X22220000;
  60.         GPIOB->CRL&=0X00000F00;        
  61.         GPIOB->CRL|=0X22888022;
  62.         
  63.         RCC->APB2ENR|=1<<4;            //使能PORTC时钟 设置PC12 上拉输入  P4/5 推挽输出 2M .max         
  64.         GPIOC->CRH&=0XFFF0FFFF;        
  65.         GPIOC->CRH|=0X00080000;
  66.         GPIOC->CRL&=0XFF00FFFF;        
  67.         GPIOC->CRL|=0X00220000;
  68.         
  69.         RCC->APB2ENR|=1<<5;            //使能PORTD时钟 设置PD2 上拉输入  
  70.         GPIOD->CRL&=0XFFFFF0FF;        
  71.         GPIOD->CRL|=0X00000800;*/
  72.         
  73.         RCC->APB2ENR|=1<<3;            //使能PORTB时钟 设置PB3/4/5 上拉输入  PB0/1/6/7/12~15 推挽输出 2M .max         
  74.         GPIOB->CRL&=0X0FFFFFFF;        
  75.         GPIOB->CRL|=0X20000000;
  76.         
  77.         TES0=0;
  78.         BE_i=0;
  79.         SK1=0;
  80.         SK2=0;
  81.         DOUT1=0;
  82.         DOUT2=0;
  83.         DOUT3=0;
  84.         DOUT4=0;
  85.         DOUT5=0;
  86.         DOUT6=0;
  87.         DOUT7=0;
  88.         DOUT8=0;
  89. }
  90. void PVD_init(void)//低压中断设置
  91. {
  92.         RCC->APB1ENR|=1<<28;    //使能PWR时钟
  93.         EXTI->IMR|=1<<16;                        //使能EXTI线16:PVD中断
  94. //        EXTI->EMR|=1<<16;                        //使能EXTI线16:PVD事件
  95.         EXTI->RTSR|=1<<16;                        //使能EXTI线16:PVD上升沿中断    WHY!!
  96. //        EXTI->FTSR|=1<<16;                //使能EXTI线16:PVD下降沿中断
  97.         PWR->CR|=0X90;                                //使能PVD 监测电压:2.6V
  98.         MY_NVIC_Init(1,1,PVD_IRQChannel,2);//抢占1,子优先级1,组2        
  99. }
  100.         
  101. void BOX(void)
  102. {}
  103. void ERR_x(void)
  104. {
  105.         if(error0||error_i)
  106.         {        
  107.                 EMM++;                                
  108.                 if(EMM%10)
  109.                 {                                       
  110.                         BE_EN=1;                                
  111.                 }
  112.                 else
  113.                 {
  114.                     BE_EN=0;
  115.                 }
  116.                 if(EMM>4)
  117.                 {
  118.                         EMM=0;
  119.                         BE_EN=0;
  120.                         error0=0;
  121. ……………………

  122. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
LORA FOR STM32_TES1.1.7z (2.56 MB, 下载次数: 712)




作者: szkalwa    时间: 2018-6-11 11:59
感谢分享!
作者: sulapon    时间: 2018-10-23 16:56
謝謝分享
作者: 小胖波波    时间: 2018-10-23 21:42
是数据打包发送吗
作者: 123zl    时间: 2018-11-7 15:09
嗨喽,占个楼

作者: zhaozhao88    时间: 2018-11-7 16:38
謝謝分享
作者: axibag    时间: 2018-11-12 16:22
是啥啊 没看懂啊
作者: tanpingsea    时间: 2018-11-15 16:52
下载来看看,可能怕没币
作者: cshxy    时间: 2018-11-25 21:28
感谢分享
作者: 443904894    时间: 2018-12-5 10:35
谢谢分享
作者: maoweiwei1995    时间: 2018-12-17 16:51
感谢帮顶
作者: lorabbitve    时间: 2019-1-25 10:05

謝謝分享
作者: ontheroad    时间: 2019-2-14 11:23
谢谢分享,主要想学习下Lora。
作者: ccajax    时间: 2019-3-6 22:24
搜藏了额
作者: astonzorro    时间: 2019-3-8 17:00
谢谢分享,主要想学习下Lora。
作者: 帝凌峰    时间: 2019-3-8 22:46
好像学习一下楼主的编程方法!!!
作者: ontheroad    时间: 2019-3-12 15:37
SX1278 STM32, 这个太给力了。
作者: tsljy    时间: 2019-4-8 06:07
感谢分享!黑币不够呀
作者: smartpilot    时间: 2019-4-9 10:18
感谢分享                  
作者: lzq365    时间: 2019-4-13 16:28
多谢楼主分享
作者: luotaim    时间: 2019-5-17 10:09
我刚看完手册,真的挺不错
作者: 123433054    时间: 2019-6-4 14:56
在多加些说明就更好了
作者: xiaokancheng    时间: 2019-7-9 16:20
已收藏,谢谢分享
作者: hbsjz    时间: 2019-7-15 17:48
感谢分享
作者: yanglongyu123    时间: 2019-7-16 08:54
这个是stm32和SX1278相连的吗???
作者: zzyzuibang    时间: 2019-7-31 16:10
学习学习
作者: jianfeii    时间: 2019-7-31 23:00
lora确实是挺好用的
作者: 烟花泪    时间: 2019-9-16 14:15
在学习中,多谢楼主分享

作者: xzh5508    时间: 2019-10-29 11:07
谢谢分享!
作者: llz930714    时间: 2019-12-3 21:50
感谢分享
作者: pillhe    时间: 2019-12-10 22:50
感謝分享
作者: l雷厉风行l    时间: 2019-12-13 15:56
如果能说明下各个管脚的作用就更好了
作者: lmusic    时间: 2020-2-2 11:35
官方只给1276没有1278原理图
作者: lmusic    时间: 2020-2-8 17:49
下载研究lora谢谢
作者: Alan_Wu    时间: 2020-2-24 22:22
感谢分享
作者: jiajia86    时间: 2020-3-9 14:32
谢谢分享。
作者: yby97    时间: 2020-4-3 12:54
谢谢分享
作者: 大漠落日    时间: 2020-4-8 13:38
谢谢分享,正在做开发,参考一下
作者: voica2008    时间: 2020-6-1 09:08
非常感谢你的分享
作者: chenziqiang    时间: 2020-6-1 21:33
非常感谢你的分享
作者: xiaoshigua    时间: 2020-10-18 21:49
lmusic 发表于 2020-2-2 11:35
官方只给1276没有1278原理图

sx1276和sx1278都一样驱动都是通用的
作者: pcf2000    时间: 2021-7-15 13:56
测试板的电路原理图呢,留半截不分享?!
作者: pcf2000    时间: 2021-7-15 13:57
可不可以分享一下电路原理图?!感谢
作者: 993347045    时间: 2021-11-2 23:54

好的东西,多谢分享。楼主给力~~~
作者: 993347045    时间: 2021-11-2 23:54
激动,再次感谢楼主
作者: antyme    时间: 2024-1-2 21:30
不带中文手册!!!!!
作者: cliang223    时间: 2024-1-2 23:11
想学习下Lora
作者: YYZZ052    时间: 2024-4-22 15:31
我想问,,这个怎么实现一对多配对????




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1