/**
|
******************************************************************************
|
* @file fm33a0xxev_aes.h
|
* @author FM33A0XXEV Application Team
|
* @version V1.0.0
|
* @date 16-April-2020
|
* @brief This file contains all the functions prototypes for the AES firmware library.
|
******************************************************************************
|
*/
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef __FM33A0XXEV_AES_H
|
#define __FM33A0XXEV_AES_H
|
|
|
#ifdef __cplusplus
|
extern "C" {
|
#endif
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "FM33A0XXEV.h"
|
|
//------------------------------------------------------------------------------
|
typedef struct
|
{
|
uint32_t KEYLEN; //AES¼ÓÃÜÃÜÔ¿³¤¶È£¬AESEN=1ʱ²»¿ÉÐÞ¸Ä
|
uint32_t CHMOD; //AESÊý¾ÝÁ÷´¦Àíģʽ£¬AESEN=1ʱ²»¿ÉÐÞ¸Ä
|
uint32_t MODE; //AES¹¤×÷ģʽ£¬AESEN=1ʱ²»¿ÉÐÞ¸Ä
|
uint32_t DATATYP; //Ñ¡ÔñÊý¾ÝÀàÐÍ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£¾ßÌå½»»»¹æÔò¿É²Î¿¼AESÊý¾ÝÀàÐÍÕ½Ú
|
FunState DMAOEN; //DMAÊý¾Ý×Ô¶¯¶Á³öʹÄÜ
|
FunState DMAIEN; //DMAÊý¾Ý×Ô¶¯Ð´ÈëʹÄÜ
|
FunState WERRIE; //´íÎó±êÖ¾£¨WRERR£©ÖжÏʹÄÜ
|
FunState RERRIE; //´íÎó±êÖ¾£¨RDERR£©ÖжÏʹÄÜ
|
FunState CCFIE; //CCF±êÖ¾ÖжÏʹÄÜ
|
FunState AESEN; //AESʹÄÜ
|
|
}AES_InitTypeDef;
|
|
#define AES_CR_KEYLEN_Pos 13 /* AES¼ÓÃÜÃÜÔ¿³¤¶È£¬AESEN=1ʱ²»¿ÉÐ޸ġ£
|
(Key Length)
|
00£º128bit
|
01£º192bit
|
10£º256bit
|
11£º±£Áô */
|
#define AES_CR_KEYLEN_Msk (0x3U << AES_CR_KEYLEN_Pos)
|
#define AES_CR_KEYLEN_128BIT (0x0U << AES_CR_KEYLEN_Pos) /* 128bit */
|
#define AES_CR_KEYLEN_192BIT (0x1U << AES_CR_KEYLEN_Pos) /* 192bit */
|
#define AES_CR_KEYLEN_256BIT (0x2U << AES_CR_KEYLEN_Pos) /* 256bit */
|
#define AES_CR_KEYLEN_ (0x3U << AES_CR_KEYLEN_Pos) /* ±£Áô */
|
|
#define AES_CR_DMAOEN_Pos 12 /* DMAÊý¾Ý×Ô¶¯¶Á³öʹÄÜ
|
(DMA output enable)
|
0£º²»¿ªÆô
|
1£º¿ªÆô
|
¸ÃλÖÃλºóÔÚģʽ1£¬Ä£Ê½3ºÍģʽ4ÏÂAESÄ£¿é»á×Ô¶¯²úÉúAES->RAMµÄ´«ÊäÇëÇó¡£Ä£Ê½2ϲ»»á²úÉú¡£ */
|
#define AES_CR_DMAOEN_Msk (0x1U << AES_CR_DMAOEN_Pos)
|
|
|
#define AES_CR_DMAIEN_Pos 11 /* ¿ªÆôDMAÊý¾Ý×Ô¶¯Ð´ÈëʹÄÜ
|
(DMA input enable)
|
0£º²»¿ªÆô
|
1£º¿ªÆô
|
¸ÃλÉèÖÃΪ1ºóÔÚģʽ1£¬Ä£Ê½3ºÍģʽ4ÒÔ¼°MultHģʽÏÂAESÄ£¿é»á×Ô¶¯²úÉúRAM->AESµÄ´«ÊäÇëÇó¡£Ä£Ê½2ϲ»»á²úÉú¡£ */
|
#define AES_CR_DMAIEN_Msk (0x1U << AES_CR_DMAIEN_Pos)
|
|
|
#define AES_CR_CHMOD_Pos 5 /* AESÊý¾ÝÁ÷´¦Àíģʽ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£
|
(Cipher Mode)
|
00£ºECB
|
01£ºCBC
|
10£ºCTR
|
11£ºÊ¹ÓÃMultHÄ£¿é */
|
#define AES_CR_CHMOD_Msk (0x3U << AES_CR_CHMOD_Pos)
|
#define AES_CR_CHMOD_ECB (0x0U << AES_CR_CHMOD_Pos) /* ECB */
|
#define AES_CR_CHMOD_CBC (0x1U << AES_CR_CHMOD_Pos) /* CBC */
|
#define AES_CR_CHMOD_CTR (0x2U << AES_CR_CHMOD_Pos) /* CTR */
|
#define AES_CR_CHMOD_MULTH (0x3U << AES_CR_CHMOD_Pos) /* ʹÓÃMultHÄ£¿é */
|
|
#define AES_CR_MODE_Pos 3 /* AES¹¤×÷ģʽ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£
|
(operation MODE)
|
00£ºÄ£Ê½1£º¼ÓÃÜ
|
01£ºÄ£Ê½2£ºÃÜÔ¿À©Õ¹
|
10£ºÄ£Ê½3£º½âÃÜ
|
11£ºÄ£Ê½4£ºÃÜÔ¿À©Õ¹+½âÃÜ
|
CTRģʽÏÂÅäÖóÉģʽ4½«×Ô¶¯½øÈëCTRµÄ½âÃÜģʽ¡£¼´ÔÚCHMOD=2¡¯b10ʱÅäÖÃMODE=2¡¯b11£¬AES½«°´ÕÕMODE=2¡¯b10µÄÇéÐÎÖ´ÐС£ */
|
#define AES_CR_MODE_Msk (0x3U << AES_CR_MODE_Pos)
|
#define AES_CR_MODE_ENCRYPT (0x0U << AES_CR_MODE_Pos) /* ģʽ1 */
|
#define AES_CR_MODE_KEYEXP (0x1U << AES_CR_MODE_Pos) /* ģʽ2 */
|
#define AES_CR_MODE_DECRYPT (0x2U << AES_CR_MODE_Pos) /* ģʽ3 */
|
#define AES_CR_MODE_KEYEXPDECRYPT (0x3U << AES_CR_MODE_Pos) /* ģʽ4 */
|
|
#define AES_CR_DATATYP_Pos 1 /* Ñ¡ÔñÊý¾ÝÀàÐÍ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£¾ßÌå½»»»¹æÔò¿É²Î¿¼AESÊý¾ÝÀàÐÍÕ½ڡ£
|
(Data type)
|
00£º32bitÊý¾Ý²»½»»»
|
01£º16bitÊý¾Ý°ë×Ö½»»»
|
10£º8bitÊý¾Ý×Ö½Ú½»»»
|
11£º1bitÊý¾Ý±ÈÌØ½»»» */
|
#define AES_CR_DATATYP_Msk (0x3U << AES_CR_DATATYP_Pos)
|
#define AES_CR_DATATYP_32BITNOEX (0x0U << AES_CR_DATATYP_Pos) /* 32bitÊý¾Ý²»½»»» */
|
#define AES_CR_DATATYP_16BITEX (0x1U << AES_CR_DATATYP_Pos) /* 16bitÊý¾Ý°ë×Ö½»»» */
|
#define AES_CR_DATATYP_8BITEX (0x2U << AES_CR_DATATYP_Pos) /* 8bitÊý¾Ý×Ö½Ú½»»» */
|
#define AES_CR_DATATYP_1BITEX (0x3U << AES_CR_DATATYP_Pos) /* 1bitÊý¾Ý±ÈÌØ½»»» */
|
|
#define AES_CR_EN_Pos 0 /* AESʹÄÜ (AES enable)
|
0£º²»Ê¹ÄÜ
|
1£ºÊ¹ÄÜ
|
ÔÚÈκÎʱºòÇå³ýAESENλ¶¼Äܹ»¸´Î»AESÄ£¿é
|
ÔÚģʽ2ϸÃλ»áÔÚÒ»´Î¼ÆËãÍê³ÉºóÓ²¼þ×Ô¶¯Çå0 */
|
#define AES_CR_EN_Msk (0x1U << AES_CR_EN_Pos)
|
/* ²»Ê¹ÄÜ */
|
/* ʹÄÜ */
|
|
#define AES_IER_WRERR_IE_Pos 2 /* д´íÎóÖжÏʹÄÜ£¬1ÓÐЧ¡£(Write Error interrupt enable) */
|
#define AES_IER_WRERR_IE_Msk (0x1U << AES_IER_WRERR_IE_Pos)
|
|
#define AES_IER_RDERR_IE_Pos 1 /* ¶Á´íÎóÖжÏʹÄÜ£¬1ÓÐЧ¡£(Read Error interrupt enable) */
|
#define AES_IER_RDERR_IE_Msk (0x1U << AES_IER_RDERR_IE_Pos)
|
|
#define AES_IER_CCF_IE_Pos 0 /* AES¼ÆËãÍê³ÉÖжÏʹÄÜ£¬1ÓÐЧ¡£(Cipher Complete Interrupt enable) */
|
#define AES_IER_CCF_IE_Msk (0x1U << AES_IER_CCF_IE_Pos)
|
|
#define AES_DIR_DIN_Pos 0 /* Êý¾ÝÊäÈë¼Ä´æÆ÷£¬µ±AESÐèÒªÊäÈë¼Ó½âÃÜÊý¾Ýʱ£¬Ó¦¸ÃÍù¸Ã¼Ä´æÆ÷Á¬ÐøÐ´4´Î¡£(AES Data Input)
|
ģʽ1£¨¼ÓÃÜ£©£º°ÑÃ÷ÎÄ´ÓMSBµ½LSB·Ö4´ÎдÈë¡£
|
ģʽ2£¨ÃÜÔ¿À©Õ¹£©£ºÎÞÐèʹÓÃÊý¾ÝÊäÈë¼Ä´æÆ÷
|
ģʽ3ºÍģʽ4£¨½âÃÜ£©£º°ÑÃÜÎÄ´ÓMSBµ½LSB·Ö4´ÎдÈë¡£
|
MultHģʽ£º°Ñ³ËÊýA»òC´ÓMSBµ½LSB·Ö4´ÎдÈë¡£ */
|
#define AES_DIR_DIN_Msk (0xffffffffU << AES_DIR_DIN_Pos)
|
|
#define AES_DOR_DOUT_Pos 0 /* Êý¾ÝÊä³ö¼Ä´æÆ÷£¬µ±AES¼ÆËãÍê³Éºó£¬¿ÉÒÔ·ÖËĴζÁ³ö¼Ó½âÃܵĽá¹û¡£(AES Data Output)
|
ģʽ1£¨¼ÓÃÜ£©£º°ÑÃÜÎÄ´ÓMSBµ½LSB·Ö4´Î¶Á³ö¡£
|
ģʽ2£¨ÃÜÔ¿À©Õ¹£©£ºÎÞÐèʹÓÃÊý¾ÝÊäÊä³ö¼Ä´æÆ÷
|
ģʽ3ºÍģʽ4£¨½âÃÜ£©£º°ÑÃ÷ÎÄ´ÓMSBµ½LSB·Ö4´ÎÊä³ö¡£
|
MultHģʽ£ºÔËËã½á¹û´æ´¢ÔÚIVR¼Ä´æÆ÷ÖУ¬ÎÞÐè¶ÁÈ¡AES_DOUTR¼Ä´æÆ÷¡£ */
|
#define AES_DOR_DOUT_Msk (0xffffffffU << AES_DOR_DOUT_Pos)
|
|
#define AES_KEY0_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */
|
#define AES_KEY0_KEYx_Msk (0xffffffffU << AES_KEY0_KEYx_Pos)
|
|
#define AES_KEY1_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */
|
#define AES_KEY1_KEYx_Msk (0xffffffffU << AES_KEY1_KEYx_Pos)
|
|
#define AES_KEY2_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */
|
#define AES_KEY2_KEYx_Msk (0xffffffffU << AES_KEY2_KEYx_Pos)
|
|
#define AES_KEY3_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */
|
#define AES_KEY3_KEYx_Msk (0xffffffffU << AES_KEY3_KEYx_Pos)
|
|
#define AES_KEY4_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */
|
#define AES_KEY4_KEYx_Msk (0xffffffffU << AES_KEY4_KEYx_Pos)
|
|
#define AES_KEY5_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */
|
#define AES_KEY5_KEYx_Msk (0xffffffffU << AES_KEY5_KEYx_Pos)
|
|
#define AES_KEY6_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */
|
#define AES_KEY6_KEYx_Msk (0xffffffffU << AES_KEY6_KEYx_Pos)
|
|
#define AES_KEY7_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */
|
#define AES_KEY7_KEYx_Msk (0xffffffffU << AES_KEY7_KEYx_Pos)
|
|
#define AES_IVR0_IVRx_Pos 0 /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£
|
(AES Initial Vector Registers) */
|
#define AES_IVR0_IVRx_Msk (0xffffffffU << AES_IVR0_IVRx_Pos)
|
|
#define AES_IVR1_IVRx_Pos 0 /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£
|
(AES Initial Vector Registers) */
|
#define AES_IVR1_IVRx_Msk (0xffffffffU << AES_IVR1_IVRx_Pos)
|
|
#define AES_IVR2_IVRx_Pos 0 /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£
|
(AES Initial Vector Registers) */
|
#define AES_IVR2_IVRx_Msk (0xffffffffU << AES_IVR2_IVRx_Pos)
|
|
#define AES_IVR3_IVRx_Pos 0 /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£
|
(AES Initial Vector Registers) */
|
#define AES_IVR3_IVRx_Msk (0xffffffffU << AES_IVR3_IVRx_Pos)
|
|
#define AES_H0_Hx_Pos 0 /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter)
|
H0±£´æH[31:0]£¬H3±£´æH[127:96] */
|
#define AES_H0_Hx_Msk (0xffffffffU << AES_H0_Hx_Pos)
|
|
#define AES_H1_Hx_Pos 0 /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter)
|
H0±£´æH[31:0]£¬H3±£´æH[127:96] */
|
#define AES_H1_Hx_Msk (0xffffffffU << AES_H1_Hx_Pos)
|
|
#define AES_H2_Hx_Pos 0 /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter)
|
H0±£´æH[31:0]£¬H3±£´æH[127:96] */
|
#define AES_H2_Hx_Msk (0xffffffffU << AES_H2_Hx_Pos)
|
|
#define AES_H3_Hx_Pos 0 /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter)
|
H0±£´æH[31:0]£¬H3±£´æH[127:96] */
|
#define AES_H3_Hx_Msk (0xffffffffU << AES_H3_Hx_Pos)
|
|
#define AES_ISR_WRERR_Pos 2 /* д´íÎó±êÖ¾£ºÔÚ¼ÆËã»òÊä³ö½×¶Î·¢Éúд²Ù×÷ʱÖÃ룬Èí¼þд1ÇåÁã */
|
#define AES_ISR_WRERR_Msk (0x1U << AES_ISR_WRERR_Pos)
|
|
#define AES_ISR_RDERR_Pos 1 /* ¶Á´íÎó±êÖ¾£ºÔÚ¼ÆËã»òÊäÈë½×¶Î·¢Éú¶Á²Ù×÷ʱÖÃ룬Èí¼þд1ÇåÁã */
|
#define AES_ISR_RDERR_Msk (0x1U << AES_ISR_RDERR_Pos)
|
|
#define AES_ISR_CCF_Pos 0 /* AES¼ÆËãÍê³É±êÖ¾£¬Èí¼þд1ÇåÁã
|
1£º¼ÆËãÍê³É
|
0£º¼ÆËãûÓÐÍê³É */
|
#define AES_ISR_CCF_Msk (0x1U << AES_ISR_CCF_Pos)
|
//Macro_End
|
|
/* Exported functions --------------------------------------------------------*/
|
extern void AES_Deinit(void);
|
|
/* AES¼ÓÃÜÃÜÔ¿³¤¶È£¬AESEN=1ʱ²»¿ÉÐ޸ġ£
|
(Key Length)
|
00£º128bit
|
01£º192bit
|
10£º256bit
|
11£º±£Áô Ïà¹Øº¯Êý */
|
extern void AES_CR_KEYLEN_Set(uint32_t SetValue);
|
extern uint32_t AES_CR_KEYLEN_Get(void);
|
|
/* DMAÊý¾Ý×Ô¶¯¶Á³öʹÄÜ
|
(DMA output enable)
|
0£º²»¿ªÆô
|
1£º¿ªÆô
|
¸ÃλÖÃλºóÔÚģʽ1£¬Ä£Ê½3ºÍģʽ4ÏÂAESÄ£¿é»á×Ô¶¯²úÉúAES->RAMµÄ´«ÊäÇëÇó¡£Ä£Ê½2ϲ»»á²úÉú¡£ Ïà¹Øº¯Êý */
|
extern void AES_CR_DMAOEN_Setable(FunState NewState);
|
extern FunState AES_CR_DMAOEN_Getable(void);
|
|
|
/* ¿ªÆôDMAÊý¾Ý×Ô¶¯Ð´ÈëʹÄÜ
|
(DMA input enable)
|
0£º²»¿ªÆô
|
1£º¿ªÆô
|
¸ÃλÉèÖÃΪ1ºóÔÚģʽ1£¬Ä£Ê½3ºÍģʽ4ÒÔ¼°MultHģʽÏÂAESÄ£¿é»á×Ô¶¯²úÉúRAM->AESµÄ´«ÊäÇëÇó¡£Ä£Ê½2ϲ»»á²úÉú¡£ Ïà¹Øº¯Êý */
|
extern void AES_CR_DMAIEN_Setable(FunState NewState);
|
extern FunState FunStateAES_CR_DMAIEN_Getable(void);
|
|
/* AESÊý¾ÝÁ÷´¦Àíģʽ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£
|
(Cipher Mode)
|
00£ºECB
|
01£ºCBC
|
10£ºCTR
|
11£ºÊ¹ÓÃMultHÄ£¿é Ïà¹Øº¯Êý */
|
extern void AES_CR_CHMOD_Set(uint32_t SetValue);
|
extern uint32_t AES_CR_CHMOD_Get(void);
|
|
/* AES¹¤×÷ģʽ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£
|
(operation MODE)
|
00£ºÄ£Ê½1£º¼ÓÃÜ
|
01£ºÄ£Ê½2£ºÃÜÔ¿À©Õ¹
|
10£ºÄ£Ê½3£º½âÃÜ
|
11£ºÄ£Ê½4£ºÃÜÔ¿À©Õ¹+½âÃÜ
|
CTRģʽÏÂÅäÖóÉģʽ4½«×Ô¶¯½øÈëCTRµÄ½âÃÜģʽ¡£¼´ÔÚCHMOD=2¡¯b10ʱÅäÖÃMODE=2¡¯b11£¬AES½«°´ÕÕMODE=2¡¯b10µÄÇéÐÎÖ´ÐС£ Ïà¹Øº¯Êý */
|
extern void AES_CR_MODE_Set(uint32_t SetValue);
|
extern uint32_t AES_CR_MODE_Get(void);
|
|
/* Ñ¡ÔñÊý¾ÝÀàÐÍ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£¾ßÌå½»»»¹æÔò¿É²Î¿¼AESÊý¾ÝÀàÐÍÕ½ڡ£
|
(Data type)
|
00£º32bitÊý¾Ý²»½»»»
|
01£º16bitÊý¾Ý°ë×Ö½»»»
|
10£º8bitÊý¾Ý×Ö½Ú½»»»
|
11£º1bitÊý¾Ý±ÈÌØ½»»» Ïà¹Øº¯Êý */
|
extern void AES_CR_DATATYP_Set(uint32_t SetValue);
|
extern uint32_t AES_CR_DATATYP_Get(void);
|
|
/* AESʹÄÜ (AES enable)
|
0£º²»Ê¹ÄÜ
|
1£ºÊ¹ÄÜ
|
ÔÚÈκÎʱºòÇå³ýAESENλ¶¼Äܹ»¸´Î»AESÄ£¿é
|
ÔÚģʽ2ϸÃλ»áÔÚÒ»´Î¼ÆËãÍê³ÉºóÓ²¼þ×Ô¶¯Çå0 Ïà¹Øº¯Êý */
|
extern void AES_CR_EN_Setable(FunState NewState);
|
extern FunState AES_CR_EN_Getable(void);
|
|
/* д´íÎóÖжÏʹÄÜ£¬1ÓÐЧ¡£(Write Error interrupt enable) Ïà¹Øº¯Êý */
|
extern void AES_IER_WRERR_IE_Setable(FunState NewState);
|
extern FunState AES_IER_WRERR_IE_Getable(void);
|
|
/* ¶Á´íÎóÖжÏʹÄÜ£¬1ÓÐЧ¡£(Read Error interrupt enable) Ïà¹Øº¯Êý */
|
extern void AES_IER_RDERR_IE_Setable(FunState NewState);
|
extern FunState AES_IER_RDERR_IE_Getable(void);
|
|
/* AES¼ÆËãÍê³ÉÖжÏʹÄÜ£¬1ÓÐЧ¡£(Cipher Complete Interrupt enable) Ïà¹Øº¯Êý */
|
extern void AES_IER_CCF_IE_Setable(FunState NewState);
|
extern FunState AES_IER_CCF_IE_Getable(void);
|
|
/* Êý¾ÝÊäÈë¼Ä´æÆ÷£¬µ±AESÐèÒªÊäÈë¼Ó½âÃÜÊý¾Ýʱ£¬Ó¦¸ÃÍù¸Ã¼Ä´æÆ÷Á¬ÐøÐ´4´Î¡£(AES Data Input)
|
ģʽ1£¨¼ÓÃÜ£©£º°ÑÃ÷ÎÄ´ÓMSBµ½LSB·Ö4´ÎдÈë¡£
|
ģʽ2£¨ÃÜÔ¿À©Õ¹£©£ºÎÞÐèʹÓÃÊý¾ÝÊäÈë¼Ä´æÆ÷
|
ģʽ3ºÍģʽ4£¨½âÃÜ£©£º°ÑÃÜÎÄ´ÓMSBµ½LSB·Ö4´ÎдÈë¡£
|
MultHģʽ£º°Ñ³ËÊýA»òC´ÓMSBµ½LSB·Ö4´ÎдÈë¡£ Ïà¹Øº¯Êý */
|
extern void AES_DIR_Write(uint32_t SetValue);
|
extern uint32_t AES_DIR_Read(void);
|
|
/* Êý¾ÝÊä³ö¼Ä´æÆ÷£¬µ±AES¼ÆËãÍê³Éºó£¬¿ÉÒÔ·ÖËĴζÁ³ö¼Ó½âÃܵĽá¹û¡£(AES Data Output)
|
ģʽ1£¨¼ÓÃÜ£©£º°ÑÃÜÎÄ´ÓMSBµ½LSB·Ö4´Î¶Á³ö¡£
|
ģʽ2£¨ÃÜÔ¿À©Õ¹£©£ºÎÞÐèʹÓÃÊý¾ÝÊäÊä³ö¼Ä´æÆ÷
|
ģʽ3ºÍģʽ4£¨½âÃÜ£©£º°ÑÃ÷ÎÄ´ÓMSBµ½LSB·Ö4´ÎÊä³ö¡£
|
MultHģʽ£ºÔËËã½á¹û´æ´¢ÔÚIVR¼Ä´æÆ÷ÖУ¬ÎÞÐè¶ÁÈ¡AES_DOUTR¼Ä´æÆ÷¡£ Ïà¹Øº¯Êý */
|
extern uint32_t AES_DOR_Read(void);
|
|
/* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */
|
extern void AES_KEY0_Write(uint32_t SetValue);
|
|
/* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */
|
extern void AES_KEY1_Write(uint32_t SetValue);
|
|
/* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */
|
extern void AES_KEY2_Write(uint32_t SetValue);
|
|
/* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */
|
extern void AES_KEY3_Write(uint32_t SetValue);
|
|
/* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */
|
extern void AES_KEY4_Write(uint32_t SetValue);
|
|
/* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */
|
extern void AES_KEY5_Write(uint32_t SetValue);
|
|
/* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */
|
extern void AES_KEY6_Write(uint32_t SetValue);
|
|
/* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key)
|
×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */
|
extern void AES_KEY7_Write(uint32_t SetValue);
|
|
/* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£
|
(AES Initial Vector Registers) Ïà¹Øº¯Êý */
|
extern void AES_IVR0_Write(uint32_t SetValue);
|
extern uint32_t AES_IVR0_Read(void);
|
|
/* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£
|
(AES Initial Vector Registers) Ïà¹Øº¯Êý */
|
extern void AES_IVR1_Write(uint32_t SetValue);
|
extern uint32_t AES_IVR1_Read(void);
|
|
/* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£
|
(AES Initial Vector Registers) Ïà¹Øº¯Êý */
|
extern void AES_IVR2_Write(uint32_t SetValue);
|
extern uint32_t AES_IVR2_Read(void);
|
|
/* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£
|
(AES Initial Vector Registers) Ïà¹Øº¯Êý */
|
extern void AES_IVR3_Write(uint32_t SetValue);
|
extern uint32_t AES_IVR3_Read(void);
|
|
/* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter)
|
H0±£´æH[31:0]£¬H3±£´æH[127:96] Ïà¹Øº¯Êý */
|
extern void AES_H0_Write(uint32_t SetValue);
|
extern uint32_t AES_H0_Read(void);
|
|
/* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter)
|
H0±£´æH[31:0]£¬H3±£´æH[127:96] Ïà¹Øº¯Êý */
|
extern void AES_H1_Write(uint32_t SetValue);
|
extern uint32_t AES_H1_Read(void);
|
|
/* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter)
|
H0±£´æH[31:0]£¬H3±£´æH[127:96] Ïà¹Øº¯Êý */
|
extern void AES_H2_Write(uint32_t SetValue);
|
extern uint32_t AES_H2_Read(void);
|
|
/* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter)
|
H0±£´æH[31:0]£¬H3±£´æH[127:96] Ïà¹Øº¯Êý */
|
extern void AES_H3_Write(uint32_t SetValue);
|
extern uint32_t AES_H3_Read(void);
|
|
/* д´íÎó±êÖ¾£ºÔÚ¼ÆËã»òÊä³ö½×¶Î·¢Éúд²Ù×÷ʱÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */
|
extern void AES_ISR_WRERR_Clr(void);
|
extern FlagStatus AES_ISR_WRERR_Chk(void);
|
|
/* ¶Á´íÎó±êÖ¾£ºÔÚ¼ÆËã»òÊäÈë½×¶Î·¢Éú¶Á²Ù×÷ʱÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */
|
extern void AES_ISR_RDERR_Clr(void);
|
extern FlagStatus AES_ISR_RDERR_Chk(void);
|
|
/* AES¼ÆËãÍê³É±êÖ¾£¬Èí¼þд1ÇåÁã
|
1£º¼ÆËãÍê³É
|
0£º¼ÆËãûÓÐÍê³É Ïà¹Øº¯Êý */
|
extern void AES_ISR_CCF_Clr(void);
|
extern FlagStatus AES_ISR_CCF_Chk(void);
|
//Announce_End
|
|
|
extern void AES_KEY_WriteEx(uint8_t *KeyIn, uint8_t Len);
|
extern void AES_IVR_WriteEx(uint8_t *IVRIn);
|
extern void AES_IVR_ReadEx(uint8_t *IVROut);
|
extern void AES_DIN_GroupWrite_128BIT(uint8_t *DataIn);
|
extern void AES_DOUT_GroupRead_128BIT(uint8_t *DataOut);
|
extern uint8_t AES_GroupWriteAndRead_128BIT(uint8_t *DataIn, uint8_t *DataOut);
|
extern uint8_t AES_GroupWriteAndRead_128BIT_IVR(uint8_t *DataIn, uint8_t *DataOut);
|
extern void AES_Init(AES_InitTypeDef* para);
|
extern void AES_Hx_WriteEx(uint8_t *HxIn, uint8_t Len);
|
extern void AES_Hx_ReadEx(uint8_t *HxOut, uint8_t Len);
|
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#endif /*__FM33A0XXEV_AES_H */
|