标题: lora模块测试板stc15单片机源程序 [打印本页]

作者: 年少北    时间: 2018-6-8 10:25
标题: lora模块测试板stc15单片机源程序
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)



作者: ontheroad    时间: 2019-2-14 11:02
收藏了!正在研究 Lora。
作者: HXHNTTXLLA    时间: 2019-2-28 16:27
多谢楼主
作者: zxg_751005    时间: 2019-11-3 11:17
很好,和STM32的lora程序对比着看,有利于理解lora
作者: xzlxzl    时间: 2019-12-24 11:35
这是安信可的源码吗




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