移植LORAWAN NODE

移植lorawan节点 于stm32L系列

cubemx效率不言而喻,直接生成spi,uart,clock配置

移植lorawan-node的文件夹,主要有system文件夹,基本不需要改动,然后移植mac文件夹,不需要改动,最后移植boad文件夹,需要rtc-board.c,1276-board.c,其中rtc主要要打开rtc的LSE时钟源,1276-board.c需要实现SpiInout

uint16_t SpiInOut( Spi_t *obj, uint16_t outData )
{
	uint16_t rxData ;
	HAL_SPI_TransmitReceive( &hspi1, ( uint8_t * ) &outData, ( uint8_t* ) &rxData, 1, HAL_MAX_DELAY);
	return rxData;
}

信号强度差的时候需要注意 ,RFSW问题。

附上模块初始化的代码

 HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_SPI1_Init();
  SX1276IoInit();
   RtcInit(  );
   LoRaMacPrimitives.MacMcpsConfirm = McpsConfirm;
   LoRaMacPrimitives.MacMcpsIndication = McpsIndication;
   LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm;
   LoRaMacPrimitives.MacMlmeIndication = MlmeIndication;
   //LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel;
   LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, ACTIVE_REGION );
   
   mibReq.Type = MIB_ADR;
   mibReq.Param.AdrEnable = 1;
   LoRaMacMibSetRequestConfirm( &mibReq );

   mibReq.Type = MIB_PUBLIC_NETWORK;
   mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK;
   LoRaMacMibSetRequestConfirm( &mibReq );
   
   mibReq.Type = MIB_DEVICE_CLASS;
   mibReq.Param.Class = CLASS_C;
   LoRaMacMibSetRequestConfirm( &mibReq );
   
   MlmeReq_t mlmeReq;
   mlmeReq.Type = MLME_JOIN;

   mlmeReq.Req.Join.DevEui = DevEui;
   mlmeReq.Req.Join.AppEui = AppEui;
   mlmeReq.Req.Join.AppKey = AppKey;
   mlmeReq.Req.Join.Datarate = DR_0;
   
    if( LoRaMacMlmeRequest( &mlmeReq ) == LORAMAC_STATUS_OK )
	{
	}



这个文章比较早了,后面最新的协议栈有很大的改动,有问题可以互相交流

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值