|
C8051F960-B-GM Datasheet, PDF (186/492 Pages) Silicon Laboratories – Ultra Low Power 128K, LCD MCU Family | |||
|
◁ |
C8051F96x
14.4.1. AES Block Cipher Encryption using DMA
Normally, the AES block is used with the DMA. This provides the best performance and lowest power con-
sumption. Code examples are provided in 8051 compiler independent C code using the DMA. It is highly
recommended to use with the code examples. The steps are documented in the datasheet for complete-
ness.
Steps to encrypt data using Simple AES block encryption (ECB mode)
ï® Prepare encryption Key and data to be encrypted in xram.
ï® Reset AES module by clearing bit 2 of AES0BCFG.
ï® Disable the first three DMA channels by clearing bits 0 to 2 in the DMA0EN sfr.
ï® Configure the first DMA channel for the AES0KIN sfr
ï¬ï Select the first DMA channel by writing 0x00 to the DMA0SEL sfr
ï¬ï Configure the second DMA channel to move xram to AES0KIN sfr by writing 0x05 to the DMA0NCF sfr
ï¬ï Write 0x01 tDMA0NMD to enable wrapping
ï¬ï Write the xram location of encryption key to the DMA0NBAH and DMA0NBAL sfrs.
ï¬ï Write the key length in bytes to the DMA0NSZL sfr
ï¬ï Clear the DMA0NSZH sfr
ï¬ï Clear the DMA0NAOH and DMA0NAOL sfrs.
ï® Configure the second DMA channel for the AES0BIN sfr.
ï¬ï Select the second DMA channel by writing 0x01 to the DMA0SEL sfr.
ï¬ï Configure the second DMA channel to move xram to the AES0BIN sfr by writing 0x06 to the DMA0NCF sfr.
ï¬ï Clear DMA0NMD to disable wrapping.
ï¬ï Write the xram address of the data to be encrypted to the DMA0NBAH and DMA0NBAL sfrs.
ï¬ï Write the number of bytes to be encrypted in multiples of 16 bytes to the DMA0NSZH and DMA0NSZL sfrs.
ï¬ï Clear the DMA0NAOH and DMA0NAOL sfrs.
ï® Configure the third DMA channel for the AES0YOUT sfr
ï¬ï Select the third DMA channel by writing 0x02 to the DMA0SEL sfr
ï¬ï Configure the third DMA channel to move the contents of the AES0YOUT sfr to xram by writing 0x08 to the
DMA0NCF sfr.
ï¬ï Enable transfer complete interrupt by setting bit 7 of DMA0NCF sfr.
ï¬ï Clear DMA0NMD to disable wrapping.
ï¬ï Write the xram address for encrypted data to the DMA0NBAH and DMA0NBAL sfrs.
ï¬ï Write the number of bytes to be encrypted in multiples of 16 bytes to the DMA0NSZH and DMA0NSZL sfrs.
ï¬ï Clear the DMA0NAOH and DMA0NAOL sfrs.
ï® Clear first three DMA interrupts by clearing bits 0 to 2 in the DMA0INT sfr.
ï® Enable first three DMA channels setting bits 0 to 2 in the DMA0EN sfr
ï® Configure the AES Module data flow for AES Block Cipher by writing 0x00 to the AES0DCFG sfr.
ï® Write key size to bits 1 and 0 of the AES0BCFG
ï® Configure the AES core for encryption by setting the bit 2 of AES0BCFG
ï® Initiate the encryption operation be setting bit 3 of AES0BCFG
ï® Wait on the DMA interrupt from DMA channel 2
ï® Disable the AES Module by clearing bit 2 of AES0BCFG
ï® Disable the DMA by writing 0x00 to DMA0EN
186
Rev. 1.0
|
▷ |