#include #include "type.h" #include "BoardCfg.h" #include "debug.h" /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 模块注释 内容: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ #if(SPI_FLASH) /********************************************************** 行注释 内容:HAL **********************************************************/ #define SPI0_CS_Low() GPIO_ClrBit(GPIOP, PIN22) #define SPI0_CS_High() GPIO_SetBit(GPIOP, PIN22) /** * @brief SPI0初始化 * */ static void This_SPI_Init(void) { GPIO_Init(GPIOP, PIN22, 1, 0, 0); PORT_Init(PORTP, PIN23, FUNMUX1_SPI0_SCLK, 0); PORT_Init(PORTP, PIN18, FUNMUX0_SPI0_MOSI, 0); PORT_Init(PORTP, PIN19, FUNMUX1_SPI0_MISO, 1); SPI_InitStructure SPI_initStruct; SPI_initStruct.clkDiv = SPI_CLKDIV_32; SPI_initStruct.FrameFormat = SPI_FORMAT_SPI; SPI_initStruct.SampleEdge = SPI_SECOND_EDGE; SPI_initStruct.IdleLevel = SPI_HIGH_LEVEL; SPI_initStruct.WordSize = 8; SPI_initStruct.Master = 1; SPI_initStruct.RXHFullIEn = 0; SPI_initStruct.TXEmptyIEn = 0; SPI_initStruct.TXCompleteIEn = 0; SPI_Init(SPI0, &SPI_initStruct); SPI_Open(SPI0); } /** * @brief SPI_Flash初始化 * */ void SPI_FlashInit(void){ This_SPI_Init(); } /** * @brief 连续发送SPI数据 * * @param data 数据地址 * @param len 数据长度 */ static void ThisSend(u8 * data,u32 len){ for (u32 i = 0; i < len; i++) { SPI_ReadWrite(SPI0, data[i]); } } /** * @brief 单字节双向传输 * * @param data 输入数据 * @return u8 输出数据 */ static u8 ThisReadWrite(u8 data){ return SPI_ReadWrite(SPI0, data); } /** * @brief 信号脚拉低 * */ static void ThisCSLow(){ SPI0_CS_Low(); } /** * @brief 信号脚拉高 * */ static void ThisCSHigh(){ SPI0_CS_High(); } /********************************************************** 行注释 内容:软件 **********************************************************/ // const u8 chipID_List[][2]={ // {0xef,} // } /** * @brief 读取Flash的ID * */ void Flash_Read_ID(){ ThisCSLow(); ThisReadWrite(FLASH_CMD_READ_ID); ThisReadWrite(0x00); ThisReadWrite(0x00); ThisReadWrite(0x00); u8 factory = ThisReadWrite(0xff); u8 device = ThisReadWrite(0xff); Printf("factory:%d,device:%d\n", factory, device); ThisCSHigh(); } #endif