73 lines
2.7 KiB
C
73 lines
2.7 KiB
C
|
|
/*----------------------------------------------------------------------------------------------------
|
|||
|
|
# THIS FILE IS A PART OF XerolySkinner's PROJECT
|
|||
|
|
#
|
|||
|
|
# THIS PROGRAM IS FREE SOFTWARE
|
|||
|
|
#
|
|||
|
|
# E-mail:ZABBCCCBBAZ@163.com
|
|||
|
|
# QQ:2715099320
|
|||
|
|
#
|
|||
|
|
# Copyright (c) 2022 XerolySkinner
|
|||
|
|
# All rights reserved.
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
/*----------------------------------------------------------------------------------------------------
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:bsp_AT24C00
|
|||
|
|
ʱ<EFBFBD><EFBFBD>:20220802-2220
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա:<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
|
|||
|
|
˵<EFBFBD><EFBFBD>:
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
//----------------------------------------------------------------------------------------------------
|
|||
|
|
// ͷ<>ļ<EFBFBD>
|
|||
|
|
#include "vartable.h"
|
|||
|
|
|
|||
|
|
#define IIC_ADDR_24C02 0x50
|
|||
|
|
#define AT_PAGE 8
|
|||
|
|
#define AT_IIC_COM bspIIC0
|
|||
|
|
struct struct_AT_Dat AT_Dat={0,0,0};
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
//----------------------------------------------------------------------------------------------------
|
|||
|
|
// <09><><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
void AT_Delay(void){
|
|||
|
|
HAL_Delay(5);}
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <09><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
void AT_WriteOneByte(char ID,char addr,char dat){
|
|||
|
|
IIC_WriteOneByte(AT_IIC_COM,IIC_ADDR_24C02+ID,addr,dat);
|
|||
|
|
AT_Delay();}
|
|||
|
|
char AT_ReadOneByte(char ID,char addr,char dat){
|
|||
|
|
return IIC_ReadOneByte(AT_IIC_COM,IIC_ADDR_24C02+ID,addr);}
|
|||
|
|
//----------------------------------------------------------------------------------------------------
|
|||
|
|
void AT_WriteByte(char ID,char addr,char *dat,char len){
|
|||
|
|
unsigned int member=0;
|
|||
|
|
IIC_Start(AT_IIC_COM);
|
|||
|
|
IIC_SendByte(AT_IIC_COM,(IIC_ADDR_24C02+ID)<<1);
|
|||
|
|
IIC_WaitAck(AT_IIC_COM);
|
|||
|
|
IIC_SendByte(AT_IIC_COM,addr);
|
|||
|
|
IIC_WaitAck(AT_IIC_COM);
|
|||
|
|
do{
|
|||
|
|
IIC_SendByte(AT_IIC_COM,dat[member]);
|
|||
|
|
IIC_WaitAck(AT_IIC_COM);
|
|||
|
|
member++;
|
|||
|
|
if(((member+addr)%AT_PAGE)==0){
|
|||
|
|
IIC_Stop(AT_IIC_COM);
|
|||
|
|
AT_Delay();
|
|||
|
|
IIC_Start(AT_IIC_COM);
|
|||
|
|
IIC_SendByte(AT_IIC_COM,(IIC_ADDR_24C02+ID)<<1);
|
|||
|
|
IIC_WaitAck(AT_IIC_COM);
|
|||
|
|
IIC_SendByte(AT_IIC_COM,addr+member);
|
|||
|
|
IIC_WaitAck(AT_IIC_COM);}
|
|||
|
|
}while(member!=len);
|
|||
|
|
IIC_Stop(AT_IIC_COM);
|
|||
|
|
AT_Delay();}
|
|||
|
|
void AT_ReadByte(char ID,char addr,char *dat,char len){
|
|||
|
|
IIC_ReadByte(AT_IIC_COM,IIC_ADDR_24C02+ID,addr,dat,len);}
|
|||
|
|
//----------------------------------------------------------------------------------------------------
|
|||
|
|
void AT_Write_Pack(char ID,struct struct_AT_Dat *AT_Dat){
|
|||
|
|
AT_WriteByte(ID,0,(char*)AT_Dat,sizeof(struct struct_AT_Dat));}
|
|||
|
|
void AT_Read_Pack(char ID,struct struct_AT_Dat *AT_Dat){
|
|||
|
|
AT_ReadByte(ID,0,(char*)AT_Dat,sizeof(struct struct_AT_Dat));}
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|