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