110 lines
2.3 KiB
C
110 lines
2.3 KiB
C
#include <SWM320.h>
|
||
#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 |