標題:
SX1276_EasyLink_按鍵源碼 lora資料
[打印本頁]
作者:
丁后莊
時間:
2018-10-21 15:05
標題:
SX1276_EasyLink_按鍵源碼 lora資料
sx1276可以參考下
0.png
(37.68 KB, 下載次數(shù): 29)
下載附件
2018-10-22 17:34 上傳
單片機源程序如下:
////////////////////////////////////////////////////////////////////////////////
// 文件名: main_tx/rx
// 版本: v1.0
// 工作環(huán)境: IAR v5.30
// 作者: 于海波
// 生成日期: 2013.12
// 功能: A發(fā)送包給B,黃燈閃爍,B模塊接到數(shù)據(jù)紅燈閃爍,B將數(shù)據(jù)回傳給A模塊,
// A接到數(shù)據(jù)后紅燈閃爍, 循環(huán)次操作,
// 相關文件:
// 修改日志:
////////////////////////////////////////////////////////////////////////////////
#include <string.h>
#include <stdint.h>
#include <stdbool.h>
#include "driver.h"
#include "sx1276-f4152-Hal.h"
#include "LSD_RF_SX1276.h"
#include "LSD_RF_APPrf.h"
#include "clock.h"
//===================================定義變量===================================================
long SysTick = 0;
uint8_t TXbuffer[30]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29};
uint8_t WakeAddr[8]={5,6,7,8,9,10,11,7};
uint8_t Rxbuffer[64];
//===================================函數(shù)聲明===================================================
//===============================================================================================
////////////////////////////////////////////////////////////////////////////////
// 功能描述 : 主函數(shù)
// 輸入?yún)?shù) : 無
// 返回參數(shù) : 無
// 說明 :
////////////////////////////////////////////////////////////////////////////////
typedef enum{
Nope,
B1080bps,//BW = 125KHz SF = 9 CR = 4_6
B4000bps,//BW = 125KHz SF = 7 CR = 4_5
B14000bps,//BW = 500KHz SF = 7 CR = 4_6
}t_Baudrate;
t_Baudrate Baudrate = Nope;
unsigned char *point;
unsigned char LCD_p[9] = {0,0,0,0,0,8,0,1,0xff};
int T_Cnt = 0;
int R_Cnt = 0;
bool RESET_Flag = false;
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // 關閉看門狗
platform_init(); //測試底板初始化
LEDONBAND(LEDALL); //初始化過程點亮所有LED燈
KEYBOARD_DIR &=~ (KEY_S1+KEY_S2);
KEYBOARD_IFG &=~ (KEY_S1+KEY_S2);
KEYBOARD_IES |= (KEY_S1+KEY_S2);
KEYBOARD_IE |= (KEY_S1+KEY_S2);
point = (unsigned char *)(&(G_LoRaConfig.BandWidth));
flash_read(FLASH_ADDRESS_D,point,3*2);
if(G_LoRaConfig.BandWidth>BW500KHZ){
G_LoRaConfig.BandWidth=BW125KHZ;
G_LoRaConfig.SpreadingFactor = SF09;
G_LoRaConfig.CodingRate = CR_4_6;
flash_seg_clear(FLASH_ADDRESS_D);//寫之前必清除
flash_write(FLASH_ADDRESS_D,point,3*2);
}
if(G_LoRaConfig.BandWidth==BW500KHZ){
Baudrate = B14000bps;
LCD_p[8] = 1;
LCD_p[7] = 4;
LCD_p[6] = 0;
LCD_p[5] = 0;
LCD_p[4] = 0;
}
else{
if(G_LoRaConfig.SpreadingFactor==SF07){
Baudrate = B4000bps;
LCD_p[8] =0xff;
LCD_p[7] = 4;
LCD_p[6] = 0;
LCD_p[5] = 0;
LCD_p[4] = 0;
}
else{
Baudrate = B1080bps;
LCD_p[8] =0xff;
LCD_p[7] = 1;
LCD_p[6] = 0;
LCD_p[5] = 8;
LCD_p[4] = 0;
}
}
lcd_init();
LCD_Disp_ALL_Num(LCD_p);
//配置各個參數(shù)
G_LoRaConfig.LoRa_Freq = 470000000; //中心頻點470MHz
//G_LoRaConfig.BandWidth = BW125KHZ; //BW = 125KHz
//G_LoRaConfig.SpreadingFactor = SF09; //SF = 9
//G_LoRaConfig.CodingRate = CR_4_6; //CR = 4/6
G_LoRaConfig.PowerCfig = 15; //19±dBm
G_LoRaConfig.MaxPowerOn = true;
G_LoRaConfig.CRCON = true; //CRC開啟
G_LoRaConfig.ExplicitHeaderOn = true; //Header開啟
G_LoRaConfig.PayloadLength = 20; //數(shù)據(jù)包長度
if(SX127x_init()!=NORMAL) WDTCTL=0; //無線模塊初始化失敗復位
KEYBOARD_IE |= (KEY_S1+KEY_S2);
_EINT(); //開總中斷
LEDOFFBIT(LEDALL); //初始化完畢關閉所有LED燈
ON_Timerout(); //開啟定時器,1s一發(fā)數(shù)據(jù)
while(1)
{
LPM3;
if(RESET_Flag==true){
flash_seg_clear(FLASH_ADDRESS_D);//寫之前必清除
flash_write(FLASH_ADDRESS_D,point,3*2);
WDTCTL = 0;//RESET
}
LSD_RF_RXmode(); //每次發(fā)送一包數(shù)據(jù)后,進入接收狀態(tài),等待B模塊應答
LCD_p[0] = T_Cnt%10;
LCD_p[1] = T_Cnt/10%10;
LCD_p[2] = R_Cnt%10;
LCD_p[3] = R_Cnt/10%10;
LCD_Disp_ALL_Num(LCD_p);
if(T_Cnt>=100)
T_Cnt = 0;
if(R_Cnt>=100)
R_Cnt = 0;
}
}
////////////////////////////////////////////////////////////////////////////////
// 功能描述 : 無線接收數(shù)據(jù)中斷入口
// 輸入?yún)?shù) : 無
// 返回參數(shù) : 無
// 說明 :
////////////////////////////////////////////////////////////////////////////////
#pragma vector = PORT1_VECTOR
__interrupt void port1_isr(void)
{
if(KEYBOARD_IFG&(KEY_ALL)){
char Keys_Flag = KEYBOARD_IFG&(KEY_ALL);
switch(Keys_Flag&(KEY_S1|KEY_S2)){
case KEY_S1:
switch(Baudrate){
case B1080bps:
G_LoRaConfig.BandWidth = BW125KHZ; //BW = 125KHz
G_LoRaConfig.SpreadingFactor = SF07; //SF = 9
G_LoRaConfig.CodingRate = CR_4_5; //CR = 4/6
Baudrate = B4000bps;
break;
case B4000bps:
G_LoRaConfig.BandWidth = BW500KHZ; //BW = 125KHz
G_LoRaConfig.SpreadingFactor = SF07; //SF = 9
G_LoRaConfig.CodingRate = CR_4_6; //CR = 4/6
Baudrate = B14000bps;
break;
case B14000bps:
default:
G_LoRaConfig.BandWidth = BW125KHZ; //BW = 125KHz
G_LoRaConfig.SpreadingFactor = SF09; //SF = 9
G_LoRaConfig.CodingRate = CR_4_6; //CR = 4/6
Baudrate = B1080bps;
break;
}
RESET_Flag = true;
LPM3_EXIT;
break;
case KEY_S2:
T_Cnt = 0;
R_Cnt = 0;
break;
default:
break;
}
KEYBOARD_IFG &= ~KEY_ALL;
return;
}
if(DIO0_IFG) //判斷是否是DIO0引起的中斷
{
DIO0_IFG = 0; //清除DIO0中斷標志位
LSD_RF_RxPacket(Rxbuffer); //接收數(shù)據(jù)包
if((Rxbuffer[2]==2)&&(Rxbuffer[5]==5))
{
LEDONBIT(LED1); //狀態(tài)指示燈
DelayMs(60);
LEDOFFBIT(LED1); //狀態(tài)指示燈
R_Cnt++;
}
LPM3_EXIT;
}
P1IFG=0;
}
////////////////////////////////////////////////////////////////////////////////
// 功能描述 : 超時定時器
// 輸入?yún)?shù) : 無
// 返回參數(shù) : 無
// 說明 : 用于誤喚醒,或喚醒失敗后超時時間到后重新進入WOR
////////////////////////////////////////////////////////////////////////////////
#pragma vector = TIMER1_A0_VECTOR
__interrupt void Timer1_A0_ISR()
{
LEDONBIT(LED3);//發(fā)送狀態(tài)指示燈
G_LoRaConfig.PayloadLength = 20;
LSD_RF_SendPacket(TXbuffer);//發(fā)送30個字節(jié)數(shù)據(jù)測試
T_Cnt++;
LEDOFFBIT(LED3);//發(fā)送狀態(tài)指示燈
LPM3_EXIT;
}
復制代碼
所有資料51hei提供下載:
SX1276_EasyLink_2F717NXX按鍵.zip
(398.45 KB, 下載次數(shù): 18)
2018-10-21 15:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1