HAL_Project/Project -APP-V1.0/Hardware/24C02/24c02.c

111 lines
5.2 KiB
C
Raw Normal View History

2025-05-09 15:43:42 +08:00
#include "main.h" //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ͷ<EFBFBD>ļ<EFBFBD>
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>24c02ָ<32><D6B8><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7>һ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>ReadAddr:<3A><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
uint8_t m24c02ReadOneByte(uint8_t ReadAddr) {
uint8_t receive; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
iicStart(); //IIC<49><43>ʼ<EFBFBD>ź<EFBFBD>
iicSendByte(M24C02_WADDR); //<2F><><EFBFBD><EFBFBD>24c02<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ+д<><D0B4><EFBFBD><EFBFBD>
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
iicSendByte(ReadAddr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
iicStart(); //IIC<49><43>ʼ<EFBFBD>ź<EFBFBD>
iicSendByte(M24C02_RADDR); //<2F><><EFBFBD><EFBFBD>24c02<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
receive=iicReadByte(0); //<2F><>һ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>receive<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
iicStop(); //ֹͣ<CDA3>ź<EFBFBD>
HAL_Delay(5); //<2F>ӳ<EFBFBD>
return receive; //<2F><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַд<D6B7><D0B4>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>WriteAddr :д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ */
/*<2A><> <20><><EFBFBD><EFBFBD>DataToWrite:Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void m24c02WriteOneByte(uint8_t WriteAddr,uint8_t DataToWrite) {
iicStart(); //<2F><>ʼ<EFBFBD>ź<EFBFBD>
iicSendByte(M24C02_WADDR); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ+д<><D0B4><EFBFBD><EFBFBD>
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
iicSendByte(WriteAddr); //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ַ
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
iicSendByte(DataToWrite); //<2F><><EFBFBD><EFBFBD>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
iicStop(); //ֹͣ<CDA3>ź<EFBFBD>
HAL_Delay(5); //<2F>ӳ<EFBFBD>
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>ReadAddr:<3A><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ */
/*<2A><> <20><><EFBFBD><EFBFBD>Redata:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>Redatalen:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void m24c02ReadSequential(uint8_t ReadAddr,uint8_t *Redata,uint16_t Redatalen) {
uint16_t i; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>forѭ<72><D1AD>
iicStart(); //IIC<49><43>ʼ<EFBFBD>ź<EFBFBD>
iicSendByte(M24C02_WADDR); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ+д<><D0B4><EFBFBD><EFBFBD>
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
iicSendByte(ReadAddr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
iicStart(); //IIC<49><43>ʼ<EFBFBD>ź<EFBFBD>
iicSendByte(M24C02_RADDR); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
iicWaitAck(); //<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>
for(i=0; i<(Redatalen-1); i++) { //ѭ<><D1AD><EFBFBD><EFBFBD>ȡǰRedatalen-1<><31><EFBFBD>ֽ<EFBFBD>
Redata[i]=iicReadByte(1); //<2F><>һ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ACK<43>ź<EFBFBD>
}
Redata[Redatalen-1]=iicReadByte(0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACK<43>ź<EFBFBD>
iicStop(); //ֹͣ<CDA3>ź<EFBFBD>
HAL_Delay(5); //<2F>ӳ<EFBFBD>
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEpromָ<6D><D6B8><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>addr:<3A><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ */
/*<2A><> <20><><EFBFBD><EFBFBD>data:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>len:Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void eepromReadData(uint8_t addr,void *data, uint16_t len) {
uint8_t *ptr; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
ptr = data; //ptrָ<72><D6B8><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD>
m24c02ReadSequential(addr,ptr,len); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEpromָ<6D><D6B8><EFBFBD><EFBFBD>ַд<D6B7><D0B4>ָ<EFBFBD><D6B8><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>addr<64><72><EFBFBD><EFBFBD>ַ */
/*<2A><> <20><><EFBFBD><EFBFBD>data<74><61>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>len<65><6E>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void eepromWriteData(uint8_t addr, void *data, uint16_t len) {
uint16_t i; //<2F><><EFBFBD><EFBFBD>forѭ<72><D1AD>
uint8_t *ptr; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ptr = data; //ptrָ<72><D6B8><EFBFBD><EFBFBD>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD>
for(i=0; i<len; i++) { //ѭ<><D1AD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m24c02WriteOneByte(addr,ptr[i]); //дһ<D0B4>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
addr++; //<2F><>ַ+1
}
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEprom<6F><6D>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ */
/*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void eepromReadInfo(void) {
#if Download
log_info("<EFBFBD><EFBFBD>ǰΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<><D7BC><EFBFBD><EFBFBD>MQTT<54><54>Ϣд<CFA2><D0B4>EEPROM");
eepromWriteData(0, &MqttInfoStr, MQTT_STRUCT_LEN);
#else
log_info("<EFBFBD><EFBFBD>ǰΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<><D7BC><EFBFBD><EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD>MQTT<54><54>Ϣ");
memset(&MqttInfoStr,0,MQTT_STRUCT_LEN); //<2F><><EFBFBD>ս<D5BD><E1B9B9>
eepromReadData(0,&MqttInfoStr,MQTT_STRUCT_LEN); //<2F>Ӽ̵<D3BC><CCB5><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ȡ
#endif
}