本文记录在SX1278 在STM32F103 驱动,实现收发数据功能。(SPI 驱动参考 https://www.cnblogs.com/T0213-ZH/articles/10573067.html)
编译环境:MDK5.25
STM32标准库:V3.5.0
SX1278驱动:sx12xxDrivers-V2.1.0 (https://www.semtech.com/uploads/documents/sx12xxDrivers-V2.1.0.zip)
相关文档 https://www.semtech.com/products/wireless-rf/lora-transceivers/sx1278
1、MDK工程目录(创建工程方式略)
收发数据由宏“ SX1276_RX_DEF" 区别,定义了为接收数据,未定义为发送数据
2、修改默认sx1276-LoRa.c 里面默认的频率与带宽
编译时出现bool 没定义,增加 bool类型头文件,sx1276.h文件里
main.c 函数实现如下, 发送功能:每间隔1s 发送一组数据 发送完成后打印一串数据“lora send ok”, 接收功能:收到数据后串口打印(本全程打印 ”lora send data“)
#include "platform.h" static uint32_t TimeingDelay = 0; static uint32_t timeout_cnt = 1000; void Delayms(uint32_t ms){ TimeingDelay = ms; while(TimeingDelay != 0){}; } void uart_recv_data(uint8_t *p, uint16_t len){ UART_ApiStructure.send_str(p, len); } extern void SX1276Init( void ); extern void SX1276SetTxPacket( const void *buffer, uint16_t size ); extern uint32_t SX1276Process( void ); static uint16_t BufferSize = 30; // RF buffer size static uint8_t Buffer[30];