/**
|
******************************************************************************
|
* @file fm33a0xxev_pae.c
|
* @author FM33A0XXEV Application Team
|
* @version V1.0.0
|
* @date 16-April-2020
|
* @brief This file provides firmware functions to manage the following
|
* functionalities of....:
|
*
|
*/
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "fm33a0xxev_pae.h"
|
|
/** @addtogroup fm33a0xxev_StdPeriph_Driver
|
* @{
|
*/
|
|
/** @defgroup PAE
|
* @brief PAE driver modules
|
* @{
|
*/
|
|
/* ÊäÈëÊý¾Ý˳Ðò½»»»¿ØÖÆ
|
00£º²»½»»»
|
01£ºhalf-word½»»»
|
10£ºbyte½»»»
|
11£ºbit½»»»
|
´Ë¼Ä´æÆ÷ÓÃÓÚ¶ÔÊäÈë32bitÊý¾ÝµÄλÐò½øÐе÷Õû£»±ÈÈçÊäÈëΪ0x1234_5678£¬half-word½»»»ºóΪ0x5678_1234£¬byte½»»»ºóΪ0x7856_3412£¬bit½»»»ºóΪ0x1E6A_2C48 Ïà¹Øº¯Êý */
|
void PAE_CSR_DATA_TYPE_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->CSR;
|
tmpreg &= ~(PAE_CSR_DATA_TYPE_Msk);
|
tmpreg |= (SetValue & PAE_CSR_DATA_TYPE_Msk);
|
PAE->CSR = tmpreg;
|
}
|
|
uint32_t PAE_CSR_DATA_TYPE_Get(void)
|
{
|
return (PAE->CSR & PAE_CSR_DATA_TYPE_Msk);
|
}
|
|
/* ÔËËãÆô¶¯Î»£¬Èí¼þд1Æô¶¯¼ÆË㣬¼ÆËã½áÊøºóÓ²¼þ×Ô¶¯ÇåÁã Ïà¹Øº¯Êý */
|
void PAE_CSR_START_Setable(FunState NewState)
|
{
|
if (NewState == ENABLE)
|
{
|
PAE->CSR |= (PAE_CSR_START_Msk);
|
}
|
else
|
{
|
PAE->CSR &= ~(PAE_CSR_START_Msk);
|
}
|
}
|
|
/* Ä£¿é¹¤×÷ģʽ£º
|
00£ºÄ£Ê½0£¬µ¥´ÎÄ£ÔËË㣬¿ÉÅäÖÃ4Block/16Block
|
01£ºÄ£Ê½1£¬µ¥´ÎµãÔËË㣬¹Ì¶¨16Block
|
10£ºÄ£Ê½2£¬32bitÃÜÔ¿Á¬ÐøRSAÔËË㣬¹Ì¶¨4Block
|
11£ºÄ£Ê½3£¬32bitÃÜÔ¿Á¬ÐøECCÔËË㣬¹Ì¶¨16Block Ïà¹Øº¯Êý */
|
void PAE_CSR_RUN_MODE_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->CSR;
|
tmpreg &= ~(PAE_CSR_RUN_MODE_Msk);
|
tmpreg |= (SetValue & PAE_CSR_RUN_MODE_Msk);
|
PAE->CSR = tmpreg;
|
}
|
|
uint32_t PAE_CSR_RUN_MODE_Get(void)
|
{
|
return (PAE->CSR & PAE_CSR_RUN_MODE_Msk);
|
}
|
|
/* PAEÈí¼þ¸´Î»£¬Èí¼þд1¸´Î»PAEÄÚ²¿Ö÷Òª¼Ä´æÆ÷£¨Ä£³¤¼Ä´æÆ÷PAE_MLRºÍÄ£²Î¼Ä´æÆ÷PAE_MPR²»ÊÜÓ°Ï죩£¬¸´Î»½áÊøºóÓ²¼þ×Ô¶¯ÇåÁã
|
×¢Ò⣺Èí¼þдSOFT_RSTÖ®ºó£¬Ðè²åÈëÖÁÉÙÒ»ÌõNOPÖ¸Áîºó£¬ÔÙдÈëPAEÆäËû¼Ä´æÆ÷£»ÔÚSOFT_RST²Ù×÷ºóÁ¢¼´Ð´PAE¼Ä´æÆ÷¿ÉÄÜдÈëʧ°Ü¡£ Ïà¹Øº¯Êý */
|
void PAE_CSR_SOFT_RST_Setable(FunState NewState)
|
{
|
if (NewState == ENABLE)
|
{
|
PAE->CSR |= (PAE_CSR_SOFT_RST_Msk);
|
}
|
else
|
{
|
PAE->CSR &= ~(PAE_CSR_SOFT_RST_Msk);
|
}
|
}
|
|
/* PAEÖжÏʹÄÜ
|
1£ºÊ¹ÄÜÖжÏÊä³ö
|
0£º½ûÖ¹ÖжÏÊä³ö Ïà¹Øº¯Êý */
|
void PAE_CSR_PAEIE_Setable(FunState NewState)
|
{
|
if (NewState == ENABLE)
|
{
|
PAE->CSR |= (PAE_CSR_PAEIE_Msk);
|
}
|
else
|
{
|
PAE->CSR &= ~(PAE_CSR_PAEIE_Msk);
|
}
|
}
|
|
FunState PAE_CSR_PAEIE_Getable(void)
|
{
|
if (PAE->CSR & (PAE_CSR_PAEIE_Msk))
|
{
|
return ENABLE;
|
}
|
else
|
{
|
return DISABLE;
|
}
|
}
|
/* PAEÖжϱêÖ¾¼Ä´æÆ÷ Ïà¹Øº¯Êý */
|
void PAE_CSR_PAEIF_Clr(void)
|
{
|
PAE->CSR = PAE_CSR_PAEIF_Msk;
|
}
|
|
FlagStatus PAE_CSR_PAEIF_Chk(void)
|
{
|
if (PAE->CSR & PAE_CSR_PAEIF_Msk)
|
{
|
return SET;
|
}
|
else
|
{
|
return RESET;
|
}
|
}
|
|
/* PAE¹¤×÷±êÖ¾
|
1£ºPAEÕýÔÚÔËËãÖÐ
|
0£ºPAE¿ÕÏÐ Ïà¹Øº¯Êý */
|
FlagStatus PAE_CSR_BUSY_Chk(void)
|
{
|
if (PAE->CSR & PAE_CSR_BUSY_Msk)
|
{
|
return SET;
|
}
|
else
|
{
|
return RESET;
|
}
|
}
|
|
/* ÔÚRAMÅäÖÃΪ4 Blockʱ£¬Ä£³¤×î´óΪ2048bit£º
|
Ä£³¤=£¨MLR[5:0]+1£©*32λ¡£
|
ÔÚRAMÅäÖÃΪ16 Blockʱ£¬Ä£³¤×î´óΪ512bit£¬MLRÖ»ÓеÍ4bitÓÐЧ£º
|
Ä£³¤=£¨MLR[3:0]+1£©*32λ¡£ Ïà¹Øº¯Êý */
|
void PAE_MLR_Write(uint32_t SetValue)
|
{
|
PAE->MLR = (SetValue & PAE_MLR_PAE_MLR_Msk);
|
}
|
|
uint32_t PAE_MLR_Read(void)
|
{
|
return (PAE->MLR & PAE_MLR_PAE_MLR_Msk);
|
}
|
|
/* 32bitÄ£²Î¼Ä´æÆ÷£¬Ö»¿Éд£¬²»¿É¶Á Ïà¹Øº¯Êý */
|
void PAE_MPR_Write(uint32_t SetValue)
|
{
|
PAE->MPR = (SetValue);
|
}
|
|
/* RAM BlockÅäÖÃλ
|
1£ºËã·¨RAMÅäÖÃΪ16 Block
|
0£ºËã·¨RAMÅäÖÃλ4 Block Ïà¹Øº¯Êý */
|
void PAE_M0CFG_BLKCFG_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M0CFG;
|
tmpreg &= ~(PAE_M0CFG_BLKCFG_Msk);
|
tmpreg |= (SetValue & PAE_M0CFG_BLKCFG_Msk);
|
PAE->M0CFG = tmpreg;
|
}
|
|
uint32_t PAE_M0CFG_BLKCFG_Get(void)
|
{
|
return (PAE->M0CFG & PAE_M0CFG_BLKCFG_Msk);
|
}
|
|
/* µ¥´ÎÄ£ÔËËãÖ¸Á
|
00£ºÃɸçÂíÀûÄ£³Ë
|
01£ºÃɸçÂíÀûÄ£¼Ó
|
10£ºRFU
|
11£ºÃɸçÂíÀûÄ£¼õ Ïà¹Øº¯Êý */
|
void PAE_M0CFG_INS_M0_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M0CFG;
|
tmpreg &= ~(PAE_M0CFG_INS_M0_Msk);
|
tmpreg |= (SetValue & PAE_M0CFG_INS_M0_Msk);
|
PAE->M0CFG = tmpreg;
|
}
|
|
uint32_t PAE_M0CFG_INS_M0_Get(void)
|
{
|
return (PAE->M0CFG & PAE_M0CFG_INS_M0_Msk);
|
}
|
|
/* ÅäÖÃÔËËã½á¹ûËùÔÚBlock
|
µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15
|
µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 Ïà¹Øº¯Êý */
|
void PAE_M0CFG_RES_BLK_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M0CFG;
|
tmpreg &= ~(PAE_M0CFG_RES_BLK_Msk);
|
tmpreg |= (SetValue & PAE_M0CFG_RES_BLK_Msk);
|
PAE->M0CFG = tmpreg;
|
}
|
|
uint32_t PAE_M0CFG_RES_BLK_Get(void)
|
{
|
return (PAE->M0CFG & PAE_M0CFG_RES_BLK_Msk);
|
}
|
|
/* ²Ù×÷Êý1µØÖ·£º
|
µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15
|
µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 Ïà¹Øº¯Êý */
|
void PAE_M0CFG_OP1_BLK_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M0CFG;
|
tmpreg &= ~(PAE_M0CFG_OP1_BLK_Msk);
|
tmpreg |= (SetValue & PAE_M0CFG_OP1_BLK_Msk);
|
PAE->M0CFG = tmpreg;
|
}
|
|
uint32_t PAE_M0CFG_OP1_BLK_Get(void)
|
{
|
return (PAE->M0CFG & PAE_M0CFG_OP1_BLK_Msk);
|
}
|
|
/* ²Ù×÷Êý2µØÖ·£º
|
µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15
|
µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 Ïà¹Øº¯Êý */
|
void PAE_M0CFG_OP2_BLK_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M0CFG;
|
tmpreg &= ~(PAE_M0CFG_OP2_BLK_Msk);
|
tmpreg |= (SetValue & PAE_M0CFG_OP2_BLK_Msk);
|
PAE->M0CFG = tmpreg;
|
}
|
|
uint32_t PAE_M0CFG_OP2_BLK_Get(void)
|
{
|
return (PAE->M0CFG & PAE_M0CFG_OP2_BLK_Msk);
|
}
|
|
/* µ¥´ÎµãÔËËãÖ¸Á
|
000£ºJacobin×ø±ê±¶µãÔËËã
|
001£º»ìºÏ×ø±êµã¼ÓÔËËã
|
010£ºRFU
|
011£ºÃɸçÂíÀûµã³Ë±¶µãÔËË㣨ECDBL£©
|
100£ºÃɸçÂíÀûµã³Ë±¶µãµã¼ÓÔËË㣨ECADDDBL£©
|
101£ºÃɸçÂíÀûµã³ËY×ø±ê»Ö¸´ÔËË㣨ECYRecover£©
|
110£ºRFU
|
111£ºRFU Ïà¹Øº¯Êý */
|
void PAE_M1CFG_INS_M1_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M1CFG;
|
tmpreg &= ~(PAE_M1CFG_INS_M1_Msk);
|
tmpreg |= (SetValue & PAE_M1CFG_INS_M1_Msk);
|
PAE->M1CFG = tmpreg;
|
}
|
|
uint32_t PAE_M1CFG_INS_M1_Get(void)
|
{
|
return (PAE->M1CFG & PAE_M1CFG_INS_M1_Msk);
|
}
|
|
/* ²ÎÊýAָʾÐźÅ
|
1£ºAµÈÓÚ-3
|
0£ºA²»µÈÓÚ-3 Ïà¹Øº¯Êý */
|
void PAE_M1CFG_AEN3_M1_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M1CFG;
|
tmpreg &= ~(PAE_M1CFG_AEN3_M1_Msk);
|
tmpreg |= (SetValue & PAE_M1CFG_AEN3_M1_Msk);
|
PAE->M1CFG = tmpreg;
|
}
|
|
uint32_t PAE_M1CFG_AEN3_M1_Get(void)
|
{
|
return (PAE->M1CFG & PAE_M1CFG_AEN3_M1_Msk);
|
}
|
|
/* µ±Ç°¼ÆËãÃÜԿλָʾ±êÖ¾
|
1£ºµ±Ç°Î»Îª1
|
0£ºµ±Ç°Î»Îª0 Ïà¹Øº¯Êý */
|
void PAE_M1CFG_BIT_VALUE_M1_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M1CFG;
|
tmpreg &= ~(PAE_M1CFG_BIT_VALUE_M1_Msk);
|
tmpreg |= (SetValue & PAE_M1CFG_BIT_VALUE_M1_Msk);
|
PAE->M1CFG = tmpreg;
|
}
|
|
uint32_t PAE_M1CFG_BIT_VALUE_M1_Get(uint32_t SetValue)
|
{
|
return (PAE->M1CFG & PAE_M1CFG_BIT_VALUE_M1_Msk);
|
}
|
|
/* ÐéÄ£³Ë¿ØÖÆÎ»
|
1£ºµ±Ç°ÃÜԿλΪ0ʱͬÑù½øÐÐÄ£³Ë²Ù×÷
|
0£ºµ±Ç°ÃÜԿλΪ0ʱ²»½øÐÐÄ£³Ë²Ù×÷ Ïà¹Øº¯Êý */
|
void PAE_M2CFG_ALWAYS_MULT_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M2CFG;
|
tmpreg &= ~(PAE_M2CFG_ALWAYS_MULT_Msk);
|
tmpreg |= (SetValue & PAE_M2CFG_ALWAYS_MULT_Msk);
|
PAE->M2CFG = tmpreg;
|
}
|
|
uint32_t PAE_M2CFG_ALWAYS_MULT_Get(void)
|
{
|
return (PAE->M2CFG & PAE_M2CFG_ALWAYS_MULT_Msk);
|
}
|
|
/* ÃÜԿλָʾÐźţ¬Ó²¼þ×Ô¶¯ÖÃ룬Èí¼þÇåÁã
|
1£ºÒÑÕÒµ½Îª1µÄbit
|
0£ºÎ´ÕÒµ½Îª1µÄbit Ïà¹Øº¯Êý */
|
void PAE_M2CFG_FBO_M2_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M2CFG;
|
tmpreg &= ~(PAE_M2CFG_FBO_M2_Msk);
|
tmpreg |= (SetValue & PAE_M2CFG_FBO_M2_Msk);
|
PAE->M2CFG = tmpreg;
|
}
|
|
uint32_t PAE_M2CFG_FBO_M2_Get(void)
|
{
|
return (PAE->M2CFG & PAE_M2CFG_FBO_M2_Msk);
|
}
|
|
/* ²ÎÊýAָʾÐźÅ
|
1£ºAµÈÓÚ-3
|
0£ºA²»µÈÓÚ-3 Ïà¹Øº¯Êý */
|
void PAE_M3CFG_AEN3_M3_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M3CFG;
|
tmpreg &= ~(PAE_M3CFG_AEN3_M3_Msk);
|
tmpreg |= (SetValue & PAE_M3CFG_AEN3_M3_Msk);
|
PAE->M3CFG = tmpreg;
|
}
|
|
uint32_t PAE_M3CFG_AEN3_M3_Get(void)
|
{
|
return (PAE->M3CFG & PAE_M3CFG_AEN3_M3_Msk);
|
}
|
|
/* ÃÜԿλָʾÐźţ¬Ó²¼þ×Ô¶¯ÖÃ룬Èí¼þÇåÁã
|
1£ºÒÑÕÒµ½Îª1µÄbit
|
0£ºÎ´ÕÒµ½Îª1µÄbit Ïà¹Øº¯Êý */
|
void PAE_M3CFG_FBO_M3_Set(uint32_t SetValue)
|
{
|
uint32_t tmpreg;
|
tmpreg = PAE->M3CFG;
|
tmpreg &= ~(PAE_M3CFG_FBO_M3_Msk);
|
tmpreg |= (SetValue & PAE_M3CFG_FBO_M3_Msk);
|
PAE->M3CFG = tmpreg;
|
}
|
|
uint32_t PAE_M3CFG_FBO_M3_Get(void)
|
{
|
return (PAE->M3CFG & PAE_M3CFG_FBO_M3_Msk);
|
}
|
|
/* 32bitÊý¾Ý¼Ä´æÆ÷£¬Ö»¿Éд£¬²»¿É¶Á£»½öÔÚÁ¬ÐøRSAÔËËãºÍÁ¬ÐøECCÔËËãģʽÏÂÓÐЧ¡£ Ïà¹Øº¯Êý */
|
void PAE_WORD_Write(uint32_t SetValue)
|
{
|
PAE->WORD = (SetValue);
|
}
|
|
|
void PAE_Deinit(void)
|
{
|
//PAE->CSR = 0x00000000;
|
//PAE->MLR = 0x00000000;
|
//PAE->MPR = 0x00000000;
|
//PAE->M0CFG = 0x00000000;
|
//PAE->M1CFG = 0x00000000;
|
//PAE->M2CFG = 0x00000000;
|
//PAE->M3CFG = 0x00000000;
|
//PAE->WORD = 0x00000000;
|
}
|
|
/******END OF FILE****/
|