资源简介

ATMEL公司的加密芯片IC ATSHA204加密认证程序,通过I2C通信加密认证

资源截图

代码片段和文件信息


#include “inc/hw_memmap.h“
#include 

//#include “inc/hw_types.h“
#include “atsha204_encry.h“
#include “inc/hw_ints.h“
#include “driverlib/interrupt.h“
#include “utils/uartstdio.h“
#include “appli_i2c.h“
#include “imitate_i2c.h“

#define ATSHA204_ADDRESS 0x64 //atsha204 device address (1-7bits)

/*word address use to different function*/
#define RESET_ADDRESS 0x00
#define SLEEP_ADDRESS 0x01
#define IDLE_ADDRESS 0x02
#define COMMAND_ADDRESS 0x03


#define ATSHA204_READ_COMMAND 0x02
#define ATSHA204_WRITE_COMMAND 0x12
#define ATSHA204_LOCK_COMMAND 0x17
#define ATSHA204_NONCE_COMMAND 0x16
#define ATSHA204_MAC_COMMAND 0x08
#define ATSHA204_CHECKMAC_COMMAND 0x28


#define MAC_CHALLENGE_SIZE 32
#define NONCE_CHALLENGE_SIZE 32

#define DATA_LEN_35BYTES_SIZE 35
#define DATA_LEN_32BYTES_SIZE 32
#define DATA_LEN_7BYTES_SIZE 7
#define DATA_LEN_4BYTES_SIZE 4

typedef enum 
{
CONFIG_ZONE_BIT=0//config zone
OTP_ZONE_BIT // otp zone
DATA_ZONE_BIT //data zone
}DIFF_ZONE;

/*read how many bytes at one timejust two choice one is 4 bytes another is 32 bytes*/
#define READ_COMMAND_4_BYTES (0x00<<7) //read comman lengh is 4 bytes
#define READ_COMMAND_32_BYTES (0x01<<7) //read comman lengh is 32 bytes



#define SHA204_RSP_SIZE_MIN 4


static void atsha204_receive_response(UINT8 countUINT8 *data);
static void atsha204_read_command(UINT8 modeDIFF_ZONE zoneUINT8 wordaddrUINT8 *data);

static void atsha204_write_command(UINT8 modeDIFF_ZONE zoneUINT8 wordaddrUINT8 lenghUINT8 *txbuffUINT8 *rxbuff);



/*******************************************************************
*Name: delay_ms()
*
*Input parameter: num as delay time 1 as delay 1ms
*
*Return value: none
*
*Description: delay times 1 as 1ms. not  precise
********************************************************************/
static void delay_ms(int num)
{
int i;
while(num>0)
{
for(i=0;i<4600;i++)
{
;
}
num--;
}
}

/*******************************************************************
*Name: SerialI2C0IntHandler()
*
*Input parameter: none
*
*Return value: none
*
*Description: the function pointer give to vector table in startup.s file
********************************************************************/
void atsha204_reset_address_count(void)
{
unsigned char data[32]={0};
unsigned char count=0;
data[count++] = RESET_ADDRESS;
i2c_write_bytes(ATSHA204_ADDRESSRESET_ADDRESSdatacount);
}
/*******************************************************************
*Name: atsha204_wakeup()
*
*Input parameter: none
*
*Return value: none
*
*Description: the function pointer give to vector table in startup.s file
********************************************************************/
void atsha204_wakeup(void)
{
BYTE data[4]={0};
i2c_write_bytes(0x000x00data1); //pull down the data pin for 60us at least
delay_ms(3);
atsha204_receive_response(4data);
i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      21788  2014-04-22 21:06  atsha204\atsha204_authenticate_key.c

     文件        191  2014-04-22 21:06  atsha204\atsha204_authenticate_key.h

     目录          0  2014-04-22 21:36  atsha204

----------- ---------  ---------- -----  ----

                21979                    3


评论

共有 条评论