326 lines
9.6 KiB
C
326 lines
9.6 KiB
C
|
|
/**
|
|||
|
|
******************************************************************************
|
|||
|
|
* <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>8λ
|
|||
|
|
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);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|