123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- /*
- *********************************************************************************************************
- *
- * 模块名称 : SPI总线驱动
- * 文件名称 : bsp_spi_bus.h
- * 版 本 : V1.0
- * 说 明 : 头文件
- *
- * Copyright (C), 2014-2015, 安富莱电子 www.armfly.com
- *
- *********************************************************************************************************
- */
- #ifndef __SPI_H
- #define __SPI_H
- #include "stm32f2xx_spi.h"
- #include <stdio.h>
- /* Private typedef -----------------------------------------------------------*/
- //#define sFLASH_ID 0xEF3015 //W25X16
- //#define sFLASH_ID 0xEF4015 //W25Q16
- //#define sFLASH_ID 0XEF4017 //W25Q64
- #define sFLASH_ID 0XEF4018 //W25Q128
- //#define SPI_FLASH_PageSize 4096
- #define SPI_FLASH_PageSize 256
- #define SPI_FLASH_PerWritePageSize 256
- /* Private define ------------------------------------------------------------*/
- /*命令定义-开头*******************************/
- #define W25X_WriteEnable 0x06
- #define W25X_WriteDisable 0x04
- #define W25X_ReadStatusReg 0x05
- #define W25X_WriteStatusReg 0x01
- #define W25X_ReadData 0x03
- #define W25X_FastReadData 0x0B
- #define W25X_FastReadDual 0x3B
- #define W25X_PageProgram 0x02
- #define W25X_BlockErase 0xD8
- #define W25X_SectorErase 0x20
- #define W25X_ChipErase 0xC7
- #define W25X_PowerDown 0xB9
- #define W25X_ReleasePowerDown 0xAB
- #define W25X_DeviceID 0xAB
- #define W25X_ManufactDeviceID 0x90
- #define W25X_JedecDeviceID 0x9F
- #define WIP_Flag 0x01 /* Write In Progress (WIP) flag */
- #define Dummy_Byte 0xFF
- /*命令定义-结尾*******************************/
- /*SPI接口定义-开头****************************/
- #define FLASH_SPI SPI1
- #define FLASH_SPI_CLK RCC_APB2Periph_SPI1
- #define FLASH_SPI_CLK_INIT RCC_APB2PeriphClockCmd
- #define FLASH_SPI_SCK_PIN GPIO_Pin_5
- #define FLASH_SPI_SCK_GPIO_PORT GPIOA
- #define FLASH_SPI_SCK_GPIO_CLK RCC_AHB1Periph_GPIOA
- #define FLASH_SPI_SCK_PINSOURCE GPIO_PinSource5
- #define FLASH_SPI_SCK_AF GPIO_AF_SPI1
- #define FLASH_SPI_MISO_PIN GPIO_Pin_6
- #define FLASH_SPI_MISO_GPIO_PORT GPIOA
- #define FLASH_SPI_MISO_GPIO_CLK RCC_AHB1Periph_GPIOA
- #define FLASH_SPI_MISO_PINSOURCE GPIO_PinSource6
- #define FLASH_SPI_MISO_AF GPIO_AF_SPI1
- #define FLASH_SPI_MOSI_PIN GPIO_Pin_7
- #define FLASH_SPI_MOSI_GPIO_PORT GPIOA
- #define FLASH_SPI_MOSI_GPIO_CLK RCC_AHB1Periph_GPIOA
- #define FLASH_SPI_MOSI_PINSOURCE GPIO_PinSource7
- #define FLASH_SPI_MOSI_AF GPIO_AF_SPI1
- #define FLASH_CS_PIN GPIO_Pin_4
- #define FLASH_CS_GPIO_PORT GPIOA
- #define FLASH_CS_GPIO_CLK RCC_AHB1Periph_GPIOA
- #define SPI_FLASH_CS_LOW() {FLASH_CS_GPIO_PORT->BSRR=(uint32_t)FLASH_CS_PIN<<16;}
- #define SPI_FLASH_CS_HIGH() {FLASH_CS_GPIO_PORT->BSRR=FLASH_CS_PIN;}
- /*SPI接口定义-结尾****************************/
- /*等待超时时间*/
- #define SPIT_FLAG_TIMEOUT ((uint32_t)0x1000)
- #define SPIT_LONG_TIMEOUT ((uint32_t)(10 * SPIT_FLAG_TIMEOUT))
- /*信息输出*/
- #define FLASH_DEBUG_ON 1
- #define FLASH_INFO(fmt,arg...) printf("<<-FLASH-INFO->> "fmt"\n",##arg)
- #define FLASH_ERROR(fmt,arg...) printf("<<-FLASH-ERROR->> "fmt"\n",##arg)
- #define FLASH_DEBUG(fmt,arg...) do{\
- if(FLASH_DEBUG_ON)\
- printf("<<-FLASH-DEBUG->> [%d]"fmt"\n",__LINE__, ##arg);\
- }while(0)
- void SPI_FLASH_Init(void);
- void SPI_FLASH_SectorErase(u32 SectorAddr);
- void SPI_FLASH_BulkErase(void);
- void SPI_FLASH_PageWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);
- void SPI_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);
- void SPI_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead);
- u32 SPI_FLASH_ReadID(void);
- u32 SPI_FLASH_ReadDeviceID(void);
- void SPI_FLASH_StartReadSequence(u32 ReadAddr);
- void SPI_Flash_PowerDown(void);
- void SPI_Flash_WAKEUP(void);
- u8 SPI_FLASH_ReadByte(void);
- u8 SPI_FLASH_SendByte(u8 byte);
- u16 SPI_FLASH_SendHalfWord(u16 HalfWord);
- void SPI_FLASH_WriteEnable(void);
- void SPI_FLASH_WaitForWriteEnd(void);
- #endif
- /***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
|