AM64x MCU+ SDK  08.02.00
CRC

CRC (Cyclic Redundancy Check) driver provide API to perform CRC operation

Features Supported

  • Four channels
  • 8, 16, 32 and 64 bit data size
  • CPU mode of operations

SysConfig Features

Note
It is strongly recommend to use SysConfig where it is available instead of using direct SW API calls. This will help simplify the SW application and also catch common mistakes early in the development cycle.
  • CRC instances selection

Features NOT Supported

  • DMA mode of operation

Important Usage Guidelines

  • None

Example Usage

Include the below file to access the APIs

#include <drivers/crc.h>

CRC Module Initialization Example

int32_t status;
status = CRC_channelReset(gCrcBaseAddr, crcChNumber);
status = CRC_initialize(gCrcBaseAddr, crcChNumber, 0, 0);

CRC Module Configuration Example

int32_t status;
uint32_t patternCnt, sectCnt, mode;
patternCnt = 100; /* Calculate CRC for 100 words */
sectCnt = 1;
mode = CRC_OPERATION_MODE_FULLCPU; /* CPU mode */
status = CRC_configure(gCrcBaseAddr, crcChNumber, patternCnt, sectCnt, mode);

CRC Operation Example

int32_t status;
CRC_SignatureRegAddr psaSignRegAddr;
CRC_Signature sectSignVal;
uint32_t patternCnt;
uint32_t loopCnt, data = 0xAA55AA55;
/* Get CRC PSA signature register address */
status = CRC_getPSASigRegAddr(gCrcBaseAddr, crcChNumber, &psaSignRegAddr);
/* Perform CRC operation - write data to PSA signature register */
patternCnt = 100; /* Calculate CRC for 100 words */
for(loopCnt = 0; loopCnt < patternCnt; loopCnt++)
{
HW_WR_REG32(psaSignRegAddr.regL, data); /* 32-bit mode */
}
/* Get the calculated CRC signature value */
status = CRC_getPSASectorSig(gCrcBaseAddr, crcChNumber, &sectSignVal);

API

APIs for CRC

CRC_OPERATION_MODE_FULLCPU
#define CRC_OPERATION_MODE_FULLCPU
Definition: crc/v0/crc.h:137
CRC_getPSASectorSig
int32_t CRC_getPSASectorSig(uint32_t baseAddr, CRC_Channel_t channel, CRC_Signature *pCRCSectorSign)
This API is used to get sector signature Value/ CRC value for given channel.
crc.h
CRC_Channel_t
uint32_t CRC_Channel_t
CRC channel supported.
Definition: crc/v0/crc.h:149
CRC_configure
int32_t CRC_configure(uint32_t baseAddr, CRC_Channel_t channel, uint32_t crcPatternCount, uint32_t crcSectorCount, CRC_OperationMode_t crcMode)
This API will configure CRC mode, pattern and sector count for given channel.
data
uint32_t data
Definition: tisci_rm_psil.h:1
CRC_Signature
Structure for accessing CRC register data which are 64 bit wide.
Definition: crc/v0/crc.h:248
CRC_SignatureRegAddr
Structure for accessing CRC registers address which are 64 bit wide.
Definition: crc/v0/crc.h:259
SystemP_SUCCESS
#define SystemP_SUCCESS
Return status when the API execution was successful.
Definition: SystemP.h:56
CRC_initialize
int32_t CRC_initialize(uint32_t baseAddr, CRC_Channel_t channel, uint32_t crcWatchdogPreload, uint32_t crcBlockPreload)
Initialize CRC channel and will configure watchdog and block preload value for given channel.
mode
char mode[32]
Definition: tisci_pm_core.h:1
CRC_channelReset
int32_t CRC_channelReset(uint32_t baseAddr, CRC_Channel_t channel)
This API is used to reset the CRC channel.
CRC_getPSASigRegAddr
int32_t CRC_getPSASigRegAddr(uint32_t baseAddr, CRC_Channel_t channel, CRC_SignatureRegAddr *pCRCRegAddr)
This API is used to get the PSA register address for given Channel.
CRC_SignatureRegAddr::regL
uint32_t regL
Definition: crc/v0/crc.h:260
DebugP_assert
#define DebugP_assert(expression)
Function to call for assert check.
Definition: DebugP.h:159
CRC_CHANNEL_1
#define CRC_CHANNEL_1
Definition: crc/v0/crc.h:151