STM32_WGY/User/SX127X_Hal.c

326 lines
9.6 KiB
C
Raw Normal View History

2025-04-03 15:29:20 +08:00
/**
******************************************************************************
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> SX127X_HAL.c
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> LSD RF Team
* <EFBFBD> <EFBFBD><EFBFBD> V1.0.0
* ʱ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 15-Aug-2018
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ΪSX127Xģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>SX127Xģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>GPIO<EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SX127X<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ββ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>MCUƽ̨<EFBFBD>޸ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
*
*SPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>STM32L4<EFBFBD><EFBFBD>SPI3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SX127Xģ<EFBFBD><EFBFBD>ͨ<EFBFBD>š<EFBFBD>
*GPIO<EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
* PB1 ---> DIO0
* PC4 ---> DIO1
* PB2 ---> DIO2
* PB0 ---> TXE
* PC5 ---> RXE
* PA7 ---> RST
* PA15 ---> NSS
* PC12 ---> M0SI
* PC11 ---> MISO
* PC10 ---> SCK
* Configure GPIO pins : PB12 PB13 PB14 PB15
PA7 DIO0
PA6 DIO1
PB0 DIO3
PB2 RST
PB12 NSS
PB13 CLK
PB14 MISO
PB15 MOSI
*/
/*******************************************************************************/
#include <stdint.h>
#include <stdbool.h>
#include "SX127X_Hal.h"
#include "stm32l4xx_hal.h"
SPI_HandleTypeDef SPI2_InitStruct;
//-----------------------------GPIO-----------------------------//
//<2F>ò<EFBFBD><C3B2>ֺ<EFBFBD><D6BA><EFBFBD>Ϊϵͳ<CFB5>õ<EFBFBD><C3B5><EFBFBD>GPIO<49>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ƽ̨<C6BD><CCA8>Ӧ<EFBFBD>޸<EFBFBD>
//--------------------------------------------------------------//
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ΪDIO0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
//A7
void SX127X_DIO0_INPUT()
{
GPIO_InitTypeDef GPIO_InitStruct;
__GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
NVIC_SetPriority(EXTI9_5_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),5, 0));
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ΪDIO0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϿ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_DIO0_INTENABLE()
{
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ΪDIO0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϹر<EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_DIO0_INTDISABLE()
{
// HAL_NVIC_DisableIRQ(EXTI9_5_IRQn);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ΪDIO0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>DIO0״̬"1"or"0"
*/
GPIO_PinState SX127X_DIO0_GetState()
{
GPIO_PinState State;
State = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7);
return State;
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ΪDIO1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
//A6
void SX127X_DIO1_INPUT()
{
GPIO_InitTypeDef GPIO_InitStruct;
__GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
//HAL_NVIC_SetPriority(EXTI1_IRQn, 1, 0);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ΪDIO2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
//NULL
void SX127X_DIO2_INPUT()
{
// GPIO_InitTypeDef GPIO_InitStruct;
// __GPIOB_CLK_ENABLE();
// GPIO_InitStruct.Pin = GPIO_PIN_2;
// GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
// GPIO_InitStruct.Pull = GPIO_PULLDOWN;
// GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
//HAL_NVIC_SetPriority(EXTI1_IRQn, 1, 0);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>TXE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PinStateΪ"1"<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><EFBFBD>"0"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_TXE_OUTPUT(GPIO_PinState PinState)
{
// GPIO_InitTypeDef GPIO_InitStruct;
// __HAL_RCC_GPIOB_CLK_ENABLE();
// GPIO_InitStruct.Pin = GPIO_PIN_0;
// GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
// GPIO_InitStruct.Pull = GPIO_PULLUP;
// GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, PinState);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RXE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PinStateΪ"1"<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><EFBFBD>"0"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_RXE_OUTPUT(GPIO_PinState PinState)
{
// GPIO_InitTypeDef GPIO_InitStruct;
// __HAL_RCC_GPIOC_CLK_ENABLE();
// GPIO_InitStruct.Pin = GPIO_PIN_5;
// GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
// GPIO_InitStruct.Pull = GPIO_PULLUP;
// GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
// HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
// HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, PinState);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ΪSPI<EFBFBD><EFBFBD>Ƭѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>NSS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PinStateΪ"1"<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><EFBFBD>"0"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_NSS_OUTPUT(GPIO_PinState PinState)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, PinState);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ΪSX127X<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>NRST<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PinStateΪ"1"<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><EFBFBD>"0"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_RESET_OUTPUT(GPIO_PinState PinState)
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, PinState);
}
//-----------------------------SPI-----------------------------//
//<2F>ò<EFBFBD><C3B2>ֺ<EFBFBD><D6BA><EFBFBD>ΪMCU<43><55>SX127Xģ<58><C4A3>SPIͨ<49>Ų<EFBFBD><C5B2>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD>SPI<50>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC>
//--------------------------------------------------------------//
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>SPI<EFBFBD><EFBFBD>ӦIO<EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_SPIGPIO_Init()
{
GPIO_InitTypeDef GPIO_InitStruct;
// /*Configure GPIO pins : PB12 PB13 PB14 PB15 */
// GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
// GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
// GPIO_InitStruct.Pull = GPIO_NOPULL;
// GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
// GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* Configure the SX126X_NSS pin */
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* SPI SCK GPIO pin configuration */
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* SPI MISO GPIO pin configuration */
GPIO_InitStruct.Pin = GPIO_PIN_14;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* SPI MoSi GPIO pin configuration */
GPIO_InitStruct.Pin = GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<EFBFBD><EFBFBD>SPI<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_SPI_Init()
{
__HAL_RCC_GPIOA_CLK_ENABLE();//PORTAʱ<41><CAB1>ʹ<EFBFBD><CAB9>
__HAL_RCC_GPIOB_CLK_ENABLE();//PORTCʱ<43><CAB1>ʹ<EFBFBD><CAB9>
__HAL_RCC_SPI2_CLK_ENABLE();//SPI2ʱ<32><CAB1>ʹ<EFBFBD><CAB9>
SX127X_SPIGPIO_Init();
SPI2_InitStruct.Instance = SPI2; //ʹ<><CAB9>SPI2
SPI2_InitStruct.Init.Mode = SPI_MODE_MASTER;//SPIģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
SPI2_InitStruct.Init.Direction = SPI_DIRECTION_2LINES;//<2F><><EFBFBD><EFBFBD>ȫ˫<C8AB><CBAB>
SPI2_InitStruct.Init.DataSize = SPI_DATASIZE_8BIT;//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>ȣ<EFBFBD>
SPI2_InitStruct.Init.CLKPolarity = SPI_POLARITY_LOW; //<2F><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ʱ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
SPI2_InitStruct.Init.CLKPhase = SPI_PHASE_1EDGE; //CPOL=0;CPHA=0ģʽ
SPI2_InitStruct.Init.NSS = SPI_NSS_SOFT;//NSSD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SPI2_InitStruct.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;//<2F><><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶ<EFBFBD><C6B5>8<EFBFBD><38>Ƶ
SPI2_InitStruct.Init.FirstBit = SPI_FIRSTBIT_MSB;//<2F><><EFBFBD>ݴ<EFBFBD>MSB<53><42>ʼ
SPI2_InitStruct.Init.TIMode = SPI_TIMODE_DISABLE;//SPI Motorola mode
SPI2_InitStruct.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;//CRCУ<43>ʹ<E9B2BB><CAB9>
SPI2_InitStruct.Init.CRCPolynomial = 7;//CRCֵ<43><D6B5><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>ʽ
SPI2_InitStruct.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
SPI2_InitStruct.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
if (HAL_SPI_Init(&SPI2_InitStruct) != HAL_OK)
{
while(1);
}
__HAL_SPI_ENABLE(&SPI2_InitStruct);
}
//-----------------------SX127X Read and Write-------------------//
//<2F>ò<EFBFBD><C3B2>ֺ<EFBFBD><D6BA><EFBFBD>ΪMCU<43><55>SX127Xģ<58><C4A3><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>д
//--------------------------------------------------------------//
/**
* @<EFBFBD><EFBFBD><EFBFBD>SX127X <EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint8_t addr,<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ uint8_t *buffer,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD> uint8_t sizeָ<EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
unsigned char SX127X_ReadWriteByte(unsigned char data)
{
unsigned char RxDat;
HAL_SPI_TransmitReceive(&SPI2_InitStruct, &data, &RxDat, 1, 1000);
return RxDat;
}
/**
* @<EFBFBD><EFBFBD><EFBFBD>SX127X <EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint8_t addr,<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ uint8_t *buffer,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD> uint8_t sizeָ<EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void SX127X_WriteBuffer( uint8_t addr, uint8_t *buffer, uint8_t size )
{
uint8_t i;
SX127X_NSS_OUTPUT(GPIO_PIN_RESET);
SX127X_ReadWriteByte(addr | 0x80);
for( i = 0; i < size; i++ )
{
SX127X_ReadWriteByte(buffer[i]);
}
SX127X_NSS_OUTPUT(GPIO_PIN_SET);
}
/**
* @<EFBFBD><EFBFBD><EFBFBD>SX127X <EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uint8_t addr,<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ uint8_t *buffer,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD> uint8_t sizeָ<EFBFBD><EFBFBD><EFBFBD>
* @<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>ص<EFBFBD>*buffer<EFBFBD><EFBFBD>
*/
void SX127X_ReadBuffer( uint8_t addr, uint8_t *buffer, uint8_t size )
{
uint8_t i;
SX127X_NSS_OUTPUT(GPIO_PIN_RESET);
SX127X_ReadWriteByte(addr & 0x7F);
for( i = 0; i < size; i++ )
{
buffer[i] = SX127X_ReadWriteByte(0x00);
}
SX127X_NSS_OUTPUT(GPIO_PIN_SET);
}