优化实现串口驱动,SPI驱动 W25QXX还需要初始化验证修复
This commit is contained in:
117
HAL/Inc/hal_spi.h
Normal file
117
HAL/Inc/hal_spi.h
Normal file
@ -0,0 +1,117 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file : hal_spi.h
|
||||
* @brief : SPI hardware abstraction layer header file
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
#ifndef HAL_SPI_H
|
||||
#define HAL_SPI_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* @brief SPI instance identifier definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_SPI_INSTANCE_1 = 0,
|
||||
HAL_SPI_INSTANCE_2,
|
||||
HAL_SPI_INSTANCE_3,
|
||||
HAL_SPI_INSTANCE_4,
|
||||
HAL_SPI_INSTANCE_5,
|
||||
HAL_SPI_INSTANCE_6,
|
||||
HAL_SPI_INSTANCE_MAX
|
||||
} hal_spi_instance_t;
|
||||
|
||||
/**
|
||||
* @brief SPI mode definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_SPI_MODE_MASTER = 0,
|
||||
HAL_SPI_MODE_SLAVE
|
||||
} hal_spi_mode_t;
|
||||
|
||||
/**
|
||||
* @brief SPI clock polarity definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_SPI_POLARITY_LOW = 0,
|
||||
HAL_SPI_POLARITY_HIGH
|
||||
} hal_spi_polarity_t;
|
||||
|
||||
/**
|
||||
* @brief SPI clock phase definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_SPI_PHASE_1EDGE = 0,
|
||||
HAL_SPI_PHASE_2EDGE
|
||||
} hal_spi_phase_t;
|
||||
|
||||
/**
|
||||
* @brief SPI data bits definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_SPI_DATABITS_8 = 0,
|
||||
HAL_SPI_DATABITS_16
|
||||
} hal_spi_databits_t;
|
||||
|
||||
/**
|
||||
* @brief SPI configuration structure
|
||||
*/
|
||||
typedef struct {
|
||||
hal_spi_instance_t instance;
|
||||
hal_spi_mode_t mode;
|
||||
uint32_t baudrate;
|
||||
hal_spi_polarity_t polarity;
|
||||
hal_spi_phase_t phase;
|
||||
hal_spi_databits_t databits;
|
||||
} hal_spi_config_t;
|
||||
|
||||
/**
|
||||
* @brief Initialize SPI hardware
|
||||
* @param instance SPI instance identifier
|
||||
* @param config SPI configuration structure
|
||||
* @return true if initialization is successful, false otherwise
|
||||
*/
|
||||
bool hal_spi_init(hal_spi_instance_t instance, const hal_spi_config_t *config);
|
||||
|
||||
/**
|
||||
* @brief Deinitialize SPI hardware
|
||||
* @param instance SPI instance identifier
|
||||
* @return true if deinitialization is successful, false otherwise
|
||||
*/
|
||||
bool hal_spi_deinit(hal_spi_instance_t instance);
|
||||
|
||||
/**
|
||||
* @brief Transmit data over specific SPI instance
|
||||
* @param instance: SPI instance identifier
|
||||
* @param data: Pointer to data buffer
|
||||
* @param size: Data length in bytes
|
||||
* @return true if transmission is successful, false otherwise
|
||||
*/
|
||||
bool hal_spi_transmit(hal_spi_instance_t instance, const uint8_t *data, uint16_t size);
|
||||
|
||||
/**
|
||||
* @brief Receive data from specific SPI instance
|
||||
* @param instance: SPI instance identifier
|
||||
* @param data: Pointer to data buffer
|
||||
* @param size: Data length to receive in bytes
|
||||
* @return true if reception is successful, false otherwise
|
||||
*/
|
||||
bool hal_spi_receive(hal_spi_instance_t instance, uint8_t *data, uint16_t size);
|
||||
|
||||
/**
|
||||
* @brief Transmit and receive data simultaneously over specific SPI instance
|
||||
* @param instance: SPI instance identifier
|
||||
* @param tx_data: Pointer to transmit data buffer
|
||||
* @param rx_data: Pointer to receive data buffer
|
||||
* @param size: Data length in bytes
|
||||
* @return true if transmission and reception are successful, false otherwise
|
||||
*/
|
||||
bool hal_spi_transmit_receive(hal_spi_instance_t instance, const uint8_t *tx_data, uint8_t *rx_data, uint16_t size);
|
||||
|
||||
#endif /* HAL_SPI_H */
|
||||
Reference in New Issue
Block a user