AM273x MCU+ SDK  08.06.00
CRC

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

Features Supported

  • Two 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;
CRC_Config config;
config.type = CRC_TYPE_16BIT;
config.patternCount = 100;
config.sectorCount = 1;
status = CRC_configure(gCrcBaseAddr, crcChNumber, &config);

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/v1/crc.h:139
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/v1/crc.h:151
CRC_Config::byteSwap
CRC_ByteSwap_t byteSwap
Definition: crc/v1/crc.h:303
CRC_DATALENGTH_16BIT
#define CRC_DATALENGTH_16BIT
Definition: crc/v1/crc.h:187
CRC_Config::patternCount
uint32_t patternCount
Definition: crc/v1/crc.h:305
CRC_Signature
Structure for accessing CRC register data which are 64 bit wide.
Definition: crc/v1/crc.h:315
CRC_Config::sectorCount
uint32_t sectorCount
Definition: crc/v1/crc.h:307
CRC_SignatureRegAddr
Structure for accessing CRC registers address which are 64 bit wide.
Definition: crc/v1/crc.h:326
CRC_BITSWAP_MSB
#define CRC_BITSWAP_MSB
Definition: crc/v1/crc.h:205
SystemP_SUCCESS
#define SystemP_SUCCESS
Return status when the API execution was successful.
Definition: SystemP.h:56
CRC_Config
CRC Configuration.
Definition: crc/v1/crc.h:294
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.
CRC_configure
int32_t CRC_configure(uint32_t baseAddr, CRC_Channel_t channel, const CRC_Config *config)
This API will configure CRC mode, pattern and sector count for given channel.
CRC_TYPE_16BIT
#define CRC_TYPE_16BIT
Definition: crc/v1/crc.h:169
CRC_channelReset
int32_t CRC_channelReset(uint32_t baseAddr, CRC_Channel_t channel)
This API is used to reset the CRC channel.
CRC_BYTESWAP_ENABLE
#define CRC_BYTESWAP_ENABLE
Definition: crc/v1/crc.h:223
CRC_Config::mode
CRC_OperationMode_t mode
Definition: crc/v1/crc.h:295
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_Config::bitSwap
CRC_BitSwap_t bitSwap
Definition: crc/v1/crc.h:301
CRC_SignatureRegAddr::regL
uint32_t regL
Definition: crc/v1/crc.h:327
DebugP_assert
#define DebugP_assert(expression)
Function to call for assert check.
Definition: DebugP.h:177
CRC_CHANNEL_1
#define CRC_CHANNEL_1
Definition: crc/v1/crc.h:153
CRC_Config::dataLen
CRC_DataLength_t dataLen
Definition: crc/v1/crc.h:299
CRC_Config::type
CRC_Type_t type
Definition: crc/v1/crc.h:297