1234567891011121314151617181920212223242526272829303132333435363738 |
- // Write Configuration Zone
- //
- // CryptoMemory Library Include Files
- #include "CM_LIB.h"
- #include "CM_I2C.h"
- #include "CM_I2C_L.h"
- #include "CM_GPA.h"
- // Write Configuration Zone
- uint8_t cm_WriteConfigZone(uint8_t ucCryptoAddr, uint8_t* pucBuffer, uint8_t ucCount, uint8_t ucAntiTearing)
- {
- // printf("\n===> cm_WriteConfigZone start\n");
- uint8_t ucReturn, ucEncrypt;
-
- ucCM_InsBuff[0] = 0xb4;
- if(ucAntiTearing) ucCM_InsBuff[1] = 0x08;
- else ucCM_InsBuff[1] = 0x00;
- ucCM_InsBuff[2] = ucCryptoAddr;
- ucCM_InsBuff[3] = ucCount;
- // Three bytes of the command must be included in the polynominals
- cm_GPAcmd2(ucCM_InsBuff);
-
- // Only password zone is ever encrypted
- ucEncrypt = ((ucCryptoAddr>= CM_PSW) && ucCM_Encrypt);
- // Include the data in the polynominals and encrypt if required
- cm_GPAencrypt(ucEncrypt, pucBuffer, ucCount);
- // Do the write
- ucReturn = cm_WriteCommand(ucCM_InsBuff, pucBuffer,ucCount);
- // when anti-tearing, the host should send ACK should >= 20ms after write command
- if (ucAntiTearing) CM_LOW_LEVEL.WaitClock(100); //10
- // printf("===> cm_WriteConfigZone over\n");
- return ucReturn;
- }
|