基本的版本
有初始化用的相关文件 驱动文件包括软件IIC还有基于此的24C0X驱动,Flash覆写,还有涉及上位机的启动代码
This commit is contained in:
72
bsp_Device/bsp_AT24C00.c
Normal file
72
bsp_Device/bsp_AT24C00.c
Normal file
@@ -0,0 +1,72 @@
|
||||
/*----------------------------------------------------------------------------------------------------
|
||||
# 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.
|
||||
*/
|
||||
|
||||
/*----------------------------------------------------------------------------------------------------
|
||||
名字:bsp_AT24C00
|
||||
时间:20220802-2220
|
||||
程序员:梁源康
|
||||
说明:
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// 头文件
|
||||
#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};
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// 程序
|
||||
//
|
||||
void AT_Delay(void){
|
||||
HAL_Delay(5);}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// 基础实现
|
||||
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));}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Reference in New Issue
Block a user