lora通信开发

目录

什么是Lora,这个技术有什么有优势,其他的无线通信技术还有什么

Lora的系统架构

准备前提

 芯片相关资料下载

开发环境部署

串口代码解析

SPI通信

LORA模块的通讯模式是从哪来的

扩频因子的配置

编码率的配置

信号带宽的配置

无线数据发送配置

无线数据接收配置

单片机内部EEPROM的读写

flash介绍

为什么要操作EEPROM,这个存储内存有什么作用

操作外设

程序移植

无线发射功能后续的优化

下一步优化

低功耗模式

总结低功耗模式的开发流程

低功耗的代码开发

总结


什么是Lora,这个技术有什么有优势,其他的无线通信技术还有什么

低功耗广域网(LPWAN)是物联网解决物联网远距离,LPWAN不只是一种技术,而是代表对的一簇有着各种形式的低功耗广域网技术,只不过Lora是LPWAN中最成熟,应用最广泛的技术之一

在早期的研究中,主要有三种技术为物联网体系提供数据传输服务

  • 远距离高速率传输协议,包括蜂窝网络通信技术,如3G,4G,5G等相关技术
  • 第二类是近距离高速传输技术,如WIFI ,蓝牙,主要用在家庭和日常生活中
  • 第三类是近距离低功耗,如Zigbee ,RFID

上面三类技术都要求比较高的信噪比,无法在复杂环境中实现远距离低功耗传输,LPWAN技术填补了这一技术空白。

Lora是Long Range Communication的简称,可达到-148dBm的接收灵敏度,以0.3~50kbps换取更远的通讯距离大概15km和低功耗。

物联网通信icon-default.png?t=O83Ahttps://iot-book.github.io/6_%E6%95%B0%E5%AD%97%E8%B0%83%E5%88%B6%E4%B8%8E%E8%A7%A3%E8%B0%83/S7_%E7%9B%B8%E5%AF%B9%E5%AE%8C%E6%95%B4%E7%9A%84%E9%80%9A%E4%BF%A1%E7%B3%BB%E7%BB%9F%E5%AE%9E%E7%8E%B0/

Lora的系统架构

通信过程。实现Lora通信需要节点,网关,网络服务器和应用服务器。网关收到数据包后,对数据包进行解码,并将解码结果通过蜂窝或者有线网络传输给网络服务器,这一阶段使用TCP/IP 进行传输。网络服务器根据内容将数据发送至不同的应用服务器,供用户读取和使用,这一阶段也使用TCP/IP进行传输和加密。

准备前提

 芯片相关资料下载

官网icon-default.png?t=O83Ahttps://www.st.com

开发流程

先移植代码后分析代码,根据分析的结果拓展代码的功能

开发环境部署

IAR开发软件下载好后,搭建开发环境

获取官方库文件

我有个想法,既然官方都会外设驱动代码,如果是我来开发的话,我肯定拿到案例开始测试代码

先自己玩明白

有个问题,为什么GPIO有那么多的工作模式

开漏和推挽的作用分别是什么

STM8对sx1278有什么作用

SPI起到什么作用:明白了,串口将数据发送给STM8,STM8通过SPI通信的方式发送给sx1278,之后数据以无线通信的方式传递出去。

实际工作中,外设的代码,我们先移植别人的代码,实现功能,然后再分析代码。

接下来我会根据开发手册研究定时器的计时方法

typedef enum
{
  TIM4_Prescaler_1    = ((uint8_t)0x00), /*!< Time base Prescaler = 1 (No effect)*/
  TIM4_Prescaler_2     = ((uint8_t)0x01),  /*!< Time base Prescaler = 2 */
  TIM4_Prescaler_4     = ((uint8_t)0x02),  /*!< Time base Prescaler = 4 */
  TIM4_Prescaler_8    = ((uint8_t)0x03),  /*!< Time base Prescaler = 8 */
  TIM4_Prescaler_16    = ((uint8_t)0x04),  /*!< Time base Prescaler = 16 */
  TIM4_Prescaler_32    = ((uint8_t)0x05),  /*!< Time base Prescaler = 32 */
  TIM4_Prescaler_64    = ((uint8_t)0x06),  /*!< Time base Prescaler = 64 */
  TIM4_Prescaler_128   = ((uint8_t)0x07),  /*!< Time base Prescaler = 128 */
  TIM4_Prescaler_256   = ((uint8_t)0x08),  /*!< Time base Prescaler = 256 */
  TIM4_Prescaler_512   = ((uint8_t)0x09),  /*!< Time base Prescaler = 512 */
  TIM4_Prescaler_1024  = ((uint8_t)0x0A),  /*!< Time base Prescaler = 1024 */
  TIM4_Prescaler_2048  = ((uint8_t)0x0B),  /*!< Time base Prescaler = 2048 */
  TIM4_Prescaler_4096  = ((uint8_t)0x0C),  /*!< Time base Prescaler = 4096 */
  TIM4_Prescaler_8192  = ((uint8_t)0x0D),  /*!< Time base Prescaler = 8196 */
  TIM4_Prescaler_16384 = ((uint8_t)0x0E),  /*!< Time base Prescaler = 16384 */
  TIM4_Prescaler_32768 = ((uint8_t)0x0F)   /*!< Time base Prescaler = 32768 */
}TIM4_Prescaler_TypeDef;




void TIM4_TimeBaseInit(TIM4_Prescaler_TypeDef TIM4_Prescaler,
                       uint8_t TIM4_Period)
{
  /* Check TIM4 prescaler value */
  assert_param(IS_TIM4_PRESCALER(TIM4_Prescaler));
  /* Set the Autoreload value */
  TIM4->ARR = (uint8_t)(TIM4_Period);
  /* Set the Prescaler value */
  TIM4->PSCR = (uint8_t)(TIM4_Prescaler);
}

TIM4_Prescaler表示定时器工作时钟,TIM4_Period表示定时器需要计数个数

根据定时器工作时钟可以算出计数周期,分频越大,计数周期越大,以1ms为例

分频64

计数周期: 1 / (16M / 32768) =4us      计数个数:1ms / 4us =250

为什么还要创建一个标准工程  ?对官方提供的代码整理和封装?

串口代码解析

发送数据寄存器为空时,触发中断使用`USART_SendDta8()`发送一个字节。直到缓冲中的数据发送完毕关闭中断。

#define TxBufferSize   (countof(TxBuffer) - 1)
uint8_t TxBuffer[] = "\n\rHyperTerminal Interrupt: USART-Hyperterminal communication using Interrupt\n\r";

uint8_t NbrOfDataToTransfer = TxBufferSize;
uint8_t TxCounter = 0;


INTERRUPT_HANDLER(USART_TX_IRQHandler, 27)
{
  STM_EVAL_LEDInit(LED2);
  
  /* Write one byte to the transmit data register */
  USART_SendData8(TxBuffer[TxCounter++]);

  if (TxCounter == NbrOfDataToTransfer)
  {
    STM_EVAL_LEDToggle(LED2);
    /* Disable the USART Transmit interrupt */
    USART_ITConfig(USART_IT_TXE, DISABLE);
  }
}

SPI通信

简单介绍下spi通信。spi是一种全双工,高速的同步的通信方式,spi有四根通信线分别是nss、SCLK、MOSI、MISO,SCLK是由主控发送的同步信号`SPI协议主要作为主控芯片去配置外围谁被的接口协

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值