⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm24c16.c

📁 基于stm32的MP3播放器
💻 C
字号:
#include "myiic.h"  
//FM24C16操作函数
//注意FM24C16 的最低工作电压不是2.7V,而是3.2V左右,在3.16V时,不能正确操作芯片																					   
//正点原子@SCUT
//V1.1

//在FM24C16指定地址读出一个数据
//ReadAddr:开始读数的地址 0~2047  
//返回值  :读到的数据
u8 FM24C16_ReadOneByte(u16 ReadAddr)
{				  
	u8 temp=0;		  	    																 
    IIC_Start();  
	IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //发送器件地址0XAx,发送模式 
	IIC_Wait_Ack();	 
    IIC_Send_Byte(ReadAddr%256);        //发送操作地址
	IIC_Wait_Ack(); 	 
	IIC_Start();  	 	   
	IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)+1); //进入接收模式			   
	IIC_Wait_Ack();   
    temp=IIC_Read_Byte(0);		   
    IIC_Stop();//产生一个停止条件
	return temp;
}
//在FM24C16指定地址写入一个数据
//WriteAddr  :写入数据的目的地址 0~2047  
//DataToWrite:要写入的数据
void FM24C16_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{				   	  	    																 
    IIC_Start();  
	IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));   //发送器件地址0XAx,发送模式 
	IIC_Wait_Ack();	 
    IIC_Send_Byte(WriteAddr%256);//发送操作地址
	IIC_Wait_Ack(); 	 										  		   
	IIC_Send_Byte(DataToWrite);  //发送字节							   
	IIC_Wait_Ack();  		    	   
    IIC_Stop();//产生一个停止条件   
}
//在FM24C16里面的指定地址开始读出指定个数的数据
//ReadAddr :开始读出的地址 0~2047
//pBuffer  :数据数组首地址
//NumToRead:要读出数据的个数
void FM24C16_Read(u16 ReadAddr,u8 *pBuffer,u16 NumToRead)
{
	while(NumToRead)
	{
		*pBuffer++=FM24C16_ReadOneByte(ReadAddr++);	
		NumToRead--;
	}
}  
//在FM24C16里面的指定地址开始写入指定个数的数据
//WriteAddr :开始写入的地址 0~2047
//pBuffer   :数据数组首地址
//NumToWrite:要写入数据的个数
void FM24C16_Write(u16 WriteAddr,u8 *pBuffer,u16 NumToWrite)
{
	u16 wLen,addr;
    wLen=NumToWrite;
    addr=WriteAddr;
ScrollPage:															    
    IIC_Start(); 
	//发送器件地址
	IIC_Send_Byte(0XA0+((addr/256)<<1));
	IIC_Wait_Ack(); 
	IIC_Send_Byte(addr%256);      //发送操作地址    
	IIC_Wait_Ack(); 
	IIC_Send_Byte(*pBuffer++);//发送字节							   
	IIC_Wait_Ack(); 
	addr++;
	wLen--;	   
    while(wLen)
	{
        if((addr%8)!=0)
		{
            IIC_Send_Byte(*pBuffer++);//发送字节
			IIC_Wait_Ack();
            addr++;
            wLen--;
        }
        else
		{
            IIC_Stop();//产生一个停止条件
            goto ScrollPage;
        }
    }
    IIC_Stop();//产生一个停止条件
}
 		    















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -