acdt/board/Src/eeprom.c

403 lines
10 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "eeprom.h"
uint8_t Tx1_Buffer[] = "3.14159265358978";
uint8_t Rx1_Buffer[BufferSize1] = "";
void ee_io_init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_RESET);
/*Configure GPIO pins : PB6 PB9 */
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; //PB6 PB7
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; //<2F><>©<EFBFBD><C2A9><EFBFBD>
GPIO_InitStruct.Pull = GPIO_NOPULL; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>Ϊ<EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;//IO<49><4F><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); //<2F><>ʼ<EFBFBD><CABC>
}
static void i2c_delay(void)
{
uint8_t i;
for (i = 0; i < 40; i++);
}
void i2c_start(void)
{
// <20><>SCL<43>ߵ<EFBFBD>ƽʱ<C6BD><CAB1>SDA<44><41><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>ʾI2C<32><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
I2C_SDA_1();
I2C_SCL_1();
i2c_delay();
I2C_SDA_0();
i2c_delay();
I2C_SCL_0();
i2c_delay();
}
void i2c_stop(void)
{
// <20><>SCL<43>ߵ<EFBFBD>ƽʱ<C6BD><CAB1>SDA<44><41><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>ʾI2C<32><43><EFBFBD><EFBFBD>ֹͣ<CDA3>ź<EFBFBD>
I2C_SDA_0();
I2C_SCL_1();
i2c_delay();
I2C_SDA_1();
i2c_delay();
}
void i2c_sendbyte(uint8_t _ucByte)
{
uint8_t i;
// <20>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ֽڵĸ<DAB5>λbit7
for (i = 0; i < 8; i++)
{
if (_ucByte & 0x80)
{
I2C_SDA_1();
}
else
{
I2C_SDA_0();
}
i2c_delay();
I2C_SCL_1();
i2c_delay();
I2C_SCL_0();
if (i == 7)
{
I2C_SDA_1(); // <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
}
_ucByte <<= 1; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>bit
i2c_delay();
}
}
uint8_t i2c_readbyte(void)
{
uint8_t i;
uint8_t value;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>bitΪ<74><CEAA><EFBFBD>ݵ<EFBFBD>bit7 */
value = 0;
for (i = 0; i < 8; i++)
{
value <<= 1;
I2C_SCL_1();
i2c_delay();
if (I2C_SDA_READ())
{
value++;
}
I2C_SCL_0();
i2c_delay();
}
return value;
}
uint8_t i2c_waitack(void)
{
uint8_t re;
I2C_SDA_1(); /* CPU<50>ͷ<EFBFBD>SDA<44><41><EFBFBD><EFBFBD> */
// i2c_Delay();
I2C_SCL_1(); /* CPU<50><55><EFBFBD><EFBFBD>SCL = 1, <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7B5>ACKӦ<4B><D3A6> */
i2c_delay();
if (I2C_SDA_READ()) /* CPU<50><55>ȡSDA<44><41><EFBFBD><EFBFBD>״̬ */
{
re = 1;
}
else
{
re = 0;
}
I2C_SCL_0();
i2c_delay();
return re;
}
void i2c_ack(void)
{
I2C_SDA_0(); /* CPU<50><55><EFBFBD><EFBFBD>SDA = 0 */
i2c_delay();
I2C_SCL_1(); /* CPU<50><55><EFBFBD><EFBFBD>1<EFBFBD><31>ʱ<EFBFBD><CAB1> */
i2c_delay();
I2C_SCL_0();
i2c_delay();
I2C_SDA_1(); /* CPU<50>ͷ<EFBFBD>SDA<44><41><EFBFBD><EFBFBD> */
}
void i2c_nack(void)
{
I2C_SDA_1(); /* CPU<50><55><EFBFBD><EFBFBD>SDA = 1 */
i2c_delay();
I2C_SCL_1(); /* CPU<50><55><EFBFBD><EFBFBD>1<EFBFBD><31>ʱ<EFBFBD><CAB1> */
i2c_delay();
I2C_SCL_0();
i2c_delay();
}
uint8_t i2c_checkdevice(uint8_t _Address)
{
uint8_t ucAck;
if (I2C_SDA_READ() && I2C_SCL_READ())
{
i2c_start(); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ַ+<2B><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>bit<69><74>0 = w<><77> 1 = r) bit7 <20>ȴ<EFBFBD> */
i2c_sendbyte(_Address | I2C_WR);
ucAck = i2c_waitack(); /* <20><><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ACKӦ<4B><D3A6> */
i2c_stop(); /* <20><><EFBFBD><EFBFBD>ֹͣ<CDA3>ź<EFBFBD> */
return ucAck;
}
return 1; /* I2C<32><43><EFBFBD><EFBFBD><EFBFBD>쳣 */
}
uint8_t ee_checkok(void)
{
if (i2c_checkdevice(EE_DEV_ADDR) == 0)
{
return 1;
}
else
{
/* ʧ<>ܺ<EFBFBD><DCBA>мǷ<D0BC><C7B7><EFBFBD>I2C<32><43><EFBFBD><EFBFBD>ֹͣ<CDA3>ź<EFBFBD> */
i2c_stop();
return 0;
}
}
uint8_t ee_writebytes(uint8_t *_pWriteBuf, uint16_t _usAddress, uint16_t _usSize)
{
uint16_t i,m;
uint16_t usAddr;
usAddr = _usAddress;
for (i = 0; i < _usSize; i++)
{
/* <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>1<EFBFBD><31><EFBFBD>ֽڻ<D6BD><DABB><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD>׵<EFBFBD>ַʱ<D6B7><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źź͵<C5BA>ַ */
if ((i == 0) || (usAddr & (EE_PAGE_SIZE - 1)) == 0)
{
/*<2A><><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
i2c_stop();
/* ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ķ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ж<EFBFBD><D0B6>ڲ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>, һ<><D2BB>С<EFBFBD><D0A1> 10ms
CLKƵ<4B><C6B5>Ϊ200KHzʱ<7A><CAB1><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>Ϊ30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
for (m = 0; m < 1000; m++)
{
/* <20><>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> */
i2c_start();
/* <20><>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>7bit<69>ǵ<EFBFBD>ַ<EFBFBD><D6B7>bit0<74>Ƕ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>0<EFBFBD><30>ʾд<CABE><D0B4>1<EFBFBD><31>ʾ<EFBFBD><CABE> */
// #if EE_ADDR_A8 == 1
// i2c_SendByte(EE_DEV_ADDR | I2C_WR | ((_usAddress >> 7) & 0x0E)); /* <20>˴<EFBFBD><CBB4><EFBFBD>дָ<D0B4><D6B8> */
// #else
i2c_sendbyte(EE_DEV_ADDR | I2C_WR);
// #endif
/* <20><>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD>ӣ<EFBFBD><D3A3>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷӦ<C8B7><D3A6> */
if (i2c_waitack() == 0)
{
break;
}
}
if (m == 1000)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ʱ */
}
/* <20><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڵ<D6BD>ַ<EFBFBD><D6B7>24C02ֻ<32><D6BB>256<35>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽھ͹<DABE><CDB9>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>24C04<30><34><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>ô<EFBFBD>˴<EFBFBD><CBB4><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ */
if (EE_ADDR_BYTES == 1)
{
i2c_sendbyte((uint8_t)usAddr);
if (i2c_waitack() != 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
}
else
{
i2c_sendbyte(usAddr >> 8);
if (i2c_waitack()!= 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
i2c_sendbyte(usAddr);
if (i2c_waitack() != 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
}
}
/* <20><>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼд<CABC><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
i2c_sendbyte(_pWriteBuf[i]);
/* <20><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACK */
if (i2c_waitack() != 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
usAddr++; /* <20><>ַ<EFBFBD><D6B7>1 */
}
/* <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD>ֹͣ<CDA3>ź<EFBFBD> */
i2c_stop();
/* ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ķ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ж<EFBFBD><D0B6>ڲ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>, һ<><D2BB>С<EFBFBD><D0A1> 10ms
CLKƵ<4B><C6B5>Ϊ200KHzʱ<7A><CAB1><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>Ϊ30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
for (m = 0; m < 1000; m++)
{
/* <20><>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> */
i2c_start();
/* <20><>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>7bit<69>ǵ<EFBFBD>ַ<EFBFBD><D6B7>bit0<74>Ƕ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>0<EFBFBD><30>ʾд<CABE><D0B4>1<EFBFBD><31>ʾ<EFBFBD><CABE> */
#if EE_ADDR_A8 == 1
i2c_sendbyte(EE_DEV_ADDR | I2C_WR | ((_usAddress >> 7) & 0x0E)); /* <20>˴<EFBFBD><CBB4><EFBFBD>дָ<D0B4><D6B8> */
#else
i2c_sendbyte(EE_DEV_ADDR | I2C_WR); /* <20>˴<EFBFBD><CBB4><EFBFBD>дָ<D0B4><D6B8> */
#endif
/* <20><>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD>ӣ<EFBFBD><D3A3>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷӦ<C8B7><D3A6> */
if (i2c_waitack() == 0)
{
break;
}
}
if (m == 1000)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ʱ */
}
/* <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD>ֹͣ<CDA3>ź<EFBFBD> */
i2c_stop();
return 1;
cmd_fail: /* <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʧ<EFBFBD>ܺ<EFBFBD><DCBA>мǷ<D0BC><C7B7><EFBFBD>ֹͣ<CDA3>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>I2C<32><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸 */
/* <20><><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD>ֹͣ<CDA3>ź<EFBFBD> */
i2c_stop();
return 0;
}
uint8_t ee_readbytes(uint8_t *_pReadBuf, uint16_t _usAddress, uint16_t _usSize)
{
uint16_t i;
/* <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>EEPROM<4F><EFBFBD><E6BCB4>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD> */
/* <20><>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> */
i2c_start();
/* <20><>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>7bit<69>ǵ<EFBFBD>ַ<EFBFBD><D6B7>bit0<74>Ƕ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>0<EFBFBD><30>ʾд<CABE><D0B4>1<EFBFBD><31>ʾ<EFBFBD><CABE> */
i2c_sendbyte(EE_DEV_ADDR | I2C_WR); /* <20>˴<EFBFBD><CBB4><EFBFBD>дָ<D0B4><D6B8> */
/* <20><>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACK */
if (i2c_waitack() != 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
/* <20><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڵ<D6BD>ַ<EFBFBD><D6B7>24C02ֻ<32><D6BB>256<35>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽھ͹<DABE><CDB9>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>24C04<30><34><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>ô<EFBFBD>˴<EFBFBD><CBB4><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ */
if (EE_ADDR_BYTES == 1)
{
i2c_sendbyte((uint8_t)_usAddress);
if (i2c_waitack() != 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
}
else
{
i2c_sendbyte(_usAddress >> 8);
if (i2c_waitack() != 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
i2c_sendbyte(_usAddress);
if (i2c_waitack() != 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
}
/* <20><>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I2C<32><43><EFBFBD>ߡ<EFBFBD><DFA1><EFBFBD><EFBFBD>ʼ<E6BFAA><CABC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> */
i2c_start();
/* <20><>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>7bit<69>ǵ<EFBFBD>ַ<EFBFBD><D6B7>bit0<74>Ƕ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>0<EFBFBD><30>ʾд<CABE><D0B4>1<EFBFBD><31>ʾ<EFBFBD><CABE> */
i2c_sendbyte(EE_DEV_ADDR | I2C_RD); /* <20>˴<EFBFBD><CBB4><EFBFBD>дָ<D0B4><D6B8> */
/* <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACK */
if (i2c_waitack() != 0)
{
goto cmd_fail; /* EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> */
}
/* <20><>9<EFBFBD><39><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> */
for (i = 0; i < _usSize; i++)
{
_pReadBuf[i] = i2c_readbyte(); /* <20><>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD> */
/* ÿ<><C3BF><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽں<D6BD><DABA><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ack<63><6B> <20><><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڲ<D6BD><DAB2><EFBFBD>ҪAck<63><6B><EFBFBD><EFBFBD>Nack */
if (i != _usSize - 1)
{
i2c_ack(); /* <20>м<EFBFBD><D0BC>ֽڶ<D6BD><DAB6><EFBFBD><EFBFBD>CPU<50><55><EFBFBD><EFBFBD>ACK<43>ź<EFBFBD>(<28><><EFBFBD><EFBFBD>SDA = 0) */
}
else
{
i2c_nack(); /* <20><><EFBFBD>1<EFBFBD><31><EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD><EFBFBD>CPU<50><55><EFBFBD><EFBFBD>NACK<43>ź<EFBFBD>(<28><><EFBFBD><EFBFBD>SDA = 1) */
}
}
/* <20><><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD>ֹͣ<CDA3>ź<EFBFBD> */
i2c_stop();
return 1; /* ִ<>гɹ<D0B3> */
cmd_fail: /* <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʧ<EFBFBD>ܺ<EFBFBD><DCBA>мǷ<D0BC><C7B7><EFBFBD>ֹͣ<CDA3>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>I2C<32><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸 */
/* <20><><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD>ֹͣ<CDA3>ź<EFBFBD> */
i2c_stop();
return 0;
}
// m=ee_writebytes(Tx1_Buffer,0,BufferSize1);
// printf("I2C_WriteByte %d %s\r\n",m,(uint8_t*)&Tx1_Buffer[0]);
// m=ee_readbytes(Rx1_Buffer,0,BufferSize1);
// printf("I2C_ReadByte %d %s\r\n",m,(uint8_t*)&Rx1_Buffer[0]);
// printf(" Rx1_Buffer is:%s,\t the BufferSize1 is:%d\r\n",Rx1_Buffer,BufferSize1);
uint8_t trans1[12]={0};
uint8_t trans2[12]={0};
void ee_writefloats(uint16_t _usAddress, float *wr_data)
{
// for(uint8_t i = 0;i<_usSize;i++)
// {
memcpy(trans1,wr_data, 4*(SECTION_NUM + 1));
ee_writebytes(trans1, _usAddress, 4*(SECTION_NUM + 1));
// }
}
void ee_readfloats(uint16_t _usAddress, float *rd_data)
{
// for(uint8_t i =0 ;i<_usSize;i++)
// {
ee_readbytes(trans2, _usAddress, 4*(SECTION_NUM + 1));
memcpy(rd_data,&trans2, 4*(SECTION_NUM + 1));
// }
}