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 @@