Lora模塊點對點通訊測試程序(源碼+固件)
配合51單片機使用。
單片機源程序如下:
- /******************************************************************************/
- /* --安信可科技有限公司-- */
- /*
- // 函數說明:main.c
- // 說明:該程序用于測試lora模塊
- // 編寫人員: sky
- // 編寫日期: 2016-11-24
- // 版本號:V1.0
- // 維護日志:
- //
- //
- */
- // 免責聲明:該程序僅供參考學習,若自定義其他功能,請查看參考手冊
- // (c) Anxinke Corporation. All rights reserved.
- /******************************************************************************/
- #include "typedef.h"
- #include "gpio.h"
- #include "string.h"
- #include "uart.h"
- #include "SX1278.h"
- //#include "delay.h"
- void main(void) {
- unsigned char RF_REC_RLEN_i = 0;
- int flag = 0;
- int led = 0;
- unsigned char recv[30];
- uartInit();
- //uartSendString("READY!\r\n");
- P1M1 = 0X03;
- P1M0 = 0XFC;
- P3M1 &= 0XFC;
- P3M0 |= 0X04;
- //uartSendString("HERE!\r\n");
- register_rf_func(&ctrlTypefunc);
- SX1276Reset();
- SX1276LORA_INT();
- uartSendString("READY!\r\n");
- P32 = 1;
- P17 = 1;
- while (1) {
- if (P30 == 0 || P31 == 0) {
- P17 = 1;
- P32 = 0;
- SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
- uartSendString("hello world!\r\n");
- FUN_RF_SENDPACKET("ai-thinker", 10);
- Delay1s(1000);
- SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
- } else {
- P32 = 1;
- RF_EX0_STATUS = SX1276ReadBuffer( REG_LR_IRQFLAGS);
- if (RF_EX0_STATUS > 0) {
- if ((RF_EX0_STATUS & 0x40) == 0x40) {
- //GPIO_OUTPUT_SET(GPIO_ID_PIN(2),0);
- CRC_Value = SX1276ReadBuffer( REG_LR_MODEMCONFIG2);
- if (CRC_Value & 0x04 == 0x04) {
- SX1276WriteBuffer(REG_LR_FIFOADDRPTR, 0x00);
- SX1278_RLEN = SX1276ReadBuffer(REG_LR_NBRXBYTES);
- //uartSendString("recvieve data num=%d\r\n",SX1278_RLEN);
- lpTypefunc.lpSwitchEnStatus(enOpen);
- lpTypefunc.lpByteWritefunc(0x00);
- for (RF_REC_RLEN_i = 0; RF_REC_RLEN_i < SX1278_RLEN;
- RF_REC_RLEN_i++) {
- recv[RF_REC_RLEN_i] = lpTypefunc.lpByteReadfunc();
- }
- lpTypefunc.lpSwitchEnStatus(enClose);
- recv[RF_REC_RLEN_i] = '\0';
- if(strncmp(recv,"ai-thinker",10))
- {
- uartSendString("recieve\r\n");
- P17 = 0;
- }
- }
- // lpTypefunc.lpRecvDataTousr(recv,SX1278_RLEN);
- SX1276LoRaSetOpMode(Stdby_mode);
- SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value); //打開發送中斷
- SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
- SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X00);
- SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
- SX1276LoRaSetOpMode(Receiver_mode);
- // lpTypefunc.paSwitchCmdfunc(rxOpen);
- } else if ((RF_EX0_STATUS & 0x08) == 0x08) {
- SX1276LoRaSetOpMode(Stdby_mode);
- SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value); //打開發送中斷
- SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
- SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X00);
- SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
- SX1276LoRaSetOpMode(Receiver_mode);
- // lpTypefunc.paSwitchCmdfunc(rxOpen);
- } else if ((RF_EX0_STATUS & 0x04) == 0x04) {
- if ((RF_EX0_STATUS & 0x01) == 0x01) { //表示CAD 檢測到擴頻信號 模塊進入了接收狀態來接收數據
- SX1276LoRaSetOpMode(Stdby_mode);
- SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value); //打開發送中斷
- SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
- SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X02);
- SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
- SX1276LoRaSetOpMode(Receiver_mode);
- // lpTypefunc.paSwitchCmdfunc(rxOpen);
- } else {
- SX1276LoRaSetOpMode(Stdby_mode);
- SX1276WriteBuffer(REG_LR_IRQFLAGSMASK,
- IRQN_SEELP_Value); //打開發送中斷
- SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X00);
- SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0X00);
- SX1276LoRaSetOpMode(Sleep_mode);
- //PA_SEELP_OUT();
- }
- } else {
- SX1276LoRaSetOpMode(Stdby_mode);
- SX1276WriteBuffer(REG_LR_IRQFLAGSMASK, IRQN_RXD_Value); //打開發送中斷
- SX1276WriteBuffer(REG_LR_HOPPERIOD, PACKET_MIAX_Value);
- SX1276WriteBuffer( REG_LR_DIOMAPPING1, 0X02);
- SX1276WriteBuffer( REG_LR_DIOMAPPING2, 0x00);
- SX1276LoRaSetOpMode(Receiver_mode);
- // lpTypefunc.paSwitchCmdfunc(rxOpen);
- }
- RF_REC_RLEN_i = 0;
- SX1276WriteBuffer( REG_LR_IRQFLAGS, 0xff);
- Delay1s(300);
- } else {
- P17 = 1;
- }
- }
- }
- }
復制代碼
所有資料51hei提供下載:
lora測試版固件.zip
(2.58 KB, 下載次數: 105)
2018-6-8 10:22 上傳
點擊文件名下載附件
源碼.zip
(103.92 KB, 下載次數: 122)
2018-6-8 10:24 上傳
點擊文件名下載附件
|