Чет работает
This commit is contained in:
76
AllLibs/ExtMemory/Inc/memspi.h
Normal file
76
AllLibs/ExtMemory/Inc/memspi.h
Normal file
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file memspi.h
|
||||
* @brief Работа с внешней памятью
|
||||
******************************************************************************
|
||||
@defgroup MEMSPI API for Memory SPI
|
||||
@brief API для работы с внешней памятью
|
||||
******************************************************************************
|
||||
* @details
|
||||
Модуль предоставляет API для удобной работы с FLASH/EEPROM по SPI:
|
||||
- @ref MEMSPI_Read_Memory Считывание внешней FLASH/EEPROM
|
||||
- @ref MEMSPI_EEPROM_Write Запись данных в внешнюю EEPROM
|
||||
- @ref MEMSPI_FLASH_Write Запись данных в внешнюю FLASH (функция сама очищает нужные сектора, и если надо сохраняет выбранные данные)
|
||||
- @ref MEMSPI_FLASH_Program Программирование внешней FLASH (выбранный участок FLASH должен быть очищен)
|
||||
- @ref MEMSPI_FLASH_Erase Очистка внешней FLASH
|
||||
|
||||
Также есть ряд вспомогательных функций:
|
||||
- @ref MEMSPI_EEPROM_Write_Page Запись страницы в EEPROM *есть более общая функция MEMSPI_EEPROM_Write, которая записывает участки больше страницы
|
||||
- @ref MEMSPI_FLASH_Erase_Sector Очистка сектора FLASH. *есть более общая функция MEMSPI_FLASH_Erase, которая может ощичать несколько секторов
|
||||
- @ref MEMSPI_FLASH_Program_Page Программирование страницы. *есть более общая функция MEMSPI_FLASH_Program, которая программирует участки больше страницы
|
||||
- @ref MEMSPI_WriteEnablingUntilTimeout Разрешение записи, пока не будет ответа или не истек таймаут
|
||||
- @ref MEMSPI_WaitOnFlagsUntilTimeout Ожидание флага пока не истек таймаута
|
||||
|
||||
@section Start Инструкция по подключению
|
||||
```c
|
||||
MEMSPI_HandleTypeDef hmemspi;
|
||||
HAL_StatusTypeDef MEMSPI_RES;
|
||||
|
||||
hmemspi.CS_GPIOx = GPIOC;
|
||||
hmemspi.CS_PIN = GPIO_PIN_4;
|
||||
MEMSPI_Base_Init(&hmemspi, &hspi3);
|
||||
|
||||
MEMSPI_RES = MEMSPI_EEPROM_Write(&hmemspi, mem_adr, write_buff, buff_size, Timeout, 1);
|
||||
MEMSPI_RES = MEMSPI_Read_Memory(&hmemspi, mem_adr, read_buff, buff_size, Timeout);
|
||||
```
|
||||
|
||||
******************************************************************************/
|
||||
#ifndef __SPI_MEMORY_H_
|
||||
#define __SPI_MEMORY_H_
|
||||
|
||||
#include "memspi_core.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
///////////////////////---FUNCTIONS FOR USER---//////////////////////
|
||||
/* Initialize SPI and GPIO for MEMSPI FLASH */
|
||||
void MEMSPI_Base_Init(MEMSPI_HandleTypeDef *hmemspi, SPI_HandleTypeDef *hspi);
|
||||
/* Read external FLASH */
|
||||
HAL_StatusTypeDef MEMSPI_Read_Memory(MEMSPI_HandleTypeDef *hmemspi, uint32_t FLASH_Address, uint8_t *pBuff, uint16_t Size, uint32_t Timeout);
|
||||
/* Write external EEPROM */
|
||||
HAL_StatusTypeDef MEMSPI_EEPROM_Write(MEMSPI_HandleTypeDef *hmemspi, uint32_t FLASH_Address, uint8_t *pData, uint16_t Size, uint32_t Timeout, uint8_t WaitForEnd);
|
||||
/* Write external FLASH */
|
||||
HAL_StatusTypeDef MEMSPI_FLASH_Write(MEMSPI_HandleTypeDef *hmemspi, MEMSPI_WriteInitTypeDef *WriteInit, uint32_t Timeout, uint8_t WaitForEnd);
|
||||
/* Program external FLASH */
|
||||
HAL_StatusTypeDef MEMSPI_FLASH_Program(MEMSPI_HandleTypeDef *hmemspi, uint32_t FLASH_Address, uint8_t *pData, uint16_t Size, uint32_t Timeout, uint8_t WaitForEnd);
|
||||
/* Erase external FLASH */
|
||||
HAL_StatusTypeDef MEMSPI_FLASH_Erase(MEMSPI_HandleTypeDef *hmemspi, uint32_t FLASH_Address, uint16_t Size, uint32_t Timeout, uint8_t WaitForEnd);
|
||||
///////////////////////---FUNCTIONS FOR USER---//////////////////////
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
////////////////////////---SERVICE FUNCTIONS---//////////////////////
|
||||
/* Write page in external EEPROM */
|
||||
HAL_StatusTypeDef MEMSPI_EEPROM_Write_Page(MEMSPI_HandleTypeDef *hmemspi, uint32_t FLASH_Address, uint8_t *pData, uint16_t Size, uint32_t *Timeout, uint32_t *tickstart, uint8_t WaitForEnd);
|
||||
/* Erase external FLASH Sector */
|
||||
HAL_StatusTypeDef MEMSPI_FLASH_Erase_Sector(MEMSPI_HandleTypeDef *hmemspi, uint32_t FLASH_Address, uint32_t *Timeout, uint32_t *tickstart, uint8_t WaitForEnd);
|
||||
/* Program page in external FLASH */
|
||||
HAL_StatusTypeDef MEMSPI_FLASH_Program_Page(MEMSPI_HandleTypeDef *hmemspi, uint32_t FLASH_Address, uint8_t *pData, uint16_t Size, uint32_t *Timeout, uint32_t *tickstart, uint8_t WaitForEnd);
|
||||
/* Setting WEL bit until it setted or until timeout */
|
||||
HAL_StatusTypeDef MEMSPI_WriteEnablingUntilTimeout(MEMSPI_HandleTypeDef *hmemspi, uint32_t *Timeout, uint32_t *tickstart);
|
||||
/* Wait for flag until timeout */
|
||||
HAL_StatusTypeDef MEMSPI_WaitOnFlagsUntilTimeout(MEMSPI_HandleTypeDef *hmemspi, uint16_t FlagMask, uint16_t FlagStatus, uint32_t *Timeout, uint32_t *tickstart);
|
||||
/* Update Timeout variables */
|
||||
void MEMSPI_Update_Timeout_Variables(uint32_t *Timeout, uint32_t *tickstart);
|
||||
////////////////////////---SERVICE FUNCTIONS---//////////////////////
|
||||
|
||||
|
||||
#endif // __SPI_MEMORY_H_
|
||||
Reference in New Issue
Block a user