111 lines
5.2 KiB
C
111 lines
5.2 KiB
C
|
|
#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
|
|||
|
|
}
|
|||
|
|
|