Rev 1 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name : 91x_emi.c
* Author : MCD Application Team
* Date First Issued : 05/18/2006 : Version 1.0
* Description : This file provides all the EMI software functions.
********************************************************************************
* History:
* 05/22/2007 : Version 1.2
* 05/24/2006 : Version 1.1
* 05/18/2006 : Version 1.0
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include "91x_emi.h"
#include "91x_scu.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* These constant variables are used as masks to handle the EMI registers. */
#define EMI_PageModeRead_TL_Mask 0xFFFFF3FF
#define EMI_PageModeRead_Sel_Mask 0xFFFFFEFF
#define EMI_MemWidth_Mask 0xFFFFFFCF
#define EMI_WriteProtect_Mask 0xFFFFFEF7
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Registers reset value */
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/******************************************************************************
* Function Name : EMI_DeInit
* Description : Deinitializes the EMI peripheral registers to their default
* reset values.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EMI_DeInit(void)
{
SCU_AHBPeriphReset(__EMI, ENABLE); /* EMI peripheral under Reset */
SCU_AHBPeriphReset(__EMI,DISABLE ); /* EMI not under Reset */
}
/*******************************************************************************
* Function Name : EMI_StructInit
* Description : Fills the EMI_InitTypeDef structure member with its reset
* value.
* Input : EMI_InitStruct : pointer to a EMI_InitTypeDef structure
* which will be initialized.
* Output : None
* Return : None
*******************************************************************************/
void EMI_StructInit( EMI_InitTypeDef *EMI_InitStruct)
{
/* Number of bus turnaround cycles added between read and write accesses.*/
/*This member can be 0x01,0x02,0x03, ....0xF (Reset value:0xF "15 cycles"*/
EMI_InitStruct->EMI_Bank_IDCY =0xF;
/* Number of wait states for read accesses*/
/*This member can be: 0x01,0x02,0x03, ....0x1F (Reset value:0x1F "31 cycles"*/
EMI_InitStruct->EMI_Bank_WSTRD =0x1F;
/* Number of wait states for write accesses*/
/*This member can be: 0x01,0x02,0x03, ....0x1F (Reset value:0x1F "31 cycles"*/
EMI_InitStruct->EMI_Bank_WSTWR =0x1F;
/*Output enable assertion delay from chip select assertion*/
/*This member can be: 0x01,0x02,0x03, ....0xF (Reset value:0x01 "1 cycle"*/
EMI_InitStruct->EMI_Bank_WSTROEN =0x01;
/*Write enable assertion delay from chip select assertion*/
/*This member can be: 0x01,0x02,0x03, ....0xF (Reset value:0x00 "0 cycle"*/
EMI_InitStruct->EMI_Bank_WSTWEN =0x00;
/*This member Controls the memory width*/
/*This member can be :"EMI_Width_Byte" = 8 bits width or "EMI_Width_HalfWord" = 16 bits width*/
EMI_InitStruct->EMI_Bank_MemWidth = EMI_Width_Byte;
/*Write protection feature */
/*This member can be :"EMI_Bank_NonWriteProtect" = No write protection or "EMI_Bank_WriteProtect" = bank is write protected*/
EMI_InitStruct-> EMI_Bank_WriteProtection= EMI_Bank_NonWriteProtect;
/* page transfer length for page mode read */
/*This member can be :"EMI_4Data" = 4 transfers burst or "EMI_8Data" = 8 transfers burst*/
EMI_InitStruct->EMI_PageModeRead_TransferLength= EMI_4Data;
/*Select or deselect the page mode read*/
/*This member can be :"EMI_NormalMode" =Normal Mode or "EMI_PageModeRead" = Page Mode Read*/
EMI_InitStruct->EMI_PageModeRead_Selection = EMI_NormalMode;
}
/*******************************************************************************
* Function Name : EMI_Init
* Description : Initializes EMI peripheral according to the specified
* parameters in the EMI_InitStruct.
* Input : EMI_Bankx:where x can be 0,1,2 or 3 to select the EMI Bank.
EMI_InitStruct: pointer to a EMI_InitTypeDef structure
( Structure Config to be loaded in EMI Registers). .
* Output : None
* Return : None
*******************************************************************************/
void EMI_Init( EMI_Bank_TypeDef* EMI_Bankx, EMI_InitTypeDef* EMI_InitStruct)
{
EMI_Bankx->ICR = EMI_InitStruct-> EMI_Bank_IDCY ;
EMI_Bankx->RCR = EMI_InitStruct->EMI_Bank_WSTRD ;
EMI_Bankx->WCR = EMI_InitStruct->EMI_Bank_WSTWR ;
EMI_Bankx->OECR = EMI_InitStruct->EMI_Bank_WSTROEN;
EMI_Bankx->WECR = EMI_InitStruct->EMI_Bank_WSTWEN ;
EMI_Bankx->BCR &= EMI_MemWidth_Mask;
EMI_Bankx->BCR |= EMI_InitStruct->EMI_Bank_MemWidth;
EMI_Bankx->BCR &= EMI_WriteProtect_Mask;
EMI_Bankx->BCR |= EMI_InitStruct->EMI_Bank_WriteProtection;
EMI_Bankx->BCR &= EMI_PageModeRead_TL_Mask;
EMI_Bankx->BCR |= EMI_InitStruct->EMI_PageModeRead_TransferLength;
EMI_Bankx->BCR &= EMI_PageModeRead_Sel_Mask;
EMI_Bankx->BCR |= EMI_InitStruct->EMI_PageModeRead_Selection;
}
/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/