找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5612|回复: 4
打印 上一主题 下一主题
收起左侧

lora模块测试板stc15单片机源程序

[复制链接]
跳转到指定楼层
楼主
ID:347412 发表于 2018-6-8 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Lora模块点对点通讯测试程序(源码+固件)
配合51单片机使用。

单片机源程序如下:
  1. /******************************************************************************/
  2. /*                        --安信可科技有限公司--                        */
  3. /*
  4. //  函数说明:main.c                                                              
  5. //  说明:该程序用于测试lora模块                                                               
  6. //  编写人员: sky                                                                 
  7. // 编写日期: 2016-11-24                                                         
  8. // 版本号:V1.0
  9. // 维护日志:
  10. //
  11. //                                                         
  12. */
  13. // 免责声明:该程序仅供参考学习,若自定义其他功能,请查看参考手册
  14. // (c) Anxinke Corporation. All rights reserved.                                                               
  15. /******************************************************************************/
  16. #include "typedef.h"
  17. #include "gpio.h"
  18. #include "string.h"
  19. #include "uart.h"
  20. #include "SX1278.h"
  21. //#include "delay.h"

  22. void main(void) {
  23.         unsigned char RF_REC_RLEN_i = 0;
  24.         int flag = 0;
  25.         int led = 0;
  26.         unsigned char recv[30];
  27.         uartInit();
  28.         //uartSendString("READY!\r\n");

  29.         P1M1 = 0X03;
  30.         P1M0 = 0XFC;
  31.         P3M1 &= 0XFC;
  32.         P3M0 |= 0X04;
  33.         //uartSendString("HERE!\r\n");
  34.         register_rf_func(&ctrlTypefunc);
  35.         SX1276Reset();
  36.         SX1276LORA_INT();

  37.         uartSendString("READY!\r\n");
  38.         P32 = 1;
  39.         P17 = 1;
  40.         while (1) {
  41.                 if (P30 == 0 || P31 == 0) {
  42.                         P17 = 1;
  43.                         P32 = 0;
  44.                         SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);

  45.                         uartSendString("hello world!\r\n");
  46.                         FUN_RF_SENDPACKET("ai-thinker", 10);
  47.                         Delay1s(1000);
  48.                         SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
  49.                 } else {
  50.                         P32 = 1;
  51.                         RF_EX0_STATUS = SX1276ReadBuffer( REG_LR_IRQFLAGS);
  52.                         if (RF_EX0_STATUS > 0) {
  53.                                 if ((RF_EX0_STATUS & 0x40) == 0x40) {
  54.                                         //GPIO_OUTPUT_SET(GPIO_ID_PIN(2),0);
  55.                                         CRC_Value = SX1276ReadBuffer( REG_LR_MODEMCONFIG2);
  56.                                         if (CRC_Value & 0x04 == 0x04) {
  57.                                                 SX1276WriteBuffer(REG_LR_FIFOADDRPTR, 0x00);
  58.                                                 SX1278_RLEN = SX1276ReadBuffer(REG_LR_NBRXBYTES);
  59.                                                 //uartSendString("recvieve data num=%d\r\n",SX1278_RLEN);
  60.                                                 lpTypefunc.lpSwitchEnStatus(enOpen);
  61.                                                 lpTypefunc.lpByteWritefunc(0x00);
  62.                                                 for (RF_REC_RLEN_i = 0; RF_REC_RLEN_i < SX1278_RLEN;
  63.                                                                 RF_REC_RLEN_i++) {
  64.                                                         recv[RF_REC_RLEN_i] = lpTypefunc.lpByteReadfunc();
  65.                                                 }
  66.                                                 lpTypefunc.lpSwitchEnStatus(enClose);
  67.                                                 recv[RF_REC_RLEN_i] = '\0';
  68.                                                 if(strncmp(recv,"ai-thinker",10))
  69.                                                 {
  70.                                                 uartSendString("recieve\r\n");
  71.                                                 P17 = 0;
  72.                                                 }
  73.                                         }
  74. //            lpTypefunc.lpRecvDataTousr(recv,SX1278_RLEN);
  75.                                         SX1276LoRaSetOpMode(Stdby_mode);
  76.                                         SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value); //打开发送中断
  77.                                         SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
  78.                                         SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X00);
  79.                                         SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
  80.                                         SX1276LoRaSetOpMode(Receiver_mode);
  81. //            lpTypefunc.paSwitchCmdfunc(rxOpen);
  82.                                 } else if ((RF_EX0_STATUS & 0x08) == 0x08) {
  83.                                         SX1276LoRaSetOpMode(Stdby_mode);
  84.                                         SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value); //打开发送中断
  85.                                         SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
  86.                                         SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X00);
  87.                                         SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
  88.                                         SX1276LoRaSetOpMode(Receiver_mode);
  89. //            lpTypefunc.paSwitchCmdfunc(rxOpen);
  90.                                 } else if ((RF_EX0_STATUS & 0x04) == 0x04) {
  91.                                         if ((RF_EX0_STATUS & 0x01) == 0x01) { //表示CAD 检测到扩频信号 模块进入了接收状态来接收数据
  92.                                                 SX1276LoRaSetOpMode(Stdby_mode);
  93.                                                 SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value); //打开发送中断
  94.                                                 SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
  95.                                                 SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X02);
  96.                                                 SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
  97.                                                 SX1276LoRaSetOpMode(Receiver_mode);
  98. //              lpTypefunc.paSwitchCmdfunc(rxOpen);
  99.                                         } else {                          
  100.                                                 SX1276LoRaSetOpMode(Stdby_mode);
  101.                                                 SX1276WriteBuffer(REG_LR_IRQFLAGSMASK,
  102.                                                                 IRQN_SEELP_Value);   //打开发送中断
  103.                                                 SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X00);
  104.                                                 SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0X00);
  105.                                                 SX1276LoRaSetOpMode(Sleep_mode);
  106.                                                 //PA_SEELP_OUT();
  107.                                         }
  108.                                 } else {
  109.                                         SX1276LoRaSetOpMode(Stdby_mode);
  110.                                         SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value);  //打开发送中断
  111.                                         SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
  112.                                         SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X02);
  113.                                         SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
  114.                                         SX1276LoRaSetOpMode(Receiver_mode);
  115. //            lpTypefunc.paSwitchCmdfunc(rxOpen);
  116.                                 }
  117.                                 RF_REC_RLEN_i = 0;
  118.                                 SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
  119.                                 Delay1s(300);
  120.                         } else {
  121.                                 P17 = 1;
  122.                         }
  123.                 }

  124.         }
  125. }
复制代码

所有资料51hei提供下载:
lora测试版固件.zip (2.58 KB, 下载次数: 105)
源码.zip (103.92 KB, 下载次数: 122)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:445069 发表于 2019-2-14 11:02 | 只看该作者
收藏了!正在研究 Lora。
回复

使用道具 举报

板凳
ID:55767 发表于 2019-2-28 16:27 | 只看该作者
多谢楼主
回复

使用道具 举报

地板
ID:631046 发表于 2019-11-3 11:17 | 只看该作者
很好,和STM32的lora程序对比着看,有利于理解lora
回复

使用道具 举报

5#
ID:670938 发表于 2019-12-24 11:35 | 只看该作者
这是安信可的源码吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表