资源简介
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
- 上一篇:多级反馈进程调度算法 实验报告 及程序代码
- 下一篇:自己做的超声波测试程序
相关资源
- DHT10_I2C驱动.zip
- I2C串行EEPROM应用系统的健壮性设计
- 电子-GravityI2C3.7V锂电池电量计stm32L1
- arduino主机,stm8从机。I2C测试 。每次
- 10位ADC转换器AD5612(stm32_IO口模拟I2C)
- (带有源代码)基于FPGA的模拟I2C接口
- I2C-verilog-(非常详细的i2c学习心得)
- stm32f103iic读取AT24XX全系eeprom
- 分享一个0.96的oled显示驱动,软件模拟
- DAC8571_I2C模式_STM32
- STM32F4 I2C从机中断
- ADS1110stm32驱动自带I2C驱动
- STM32F103C8 例程
- stm32 I2C主从机模式控制代码
- 基于STM32F103硬件I2C读写24Cxx驱动代码的
- ATSHA204加密片源码SWI
- ATSHA204 开发源码
- Ginkgo_USB-I2C_Classic_Setup_v2.9.2.zip
- I2C从设备接收数据verilog代码实现
- CH341-I2C-labview-应用说明+VI-所有版本都
- Delphi2CPP 和注册机
- ATSHA204A数据手册(有中文注释)+stm
- STM32_MPU6050DMP硬件I2C读取欧拉角
- 基于FPGA的EEPROM读写系统
- 用stm32硬件I2C和模拟I2C读写EEPROM
- 利用STM32硬件I2C使用加速度传感器AD
- STM32与HTU21的I2C通讯源码
- stm32f103硬件I2C主从通信
- sht20 程序
- 黑苹果i2c触摸驱动教程
评论
共有 条评论