291 lines
8.0 KiB
C
291 lines
8.0 KiB
C
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : APS6404L-3SQR SRAM -- 8M*8bit
|
|||
|
|
* Description : SRAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
|
|||
|
|
#include "includes.h"
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SPI_SRAM_Init
|
|||
|
|
* Description : SRAM<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
|
* Input : None
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void SPI_SRAM_Init(void)
|
|||
|
|
{
|
|||
|
|
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>SPI GPIO
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_20mA); //CS
|
|||
|
|
|
|||
|
|
GPIOA_SetBits( GPIO_Pin_13 );
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_13|GPIO_Pin_14, GPIO_ModeOut_PP_5mA);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_PU); //MISO
|
|||
|
|
//SPI <20><><EFBFBD><EFBFBD>ģʽ
|
|||
|
|
SPI0_MasterDefInit( );
|
|||
|
|
SPI0_DataMode(Mode0_HighBitINFront);
|
|||
|
|
|
|||
|
|
SRAM_CE_L; //SRAM<41><4D>flashʹ<68><CAB9>ͬһƬѡ<C6AC>ţ<EFBFBD>Ĭ<EFBFBD><C4AC>ѡSRAM
|
|||
|
|
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>SPI GPIO
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, GPIO_ModeOut_PP_5mA);
|
|||
|
|
//SPI <20><><EFBFBD><EFBFBD>ģʽ
|
|||
|
|
SPI0_MasterDefInit( );
|
|||
|
|
SPI0_DataMode(Mode0_HighBitINFront);
|
|||
|
|
|
|||
|
|
SRAM_CE_H;
|
|||
|
|
|
|||
|
|
#endif //USE_CORE_TYPE == CORE_TYPE_C1F
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_Write_Byte
|
|||
|
|
* Description : SRAMд<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
wdate : <EFBFBD><EFBFBD>Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void SRAM_Write_Byte(uint8_t wdate,uint32_t add)
|
|||
|
|
{
|
|||
|
|
uint8_t Hadd16=0x00,Hadd8=0x00,Ladd=0x00;
|
|||
|
|
Ladd=add;
|
|||
|
|
Hadd8=add>>8;
|
|||
|
|
Hadd16=add>>16;
|
|||
|
|
|
|||
|
|
if(add >= SRAM_ADDRESS_MAX) return ;
|
|||
|
|
|
|||
|
|
SRAM_CE_L;
|
|||
|
|
SPI0_MasterSendByte(SRAM_CMD_Write);
|
|||
|
|
SPI0_MasterSendByte(Hadd16);
|
|||
|
|
SPI0_MasterSendByte(Hadd8);
|
|||
|
|
SPI0_MasterSendByte(Ladd);
|
|||
|
|
SPI0_MasterSendByte(wdate);
|
|||
|
|
|
|||
|
|
SRAM_CE_H;
|
|||
|
|
DelayUs(10);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_Read_Byte
|
|||
|
|
* Description : SRAM<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֽڵĵ<EFBFBD>ַ
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t SRAM_Read_Byte(uint32_t add)
|
|||
|
|
{
|
|||
|
|
uint8_t Hadd8=0x00,Hadd16=0x00,Ladd=0x00,rdate=0x00;
|
|||
|
|
Ladd=add;
|
|||
|
|
Hadd8=add>>8;
|
|||
|
|
Hadd16=add>>16;
|
|||
|
|
|
|||
|
|
if(add >= SRAM_ADDRESS_MAX) return 0x00;
|
|||
|
|
|
|||
|
|
SRAM_CE_L;
|
|||
|
|
SPI0_MasterSendByte(SRAM_CMD_Read);
|
|||
|
|
SPI0_MasterSendByte(Hadd16);
|
|||
|
|
SPI0_MasterSendByte(Hadd8);
|
|||
|
|
SPI0_MasterSendByte(Ladd);
|
|||
|
|
rdate = SPI0_MasterRecvByte();
|
|||
|
|
SRAM_CE_H;
|
|||
|
|
// if(rdate == 0xFF)
|
|||
|
|
// {
|
|||
|
|
// if(GPIOB_ReadPortPin(GPIO_Pin_3) == 0x00)
|
|||
|
|
// {
|
|||
|
|
// GPIOB_SetBits(GPIO_Pin_3);
|
|||
|
|
// }else{
|
|||
|
|
// GPIOB_ResetBits(GPIO_Pin_3);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
DelayUs(10);
|
|||
|
|
return rdate;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_Write_Word
|
|||
|
|
* Description : SRAMдuint16_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
wdate : <EFBFBD><EFBFBD>Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void SRAM_Write_Word(uint16_t wdate,uint32_t add)
|
|||
|
|
{
|
|||
|
|
SRAM_Write_Byte((uint8_t)(wdate & 0xFF),add);
|
|||
|
|
SRAM_Write_Byte((uint8_t)((wdate >> 8) & 0xFF),add + 1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_Read_Word
|
|||
|
|
* Description : SRAMдuint16_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֵĵ<EFBFBD>ַ
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint16_t SRAM_Read_Word(uint32_t add)
|
|||
|
|
{
|
|||
|
|
uint16_t rev = 0;
|
|||
|
|
rev = SRAM_Read_Byte(add + 1);
|
|||
|
|
rev <<= 8;
|
|||
|
|
rev |= SRAM_Read_Byte(add);
|
|||
|
|
return rev;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_Write_DW
|
|||
|
|
* Description : SRAMдuint32_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
wdate : <EFBFBD><EFBFBD>Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD>
|
|||
|
|
add <EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ˫<EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void SRAM_Write_DW(uint32_t wdate,uint32_t add)
|
|||
|
|
{
|
|||
|
|
SRAM_Write_Byte((uint8_t)(wdate & 0xFF),add);
|
|||
|
|
SRAM_Write_Byte((uint8_t)((wdate >> 8) & 0xFF),add + 1);
|
|||
|
|
SRAM_Write_Byte((uint8_t)((wdate >> 16) & 0xFF),add + 2);
|
|||
|
|
SRAM_Write_Byte((uint8_t)((wdate >> 24) & 0xFF),add + 3);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_Read_DW
|
|||
|
|
* Description : SRAMдuint32_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ˫<EFBFBD>ֵĵ<EFBFBD>ַ
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>ȡ˫<EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint32_t SRAM_Read_DW(uint32_t add)
|
|||
|
|
{
|
|||
|
|
uint32_t rev = 0;
|
|||
|
|
|
|||
|
|
rev = SRAM_Read_Byte(add + 3);
|
|||
|
|
rev <<= 8;
|
|||
|
|
rev |= SRAM_Read_Byte(add + 2);
|
|||
|
|
rev <<= 8;
|
|||
|
|
rev |= SRAM_Read_Byte(add + 1);
|
|||
|
|
rev <<= 8;
|
|||
|
|
rev |= SRAM_Read_Byte(add);
|
|||
|
|
|
|||
|
|
return rev;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_Write_Buff
|
|||
|
|
* Description : SRAM FIFO<EFBFBD><EFBFBD>ʽд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
wbuff : <EFBFBD><EFBFBD>Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len : д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>4095<EFBFBD>ֽڳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void SRAM_Write_Buff(uint8_t* wbuff,uint16_t len,uint32_t add)
|
|||
|
|
{
|
|||
|
|
uint8_t Hadd16=0x00,Hadd8=0x00,Ladd=0x00;
|
|||
|
|
Ladd=add;
|
|||
|
|
Hadd8=add>>8;
|
|||
|
|
Hadd16=add>>16;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
|||
|
|
if(add + len >= SRAM_ADDRESS_MAX) return ;
|
|||
|
|
|
|||
|
|
SRAM_CE_L;
|
|||
|
|
SPI0_MasterSendByte(SRAM_CMD_Write);
|
|||
|
|
SPI0_MasterSendByte(Hadd16);
|
|||
|
|
SPI0_MasterSendByte(Hadd8);
|
|||
|
|
SPI0_MasterSendByte(Ladd);
|
|||
|
|
SPI0_MasterTrans(wbuff,len);
|
|||
|
|
SRAM_CE_H;
|
|||
|
|
DelayUs(10);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_Read_Buff
|
|||
|
|
* Description : SRAM FIFO<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
rbuff : <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>4095<EFBFBD>ֽڳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void SRAM_Read_Buff(uint8_t* rbuff,uint16_t len,uint32_t add)
|
|||
|
|
{
|
|||
|
|
uint8_t Hadd16=0x00,Hadd8=0x00,Ladd=0x00;
|
|||
|
|
Ladd=add;
|
|||
|
|
Hadd8=add>>8;
|
|||
|
|
Hadd16=add>>16;
|
|||
|
|
|
|||
|
|
if(add + len >= SRAM_ADDRESS_MAX) return ;
|
|||
|
|
|
|||
|
|
SRAM_CE_L;
|
|||
|
|
SPI0_MasterSendByte(SRAM_CMD_Read);
|
|||
|
|
SPI0_MasterSendByte(Hadd16);
|
|||
|
|
SPI0_MasterSendByte(Hadd8);
|
|||
|
|
SPI0_MasterSendByte(Ladd);
|
|||
|
|
SPI0_MasterRecv(rbuff,len);
|
|||
|
|
SRAM_CE_H;
|
|||
|
|
DelayUs(10);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_DMA_Write_Buff
|
|||
|
|
* Description : SRAM DMA<EFBFBD><EFBFBD>ʽд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
wbuff : <EFBFBD><EFBFBD>Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len : д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>4095<EFBFBD>ֽڳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void SRAM_DMA_Write_Buff(uint8_t* wbuff,uint16_t len,uint32_t add)
|
|||
|
|
{
|
|||
|
|
uint8_t Hadd16=0x00,Hadd8=0x00,Ladd=0x00;
|
|||
|
|
Ladd=add;
|
|||
|
|
Hadd8=add>>8;
|
|||
|
|
Hadd16=add>>16;
|
|||
|
|
|
|||
|
|
if(add + len >= SRAM_ADDRESS_MAX) return ;
|
|||
|
|
|
|||
|
|
SRAM_CE_L;
|
|||
|
|
SPI0_MasterSendByte(SRAM_CMD_Write);
|
|||
|
|
SPI0_MasterSendByte(Hadd16);
|
|||
|
|
SPI0_MasterSendByte(Hadd8);
|
|||
|
|
SPI0_MasterSendByte(Ladd);
|
|||
|
|
SPI0_MasterDMATrans(wbuff,len);
|
|||
|
|
SRAM_CE_H;
|
|||
|
|
DelayUs(10);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : SRAM_DMA_Read_Buff
|
|||
|
|
* Description : SRAM DMA<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
rbuff : <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD> -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>4095<EFBFBD>ֽڳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
add <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void SRAM_DMA_Read_Buff(uint8_t* rbuff,uint16_t len,uint32_t add)
|
|||
|
|
{
|
|||
|
|
uint8_t Hadd16=0x00,Hadd8=0x00,Ladd=0x00;
|
|||
|
|
Ladd=add;
|
|||
|
|
Hadd8=add>>8;
|
|||
|
|
Hadd16=add>>16;
|
|||
|
|
|
|||
|
|
if(add + len >= SRAM_ADDRESS_MAX) return ;
|
|||
|
|
|
|||
|
|
SRAM_CE_L;
|
|||
|
|
SPI0_MasterSendByte(SRAM_CMD_Read);
|
|||
|
|
SPI0_MasterSendByte(Hadd16);
|
|||
|
|
SPI0_MasterSendByte(Hadd8);
|
|||
|
|
SPI0_MasterSendByte(Ladd);
|
|||
|
|
SPI0_MasterDMARecv(rbuff,len);
|
|||
|
|
SRAM_CE_H;
|
|||
|
|
DelayUs(10);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|