From 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Wed, 19 Jun 2024 17:25:45 +0800
Subject: [PATCH] 增加OTA协议

---
 Function/E2P/EEPROM.c |  138 +++++++++++++++++++++++++++++----------------
 1 files changed, 88 insertions(+), 50 deletions(-)

diff --git a/Function/E2P/EEPROM.c b/Function/E2P/EEPROM.c
index 0cf1819..f5249cd 100644
--- a/Function/E2P/EEPROM.c
+++ b/Function/E2P/EEPROM.c
@@ -14,7 +14,7 @@
 #include "eeprom.h"
 #include "spi.h"
 #include "delay.h"
-//#include "devicegpioinit.h"
+#include "gpio.h"
 
 volatile uint8_t Fram_cs_flag = 0;  //�洢Ƭѡ��־���Ժ�����һƬ�洢оƬ������ѡ�������һ��洢����1Ϊ��1�飬1Ϊ��2�������ġ�
 
@@ -23,7 +23,33 @@
 //static u16 WR_times_suc=0;
 
 
-//eeprom ����1���ֽ�50us��
+void E2P_Ctrl_Gpio_Init(void)
+{
+	CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱ�ӣ�GPIO��ʹ�ܺ���
+	OutputIO(EEPROM_PWR_PORT,EEPROM_PWR_PIN,OUT_PUSHPULL);
+	OutputIO(EEPROM_CS1_PORT,EEPROM_CS1_PIN,OUT_PUSHPULL);
+	OutputIO(EEPROM_CS2_PORT,EEPROM_CS2_PIN,OUT_PUSHPULL);
+	CloseIO(EEPROM_WP_PORT,EEPROM_WP_PIN);
+	E2P_PWR_ON;
+	EEPROM_CS_HIGH;
+	EEPROM_CS_2_HIGH;
+}
+
+
+void E2P_Ctrl_Gpio_sleep(void)
+{
+	CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱ�ӣ�GPIO��ʹ�ܺ���
+	OutputIO(EEPROM_PWR_PORT,EEPROM_PWR_PIN,OUT_PUSHPULL);
+	OutputIO(EEPROM_CS1_PORT,EEPROM_CS1_PIN,OUT_PUSHPULL);
+	OutputIO(EEPROM_CS2_PORT,EEPROM_CS2_PIN,OUT_PUSHPULL);
+	CloseIO(EEPROM_WP_PORT,EEPROM_WP_PIN);
+	E2P_PWR_OFF;
+	EEPROM_CS_LOW;
+	EEPROM_CS_2_LOW;
+}
+
+
+
 
 typedef union 
 {
@@ -74,19 +100,21 @@
 // 	  laddr = (addr16 & 0xff);     //low  8 bit address 
 	  
 //	  delay_us(10);
-	  EEPROM_CS_LOW;  
+	  EEPROM_CS_ENABLE;  
 	  FM_ReadWriteByte(FM_WREN);             
-    EEPROM_CS_HIGH; 
+    EEPROM_CS_DISABLE; 
 		
 //	  delay_us(10);
 		
-	  EEPROM_CS_LOW;
+	  EEPROM_CS_ENABLE;
 		FM_ReadWriteByte(FM_WRITE);
+	#ifndef EEPROM_ADDR_BYTES2
 	  FM_ReadWriteByte((uint8_t)((addr_fit)>>16));
+	#endif
 	  FM_ReadWriteByte((uint8_t)((addr_fit)>>8));
 		FM_ReadWriteByte((uint8_t)((addr_fit)));
 	  FM_ReadWriteByte(data);
-	  EEPROM_CS_HIGH;
+	  EEPROM_CS_DISABLE;
 	
 
 	
@@ -112,13 +140,15 @@
 // 	haddr = (addr16 >> 8) & 0x7f;//high 7 bit address  
 // 	laddr = (addr16 & 0xff);     //low  8 bit address 
 	
-	EEPROM_CS_LOW;
+	EEPROM_CS_ENABLE;
 	FM_ReadWriteByte(FM_READ);
+	#ifndef EEPROM_ADDR_BYTES2
 	FM_ReadWriteByte((uint8_t)(addr_fit>>16));
+	#endif
 	FM_ReadWriteByte((uint8_t)(addr_fit>>8));
 	FM_ReadWriteByte((uint8_t)(addr_fit));
 	data = FM_ReadWriteByte(0xff);//data = FM_ReadWriteByte(0xff);
-	EEPROM_CS_HIGH;
+	EEPROM_CS_DISABLE;
 	
 	return data;
 }
@@ -134,16 +164,16 @@
 void EEPROM_stat_write(uint8 stat) 
 {
 //	  delay_us(10);
-	  EEPROM_CS_LOW;                 
+	  EEPROM_CS_ENABLE;                 
 	  FM_ReadWriteByte(FM_WREN);             
-    EEPROM_CS_HIGH;               
+    EEPROM_CS_DISABLE;               
 		
 //	  delay_us(10);
 		
-	  EEPROM_CS_LOW;
+	  EEPROM_CS_ENABLE;
 		FM_ReadWriteByte(FM_WRSR);
 	  FM_ReadWriteByte(stat);
-	  EEPROM_CS_HIGH;
+	  EEPROM_CS_DISABLE;
 	
 }
 
@@ -159,10 +189,10 @@
 	uint8 stat;
 	
 	delay_us(10);
