diff --git a/APP/application/Src/start.c b/APP/application/Src/start.c
index e396b4b..15b23e8 100644
--- a/APP/application/Src/start.c
+++ b/APP/application/Src/start.c
@@ -63,11 +63,11 @@ void start(void)
startInfo();
-// HAL_Delay(5000);
- // while (1) {
- // cfgTest();
- // HAL_Delay(1000);
- // }
+ // HAL_Delay(5000);
+ while (1) {
+ cfgTest();
+ HAL_Delay(1000);
+ }
diff --git a/APP/businessLogic/Src/inFlash.c b/APP/businessLogic/Src/inFlash.c
index 014d054..9479a53 100644
--- a/APP/businessLogic/Src/inFlash.c
+++ b/APP/businessLogic/Src/inFlash.c
@@ -55,29 +55,27 @@ void saveConfigInfo(config_info *configInfo)
void cfgTest(void)
{
- // uint16_t tempTime = HAL_GetTick();
- // config_info temp_configInfo;
- // readFlashContent(&temp_configInfo);
- // log_info("1 read time : %d \n", HAL_GetTick() - tempTime);
- // tempTime = HAL_GetTick();
- // saveConfigInfo(&temp_configInfo);
- // log_info("1 write time : %d \n", HAL_GetTick() - tempTime);
+ uint32_t tempTime = HAL_GetTick();
+ config_info temp_configInfo;
+ read_config_info(&temp_configInfo);
+ log_info("1 read time : %d \n", HAL_GetTick() - tempTime);
+ tempTime = HAL_GetTick();
+ saveConfigInfo(&temp_configInfo);
+ log_info("1 write time : %d \n", HAL_GetTick() - tempTime);
+ tempTime = HAL_GetTick();
+ for (int i = 0; i < 10; i++) {
+ read_config_info(&temp_configInfo);
+ saveConfigInfo(&temp_configInfo);
+ }
+ log_info("10 time : %d \n", HAL_GetTick() - tempTime);
- // tempTime = HAL_GetTick();
- // for (int i = 0; i < 10; i++) {
- // readFlashContent(&temp_configInfo);
- // saveConfigInfo(&temp_configInfo);
- // }
- // log_info("10 time : %d \n", HAL_GetTick() - tempTime);
-
- // uint16_t tempTime = HAL_GetTick();
+ // uint32_t tempTime = HAL_GetTick();
// float tempF;
// readtotalElectricityConsumption(&tempF);
// log_info("1 read time : %d \n", HAL_GetTick() - tempTime);
// tempTime = HAL_GetTick();
// savetotalElectricityConsumption(&tempF);
// log_info("1 write time : %d \n", HAL_GetTick() - tempTime);
-
// tempTime = HAL_GetTick();
// for (int i = 0; i < 10; i++) {
// readtotalElectricityConsumption(&tempF);
@@ -85,21 +83,34 @@ void cfgTest(void)
// }
// log_info("10 time : %d \n", HAL_GetTick() - tempTime);
- uint16_t tempTime = HAL_GetTick();
- timeInfo tempT;
- readTime(&tempT);
- log_info("1 read time : %d \n", HAL_GetTick() - tempTime);
- tempTime = HAL_GetTick();
- saveTime(&tempT);
- log_info("1 write time : %d \n", HAL_GetTick() - tempTime);
-
- tempTime = HAL_GetTick();
- for (int i = 0; i < 10; i++) {
- readTime(&tempT);
- saveTime(&tempT);
- }
- log_info("10 time : %d \n", HAL_GetTick() - tempTime);
-
+ // uint32_t tempTime = HAL_GetTick();
+ // timeInfo tempT;
+ // readTime(&tempT);
+ // log_info("1 read time : %d \n", HAL_GetTick() - tempTime);
+ // tempTime = HAL_GetTick();
+ // saveTime(&tempT);
+ // log_info("1 write time : %d \n", HAL_GetTick() - tempTime);
+ // tempTime = HAL_GetTick();
+ // for (int i = 0; i < 10; i++) {
+ // readTime(&tempT);
+ // saveTime(&tempT);
+ // }
+ // log_info("10 time : %d \n", HAL_GetTick() - tempTime);
+
+ // uint32_t tempTime = HAL_GetTick();
+ // uint8_t tempBuf[30];
+ // write_Flash((uint8_t *)"hello world\n", 2048, sizeof("hello world\n"));
+ // log_info("1 write time : %d \n", HAL_GetTick() - tempTime);
+ // tempTime = HAL_GetTick();
+ // read_Flash(tempBuf, 2048, sizeof("hello world\n"));
+ // log_info("1 read time : %d \n", HAL_GetTick() - tempTime);
+ // log_info("%s\n", tempBuf);
+ // tempTime = HAL_GetTick();
+ // for (int i = 0; i < 10; i++) {
+ // read_Flash(tempBuf, 2048, sizeof("hello world\n"));
+ // write_Flash((uint8_t *)"hello world\n", 2048, sizeof("hello world\n"));
+ // }
+ // log_info("10 time : %d \n", HAL_GetTick() - tempTime);
}
diff --git a/APP/hardwareDriver/Src/w25qxx.c b/APP/hardwareDriver/Src/w25qxx.c
index 3e5d659..7bdb33e 100644
--- a/APP/hardwareDriver/Src/w25qxx.c
+++ b/APP/hardwareDriver/Src/w25qxx.c
@@ -161,17 +161,25 @@ void W25QXX_ReadUniqueID(uint8_t UID[8])
//NumByteToRead:要读取的字节数(最大65535)
void W25QXX_Read(uint8_t *pBuffer, uint32_t ReadAddr, uint16_t NumByteToRead)
{
+ volatile static int timeReadTemp1, timeReadTemp2, timeReadTemp3, timeReadTemp4, timeReadTemp5;
+ timeReadTemp1 = HAL_GetTick();
+
uint16_t i;
W25QXX_CS_L(); //使能器件
W25QXX_SPI_ReadWriteByte(W25X_ReadData); //发送读取命令
W25QXX_SPI_ReadWriteByte((uint8_t)((ReadAddr) >> 16)); //发送24bit地址
W25QXX_SPI_ReadWriteByte((uint8_t)((ReadAddr) >> 8));
W25QXX_SPI_ReadWriteByte((uint8_t)ReadAddr);
+ timeReadTemp2 = HAL_GetTick();
for (i = 0; i < NumByteToRead; i++)
{
pBuffer[i] = W25QXX_SPI_ReadWriteByte(0XFF); //循环读数
}
W25QXX_CS_H();
+
+ timeReadTemp3 = HAL_GetTick();
+ timeReadTemp4 = NumByteToRead;
+ timeReadTemp5 = ReadAddr;
}
//SPI在一页(0~65535)内写入少于256个字节的数据
//在指定地址开始写入最大256字节的数据
@@ -233,6 +241,8 @@ void W25QXX_Write_NoCheck(uint8_t *pBuffer, uint32_t WriteAddr, uint16_t NumByte
uint8_t W25QXX_BUFFER[4096];
void W25QXX_Write(uint8_t *pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite)
{
+ // volatile static int timeReadTemp1, timeReadTemp2, timeReadTemp3, timeReadTemp4, timeReadTemp5, timeReadTemp6;
+
uint32_t secpos;
uint16_t secoff;
uint16_t secremain;
@@ -246,7 +256,10 @@ void W25QXX_Write(uint8_t *pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite)
secremain = NumByteToWrite; //不大于4096个字节
while (1)
{
+
+ // timeReadTemp1 = HAL_GetTick();
W25QXX_Read(W25QXX_BUF, secpos * 4096, 4096); //读出整个扇区的内容
+ // timeReadTemp2 = HAL_GetTick();
for (i = 0; i < secremain; i++) //校验数据
{
if (W25QXX_BUF[secoff + i] != 0XFF)
@@ -255,12 +268,15 @@ void W25QXX_Write(uint8_t *pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite)
if (i < secremain) //需要擦除
{
W25QXX_Erase_Sector(secpos); //擦除这个扇区
+ // timeReadTemp3 = HAL_GetTick();
for (i = 0; i < secremain; i++) //复制
{
W25QXX_BUF[i + secoff] = pBuffer[i];
}
W25QXX_Write_NoCheck(W25QXX_BUF, secpos * 4096, 4096); //写入整个扇区
-
+ // timeReadTemp4 = HAL_GetTick();
+ // timeReadTemp5 = NumByteToWrite;
+ // timeReadTemp6 = WriteAddr;
}
else
W25QXX_Write_NoCheck(pBuffer, WriteAddr, secremain); //写已经擦除了的,直接写入扇区剩余区间.
@@ -280,6 +296,42 @@ void W25QXX_Write(uint8_t *pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite)
secremain = NumByteToWrite; //下一个扇区可以写完了
}
};
+
+ // while (1) {
+ // W25QXX_Read(W25QXX_BUF, secpos * 4096, 4096); //读出整个扇区的内容
+ // // for (i = 0; i < secremain; i++) //校验数据
+ // // {
+ // // if (W25QXX_BUF[secoff + i] != 0XFF)
+ // // break; //需要擦除
+ // // }
+ // // if (i < secremain) //需要擦除
+ // // {
+ // W25QXX_Erase_Sector(secpos); //擦除这个扇区
+ // for (i = 0; i < secremain; i++) //复制
+ // {
+ // W25QXX_BUF[i + secoff] = pBuffer[i];
+ // }
+ // W25QXX_Write_NoCheck(W25QXX_BUF, secpos * 4096, 4096); //写入整个扇区
+
+ // // }
+ // // else
+ // // W25QXX_Write_NoCheck(pBuffer, WriteAddr, secremain); //写已经擦除了的,直接写入扇区剩余区间.
+ // if (NumByteToWrite == secremain)
+ // break; //写入结束了
+ // else //写入未结束
+ // {
+ // secpos++; //扇区地址增1
+ // secoff = 0; //偏移位置为0
+
+ // pBuffer += secremain; //指针偏移
+ // WriteAddr += secremain; //写地址偏移
+ // NumByteToWrite -= secremain; //字节数递减
+ // if (NumByteToWrite > 4096)
+ // secremain = 4096; //下一个扇区还是写不完
+ // else
+ // secremain = NumByteToWrite; //下一个扇区可以写完了
+ // }
+ // };
}
//擦除整个芯片
diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c
index 39047be..70ee1fe 100644
--- a/Core/Src/gpio.c
+++ b/Core/Src/gpio.c
@@ -65,12 +65,12 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(DSG_PROT_GPIO_Port, &GPIO_InitStruct);
- /*Configure GPIO pins : FLASH_CS_Pin EN_PWMOUT_Pin FFMOS_CON_Pin */
- GPIO_InitStruct.Pin = FLASH_CS_Pin|EN_PWMOUT_Pin|FFMOS_CON_Pin;
+ /*Configure GPIO pin : FLASH_CS_Pin */
+ GPIO_InitStruct.Pin = FLASH_CS_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+ HAL_GPIO_Init(FLASH_CS_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : WDI_INPUT_Pin RUN_LED_Pin POW_FF_CON_Pin POW_OUT_CON_Pin */
GPIO_InitStruct.Pin = WDI_INPUT_Pin|RUN_LED_Pin|POW_FF_CON_Pin|POW_OUT_CON_Pin;
@@ -79,6 +79,13 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+ /*Configure GPIO pins : EN_PWMOUT_Pin FFMOS_CON_Pin */
+ GPIO_InitStruct.Pin = EN_PWMOUT_Pin|FFMOS_CON_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
/*Configure GPIO pin : WORK_VOLT_INT_Pin */
GPIO_InitStruct.Pin = WORK_VOLT_INT_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 31087a7..70b8956 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -142,13 +142,18 @@ void SystemClock_Config(void)
*/
HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
+ /** Configure LSE Drive Capability
+ */
+ HAL_PWR_EnableBkUpAccess();
+ __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
+
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI;
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSE;
+ RCC_OscInitStruct.LSEState = RCC_LSE_ON;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
- RCC_OscInitStruct.LSIState = RCC_LSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
diff --git a/Core/Src/rtc.c b/Core/Src/rtc.c
index 7d4de0e..4f0f950 100644
--- a/Core/Src/rtc.c
+++ b/Core/Src/rtc.c
@@ -101,7 +101,7 @@ void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
/** Initializes the peripherals clocks
*/
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
- PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
+ PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
diff --git a/Core/Src/spi.c b/Core/Src/spi.c
index 0ca430a..a67ef6f 100644
--- a/Core/Src/spi.c
+++ b/Core/Src/spi.c
@@ -44,7 +44,7 @@ void MX_SPI1_Init(void)
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
- hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
+ hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
@@ -82,7 +82,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
GPIO_InitStruct.Pin = FLASH_CLK_Pin|FLASH_MISO_Pin|FLASH_MOSI_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
diff --git a/EWARM/chargeController.ewd b/EWARM/chargeController.ewd
index ae5b760..2f04eb2 100644
--- a/EWARM/chargeController.ewd
+++ b/EWARM/chargeController.ewd
@@ -36,7 +36,7 @@
@@ -294,7 +294,7 @@