/**************** (C) COPYRIGHT 2023 山东云唐智能科技有限公司 *******************
 * 文 件 名：
 * 创 建 者:  Kaiser
 * 描   述  :
 * 最后修改:
 *********************************** 修订记录 ************************************
 * 版   本:
 * 修订人:
 ********************************************************************************/

/******************************** 功能说明 *************************************
 *
 *******************************************************************************/

#include "i2c.h"
#define FM24_ADDR 0xA0
#define ACK       1
#define NOACK     0
#include "i2c.h"
#define FM24_ADDR 0xA0
#define ACK       1
#define NOACK     0

void FM24_Write(uint16_t addr, uint8_t *data, uint8_t len)
{
    I2C2_Start();
    I2C2_SendByte(FM24_ADDR);
    I2C2_Wait_ACK();
    I2C2_SendByte(addr >> 8);
    I2C2_Wait_ACK();
    I2C2_SendByte(addr & 0xFF);
    I2C2_Wait_ACK();
    while (len--) {
        I2C2_SendByte(*data++);
        I2C2_Wait_ACK();
    }
    I2C2_Stop();
}

void FM24_Read(uint16_t addr, uint8_t *data, uint8_t len)
{
    I2C2_Start();
    I2C2_SendByte(FM24_ADDR);
    I2C2_Wait_ACK();
    I2C2_SendByte(addr >> 8);
    I2C2_Wait_ACK();
    I2C2_SendByte(addr & 0xFF);
    I2C2_Wait_ACK();
    I2C2_Start();
    I2C2_SendByte(FM24_ADDR | 0x01);
    I2C2_Wait_ACK();
    while (len--) {
        *data++ = I2C2_ReadByte(len ? ACK : NOACK);
    }
    I2C2_Stop();
}
void FM24Init()
{
	I2C2_Init();
}
//void FM24_Write(uint16_t addr, uint8_t *data, uint8_t len)
//{
//    I2C2_Start();
//    I2C2_SendByte(FM24_ADDR);
//    I2C2_Wait_ACK();
//    I2C2_SendByte(addr & 0x00FF);
//    I2C2_Wait_ACK();
//    I2C2_SendByte(addr >> 8);
//    I2C2_Wait_ACK();
////    I2C2_SendByte(addr & 0x00FF);
////    I2C2_Wait_ACK();
//    while (len--) {
//        I2C2_SendByte(*data++);
//        I2C2_Wait_ACK();
//    }
//    I2C2_Stop();
//}

//void FM24_Read(uint16_t addr, uint8_t *data, uint8_t len)
//{
//    uint8_t value;
//    I2C2_Start();
//    I2C2_SendByte(FM24_ADDR);
//    I2C2_Wait_ACK();
//    I2C2_SendByte(addr & 0x00FF);
//    I2C2_Wait_ACK();
//    I2C2_SendByte(addr >> 8);
//    I2C2_Wait_ACK();
//    I2C2_Wait_ACK();
//    I2C2_SendByte(addr & 0x00FF);
//    I2C2_Start();
//    I2C2_SendByte(FM24_ADDR | 0x01);
//    I2C2_Wait_ACK();
//    while (len--) {
//        *data++ = I2C2_ReadByte(len ? ACK : NOACK);
//    }
//    I2C2_Stop();
//}
//以上为标准写法 因为所用器件为FM24CL16 它的从机地址字节为 1 0 1 0 页 选 择 读/写 
//void FM24_Write(uint16_t addr, uint8_t *data, uint8_t len)
//{
//    I2C2_Start();
//    I2C2_SendByte(FM24_ADDR | ((addr &0xFF00)>>7) );
//    I2C2_Wait_ACK();
//    I2C2_SendByte(addr & 0x00FF);
//    I2C2_Wait_ACK();
//    while (len--) {
//        I2C2_SendByte(*data++);
//        I2C2_Wait_ACK();
//    }
//    I2C2_Stop();
//}

//void FM24_Read(uint16_t addr, uint8_t *data, uint8_t len)
//{
//    I2C2_Start();
//    I2C2_SendByte(FM24_ADDR | ((addr &0xFF00)>>7) );
//    I2C2_Wait_ACK();
//    I2C2_SendByte(addr & 0x00FF);
//    I2C2_Wait_ACK();
//    I2C2_Start();
//    I2C2_SendByte(FM24_ADDR | ((addr &0xFF00)>>7)| 0x01);
//    I2C2_Wait_ACK();
//    while (len--) {
//        *data++ = I2C2_ReadByte(len ? ACK : NOACK);
//    }
//    I2C2_Stop();
//}

//void FM24Init()
//{
//	I2C2_Init();
//}
/********  (C) COPYRIGHT 2023 山东云唐智能科技有限公司 **** End Of File ********/