-	EEPROM_CS_LOW;
+	EEPROM_CS_ENABLE;
 	FM_ReadWriteByte(FM_RDSR);
 	stat = FM_ReadWriteByte(0xff);
-	EEPROM_CS_HIGH;
+	EEPROM_CS_DISABLE;
 	
 	return stat;
 }
@@ -177,9 +207,9 @@
 void EEPROM_sleep(void)
 { 
 	delay_us(10);
-	EEPROM_CS_LOW;
+	EEPROM_CS_ENABLE;
 	FM_ReadWriteByte(FM_SLEEP);
-	EEPROM_CS_HIGH;
+	EEPROM_CS_DISABLE;
 }
 
 
@@ -195,13 +225,13 @@
 	uint8 i;
 
 	delay_us(10);
-	EEPROM_CS_LOW;
+	EEPROM_CS_ENABLE;
 	FM_ReadWriteByte(FM_RDID);
 	for(i = 0;i < 9;i ++)
 	{
 		dst[i] = FM_ReadWriteByte(0xff);
 	}
-	EEPROM_CS_HIGH;
+	EEPROM_CS_DISABLE;
 }
 
 
@@ -296,7 +326,7 @@
  *****************************************/
 u32 EEPROM_data_read_uint32(uint32 addr16) 
 {
-
+	
 	u32_un t;
 	t.data[0] = EEPROM_data_read(addr16);
 	t.data[1] = EEPROM_data_read(addr16+1);
@@ -399,18 +429,20 @@
 	{
 		
 		
-		EEPROM_CS_LOW;  
+		EEPROM_CS_ENABLE;  
 		FM_ReadWriteByte(FM_WREN);             
-		EEPROM_CS_HIGH; 
+		EEPROM_CS_DISABLE; 
 			
-		EEPROM_CS_LOW;
+		EEPROM_CS_ENABLE;
 		FM_ReadWriteByte(FM_WRITE);
+		#ifndef EEPROM_ADDR_BYTES2
 		FM_ReadWriteByte((uint8_t)((addr_temp)>>16));
+		#endif
 		FM_ReadWriteByte((uint8_t)((addr_temp)>>8));
 		FM_ReadWriteByte((uint8_t)(addr_temp));
 		for(i = 0;i < bytewrite;i ++)
 		  FM_ReadWriteByte(*ptr_data ++);
-		EEPROM_CS_HIGH;
+		EEPROM_CS_DISABLE;
 		
 
 		
@@ -445,53 +477,59 @@
 {
 	u16 	index;
 	
-	EEPROM_CS_LOW;
+	EEPROM_CS_ENABLE;
 	FM_ReadWriteByte(FM_READ);
+	#ifndef EEPROM_ADDR_BYTES2
 	FM_ReadWriteByte((uint8_t)(addr>>16));
+	#endif
 	FM_ReadWriteByte((uint8_t)(addr>>8));
 	FM_ReadWriteByte((uint8_t)(addr));
 	for(index = 0;index < bytes;index ++)
 	  data[index] = FM_ReadWriteByte(0xff);
-	EEPROM_CS_HIGH;
 	EEPROM_Wait_Busy();	
+	EEPROM_CS_DISABLE;
 
 }
 
 
-uint8_t  EEPROM_MultipleWrite_CS_2(uint8_t *data,u32 addr,u16 bytes)
-{
-	Fram_cs_flag = EEPROM_CS_2;
-	EEPROM_MultipleWrite(data,  addr,  bytes) ;
-	
-	Fram_cs_flag = EEPROM_CS_1;
-	return 0;
-}
-
-uint8_t  EEPROM_MultipleRead_CS_2(uint8_t *data,u32 addr,u16 bytes)
-{
-	Fram_cs_flag = EEPROM_CS_2;
-	EEPROM_MultipleRead(data,  addr,  bytes) ;
-	
-	Fram_cs_flag = EEPROM_CS_1;
-	return 0;
-}
 
 
-
-void EEPROM_CS_2_test(void)
+void EEPROM_test(void)
 {
 	uint8_t   u8_temp;
 	uint8_t   u8_temp_s[256];
 	uint8_t   u8_temp_s2[256];
+	uint8_t	buf_test[10] = {0};
+	static uint16_t	WR_times = 0;
+	static uint16_t	WR_times_suc = 0;
 	
 	u16   count_i = 0;
 	
-	for(count_i=0;count_i<256;count_i++)
-	{
-		u8_temp_s[count_i] = count_i;
-		u8_temp_s2[count_i] = 0;
-	}
+
+	delay_ms(10);
+	delay_ms(100);
+	EEPROM_CTRL_ENABLE;
+	delay_ms(100);
+	EEPROM_MultipleRead(buf_test, 256, 10);
+
+
+	EEPROM_CTRL_DISABLE;
+
+	delay_ms(10);
+	memset(buf_test,0,sizeof(buf_test));
 	
+	
+	EEPROM_CTRL_ENABLE;
+	delay_ms(10);
+	EEPROM_MultipleRead(buf_test, 256, 10);
+
+	EEPROM_CTRL_DISABLE;
+
+	
+	while(1){
+		IWDT_Clr();
+		delay_ms(500);
+	}
 	
 //	while(WR_times <1024)
 //	{
@@ -522,7 +560,7 @@
 //		
 //	}
 	
-//	EEPROM_MultipleRead_CS_2(u8_temp_s2,(1000 * 256+9),256);
+
 	
 	
 	

--
Gitblit v1.9.3