查看:3876|回复:4
MSP430成功驱动SX1278模块的代码工程
单片机源程序如下:
复制代码
复制代码
所有资料51hei提供下载:
Msp430 1278 20160421.zip(644.53 KB, 下载次数: 73)
单片机源程序如下:
- #include "Typedef.h"
- #if defined( USE_SX1276_RADIO )
- #include "sx1276.h"
- #include "sx1276-Hal.h"
- #include "sx1276-LoRa.h"
- U8 RegOpModed;
- void SX1276Init( void )
- {
- RESET_OUT();
- SDI_OUT();
- SDO_IN();
- SCK_OUT();
- SEL_OUT();
- SX1276Reset( );
-
SX1276Read(REG_LR_VERSION,&RegOpModed);
- SX1276SetLoRaOn();
- // Initialize LoRa modem
- SX1276LoRaInit();
- }
- void SX1276Reset( void )
- {
- U16 i;
- SX1276SetReset( RADIO_RESET_ON );
- for(i = 0 ; i< 1000; i++);
- for(i = 0 ; i< 1000; i++);
- // Wait 1ms
- //Delayms(1);
- SX1276SetReset( RADIO_RESET_OFF );
- for(i = 0 ; i< 6000; i++);
- for(i = 0 ; i< 6000; i++);
- // Delayms(6);
- }
- void SX1276SetLoRaOn(void)
- {
- U8 RegOpMode;
-
U8 RegDioMapping1,RegDioMapping2;
- SX1276LoRaSetOpMode( RFLR_OPMODE_SLEEP );
-
SX1276Read(REG_LR_OPMODE,&RegOpMode);
-
RegOpMode = (RegOpMode& RFLR_OPMODE_LONGRANGEMODE_MASK ) | RFLR_OPMODE_LONGRANGEMODE_ON;
- SX1276Write( REG_LR_OPMODE, RegOpMode );
- SX1276LoRaSetOpMode( RFLR_OPMODE_STANDBY );
- // RxDone RxTimeout FhssChangeChannel CadDone
- RegDioMapping1 = RFLR_DIOMAPPING1_DIO0_00 | RFLR_DIOMAPPING1_DIO1_00 | RFLR_DIOMAPPING1_DIO2_00 | RFLR_DIOMAPPING1_DIO3_00;
- // CadDetected ModeReady
- RegDioMapping2 = RFLR_DIOMAPPING2_DIO4_00 | RFLR_DIOMAPPING2_DIO5_00;
-
SX1276Write(REG_LR_DIOMAPPING1, RegDioMapping1);
- SX1276Write( REG_LR_DIOMAPPING2, RegDioMapping2);
- }
- bool SX1276GetLoRaOn( void )
- {
- return 1;
- }
- void SX1276SetOpMode( uint8_t opMode )
- {
- SX1276LoRaSetOpMode( opMode );
- }
- uint8_t SX1276GetOpMode( void )
- {
- return SX1276LoRaGetOpMode( );
- }
- double SX1276ReadRssi( void )
- {
- return SX1276LoRaReadRssi( );
- }
- uint8_t SX1276ReadRxGain( void )
- {
- return SX1276LoRaReadRxGain( );
- }
- uint8_t SX1276GetPacketRxGain( void )
- {
-
return SX1276LoRaGetPacketRxGain( );
- }
- double SX1276GetPacketRssi( void )
- {
- return SX1276LoRaGetPacketRssi( );
- }
- uint32_t SX1276GetPacketAfc( void )
- {
- while (1)
- {
- ;
- }
- }
- uint8_t SX1276GetRFState( void )
- {
- return SX1276LoRaGetRFState( );
- }
- uint32_t SX1276Process( void )
- {
- return 0;//SX1276LoRaProcess( );
- }
- #endif // USE_SX1276_RADIO
-
////////////////V2.04////////////////////
- // PCB: W-ZT-Z-V2.04 //
- // 设计:徐 2015年4月8日 //
- // 环境:IAR 5.30 //
- // 时钟+阶梯价+SX1278+SLE4442+AD电压检测
- // 单片机工作频率=7 995392 Hz
- //1、
- //2、
- //3、
-
//////////////////////////////////////////
- #include "msp430f149.h"
- #include "stdlib.h"
- #include "sx1276.h"
- #include "sx1276-LoRa.h"
- #include< stdbool.h>
- #include "PhyLyr.h"
- #include "Common.h"
- U8 SendFlag = 0;
- U8 SendTimerFlag = 0;
- U8 SendTimer = 0;
- void main(void)
- {
- U8 i;
- U8 CrcValue = 0;
- WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
- SCFQCTL=SCFQ_2M;//2M
- FLL_CTL0|= XCAP11PF; // Configure load caps
- BTCTL =BT_fCLK2_ACLK_DIV256+ BT_ADLY_1000 + LCDFREQ_128;
- IE2|=BTIE;
- WriteDefaultConfigParm();
- PW_ON;
- //IRQ_IN();
- P1IE=0X02;
- P1IES=0x00; //上升沿中断
- SX1276Init();
- SX1276LoRaStartRx();
- ENABLE_INT();
- _EINT(); //开放中断
- for(i = 0; i< 20; i++)
- {
- RFBuffer[i] = i;
- CrcValue += RFBuffer[i];
- }
- RFBuffer[i] = CrcValue;
- //SendTimerFlag = 1;
- while(1)
- {
- if(SendFlag == 1)
- {
- SendFlag = 0;
- LED_ON;
-
SX1276LoRaSetTxPacket(RFBuffer,21);
- }
- PhyLyr_Task();
- }
- }
- #pragma vector = BASICTIMER_VECTOR
- __interrupt void btinter(void)
- {
- SendFlag = 0;
- __bic_SR_register(SCG0);
- }
所有资料51hei提供下载:
Msp430 1278 20160421.zip(644.53 KB, 下载次数: 73)