Skip to content

Commit 80c8d5d

Browse files
committed
Standby
1 parent def3142 commit 80c8d5d

File tree

5 files changed

+83
-52
lines changed

5 files changed

+83
-52
lines changed

Inc/main.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@
5555
#define RST_GPIO_Port GPIOA
5656
#define BUSY_Pin GPIO_PIN_4
5757
#define BUSY_GPIO_Port GPIOA
58+
#define EPD_POWER_Pin GPIO_PIN_6
59+
#define EPD_POWER_GPIO_Port GPIOA
5860

5961
/* ########################## Assert Selection ############################## */
6062
/**

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
##########################################################################################################################
2-
# File automatically-generated by tool: [projectgenerator] version: [2.27.0] date: [Fri Apr 13 21:38:53 EDT 2018]
2+
# File automatically-generated by tool: [projectgenerator] version: [2.27.0] date: [Sun Apr 15 22:21:16 EDT 2018]
33
##########################################################################################################################
44

55
# ------------------------------------------------
@@ -22,7 +22,7 @@ TARGET = TemperatureHumidityEPD
2222
# debug build?
2323
DEBUG = 1
2424
# optimization
25-
OPT = -O2
25+
OPT = -Og
2626

2727

2828
#######################################

Src/edpcontroller.c

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ static uint8_t getBatteryIndex(uint8_t value) {
101101

102102
void displayData(int16_t temperature, int16_t humidity, uint8_t battery) {
103103

104+
HAL_GPIO_WritePin(EPD_POWER_GPIO_Port, EPD_POWER_Pin, GPIO_PIN_RESET);
104105
EPD_Init(&epd);
105106

106107
Paint paint_black;
@@ -143,9 +144,9 @@ void displayData(int16_t temperature, int16_t humidity, uint8_t battery) {
143144

144145

145146
EPD_DisplayRefresh(&epd);
146-
// SlowClock();
147147
EPD_WaitUntilIdle(&epd);
148148
EPD_Sleep(&epd);
149+
HAL_GPIO_WritePin(EPD_POWER_GPIO_Port, EPD_POWER_Pin, GPIO_PIN_SET);
149150

150151
}
151152

@@ -172,12 +173,28 @@ int Display_init() {
172173
return 0;
173174
}
174175

176+
void enterStandby()
177+
{
178+
GPIO_InitTypeDef GPIO_InitStruct;
179+
180+
GPIO_InitStruct.Pin = SPI_CS_Pin|DC_Pin|RST_Pin|BUSY_Pin|EPD_POWER_Pin;
181+
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
182+
GPIO_InitStruct.Pull = GPIO_NOPULL;
183+
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
184+
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
185+
186+
HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
187+
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
188+
HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 20, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);
189+
190+
HAL_PWR_EnterSTANDBYMode();
191+
}
192+
175193
void pollSensors(){
176194

177195
uint8_t hum_data[2];
178196
uint8_t temp_data[2];
179197

180-
181198
HAL_I2C_Mem_Read(&hi2c1, 0x80, 0xe5, 1, hum_data, 2, 1000);
182199
HAL_I2C_Mem_Read(&hi2c1, 0x80, 0xe0, 1, temp_data, 2, 1000);
183200

@@ -193,8 +210,7 @@ void pollSensors(){
193210
uint8_t volt_idx = getBatteryIndex(v_perc);
194211

195212
displayData(temp, hum, volt_idx);
196-
HAL_Delay(10000);
197-
213+
enterStandby();
198214

199215

200216
}

Src/main.c

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,20 +110,19 @@ int main(void)
110110
MX_ADC_Init();
111111

112112
/* USER CODE BEGIN 2 */
113+
113114
Display_init();
114115
HAL_ADC_Start(&hadc);
115116
/* USER CODE END 2 */
116117

117118
/* Infinite loop */
118119
/* USER CODE BEGIN WHILE */
119-
while (1)
120-
{
121-
pollSensors();
120+
121+
pollSensors();
122122
/* USER CODE END WHILE */
123123

124124
/* USER CODE BEGIN 3 */
125125

126-
}
127126
/* USER CODE END 3 */
128127

129128
}
@@ -143,10 +142,11 @@ void SystemClock_Config(void)
143142

144143
/**Initializes the CPU, AHB and APB busses clocks
145144
*/
146-
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI;
147-
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
148-
RCC_OscInitStruct.HSICalibrationValue = 16;
145+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_MSI;
149146
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
147+
RCC_OscInitStruct.MSIState = RCC_MSI_ON;
148+
RCC_OscInitStruct.MSICalibrationValue = 0;
149+
RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_5;
150150
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
151151
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
152152
{
@@ -157,7 +157,7 @@ void SystemClock_Config(void)
157157
*/
158158
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
159159
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
160-
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
160+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
161161
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
162162
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
163163
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
@@ -233,7 +233,7 @@ static void MX_I2C1_Init(void)
233233
{
234234

235235
hi2c1.Instance = I2C1;
236-
hi2c1.Init.Timing = 0x00303D5B;
236+
hi2c1.Init.Timing = 0x00000708;
237237
hi2c1.Init.OwnAddress1 = 0;
238238
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
239239
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
@@ -311,7 +311,7 @@ static void MX_RTC_Init(void)
311311
}
312312
/**Enable the WakeUp
313313
*/
314-
if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 46250, RTC_WAKEUPCLOCK_RTCCLK_DIV16) != HAL_OK)
314+
if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 60, RTC_WAKEUPCLOCK_CK_SPRE_16BITS) != HAL_OK)
315315
{
316316
_Error_Handler(__FILE__, __LINE__);
317317
}
@@ -380,16 +380,16 @@ static void MX_GPIO_Init(void)
380380
__HAL_RCC_GPIOB_CLK_ENABLE();
381381

382382
/*Configure GPIO pin Output Level */
383-
HAL_GPIO_WritePin(GPIOA, SPI_CS_Pin|DC_Pin|RST_Pin, GPIO_PIN_RESET);
383+
HAL_GPIO_WritePin(GPIOA, SPI_CS_Pin|DC_Pin|RST_Pin|EPD_POWER_Pin, GPIO_PIN_RESET);
384384

385385
/*Configure GPIO pins : PC14 PC15 */
386386
GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;
387387
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
388388
GPIO_InitStruct.Pull = GPIO_NOPULL;
389389
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
390390

391-
/*Configure GPIO pins : PA0 PA6 */
392-
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_6;
391+
/*Configure GPIO pin : PA0 */
392+
GPIO_InitStruct.Pin = GPIO_PIN_0;
393393
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
394394
GPIO_InitStruct.Pull = GPIO_NOPULL;
395395
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
@@ -407,6 +407,13 @@ static void MX_GPIO_Init(void)
407407
GPIO_InitStruct.Pull = GPIO_NOPULL;
408408
HAL_GPIO_Init(BUSY_GPIO_Port, &GPIO_InitStruct);
409409

410+
/*Configure GPIO pin : EPD_POWER_Pin */
411+
GPIO_InitStruct.Pin = EPD_POWER_Pin;
412+
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
413+
GPIO_InitStruct.Pull = GPIO_NOPULL;
414+
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
415+
HAL_GPIO_Init(EPD_POWER_GPIO_Port, &GPIO_InitStruct);
416+
410417
/*Configure GPIO pin : PB1 */
411418
GPIO_InitStruct.Pin = GPIO_PIN_1;
412419
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;

TemperatureHumidityEPD.ioc

Lines changed: 39 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Dma.Request1=I2C1_TX
2222
Dma.RequestsNb=2
2323
File.Version=6
2424
I2C1.IPParameters=Timing
25-
I2C1.Timing=0x00303D5B
25+
I2C1.Timing=0x00000708
2626
KeepUserPlacement=false
2727
Mcu.Family=STM32L0
2828
Mcu.IP0=ADC
@@ -38,20 +38,21 @@ Mcu.Name=STM32L031F(4-6)Px
3838
Mcu.Package=TSSOP20
3939
Mcu.Pin0=PA1
4040
Mcu.Pin1=PA2
41-
Mcu.Pin10=VP_ADC_Vref_Input
42-
Mcu.Pin11=VP_RTC_VS_RTC_Activate
43-
Mcu.Pin12=VP_RTC_VS_RTC_Calendar
44-
Mcu.Pin13=VP_RTC_VS_RTC_WakeUp_intern
45-
Mcu.Pin14=VP_SYS_VS_Systick
41+
Mcu.Pin10=PA14
42+
Mcu.Pin11=VP_ADC_Vref_Input
43+
Mcu.Pin12=VP_RTC_VS_RTC_Activate
44+
Mcu.Pin13=VP_RTC_VS_RTC_Calendar
45+
Mcu.Pin14=VP_RTC_VS_RTC_WakeUp_intern
46+
Mcu.Pin15=VP_SYS_VS_Systick
4647
Mcu.Pin2=PA3
4748
Mcu.Pin3=PA4
4849
Mcu.Pin4=PA5
49-
Mcu.Pin5=PA7
50-
Mcu.Pin6=PA9
51-
Mcu.Pin7=PA10
52-
Mcu.Pin8=PA13
53-
Mcu.Pin9=PA14
54-
Mcu.PinsNb=15
50+
Mcu.Pin5=PA6
51+
Mcu.Pin6=PA7
52+
Mcu.Pin7=PA9
53+
Mcu.Pin8=PA10
54+
Mcu.Pin9=PA13
55+
Mcu.PinsNb=16
5556
Mcu.ThirdPartyNb=0
5657
Mcu.UserConstants=
5758
Mcu.UserName=STM32L031F6Px
@@ -91,6 +92,11 @@ PA5.GPIOParameters=GPIO_Speed
9192
PA5.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
9293
PA5.Mode=Simplex_Bidirectional_Master
9394
PA5.Signal=SPI1_SCK
95+
PA6.GPIOParameters=GPIO_Label,GPIO_ModeDefaultOutputPP
96+
PA6.GPIO_Label=EPD_POWER
97+
PA6.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
98+
PA6.Locked=true
99+
PA6.Signal=GPIO_Output
94100
PA7.GPIOParameters=GPIO_Speed
95101
PA7.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
96102
PA7.Mode=Simplex_Bidirectional_Master
@@ -133,42 +139,42 @@ ProjectManager.ToolChainLocation=
133139
ProjectManager.UnderRoot=false
134140
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-true,4-MX_RTC_Init-RTC-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_SPI1_Init-SPI1-false-HAL-true,7-MX_ADC_Init-ADC-false-HAL-true
135141
RCC.ADCFreq_Value=16000000
136-
RCC.AHBFreq_Value=16000000
137-
RCC.APB1Freq_Value=16000000
138-
RCC.APB1TimFreq_Value=16000000
139-
RCC.APB2Freq_Value=16000000
140-
RCC.APB2TimFreq_Value=16000000
141-
RCC.FCLKCortexFreq_Value=16000000
142+
RCC.AHBFreq_Value=2097000
143+
RCC.APB1Freq_Value=2097000
144+
RCC.APB1TimFreq_Value=2097000
145+
RCC.APB2Freq_Value=2097000
146+
RCC.APB2TimFreq_Value=2097000
147+
RCC.FCLKCortexFreq_Value=2097000
142148
RCC.FamilyName=M
143-
RCC.HCLKFreq_Value=16000000
149+
RCC.HCLKFreq_Value=2097000
144150
RCC.HSE_VALUE=8000000
145151
RCC.HSI16_VALUE=16000000
146152
RCC.HSI_VALUE=16000000
147-
RCC.I2C1Freq_Value=16000000
148-
RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI16_VALUE,HSI_VALUE,I2C1Freq_Value,LPTIMFreq_Value,LPUARTFreq_Value,LSE_VALUE,LSI_VALUE,MCOPinFreq_Value,MSI_VALUE,PLLCLKFreq_Value,PLLMUL,PWRFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TIMFreq_Value,TimerFreq_Value,USART2Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,WatchDogFreq_Value
149-
RCC.LPTIMFreq_Value=16000000
150-
RCC.LPUARTFreq_Value=16000000
153+
RCC.I2C1Freq_Value=2097000
154+
RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI16_VALUE,HSI_VALUE,I2C1Freq_Value,LPTIMFreq_Value,LPUARTFreq_Value,LSE_VALUE,LSI_VALUE,MCOPinFreq_Value,MSI_VALUE,PLLCLKFreq_Value,PLLMUL,PWRFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,TIMFreq_Value,TimerFreq_Value,USART2Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,WatchDogFreq_Value
155+
RCC.LPTIMFreq_Value=2097000
156+
RCC.LPUARTFreq_Value=2097000
151157
RCC.LSE_VALUE=32768
152158
RCC.LSI_VALUE=37000
153-
RCC.MCOPinFreq_Value=16000000
159+
RCC.MCOPinFreq_Value=2097000
154160
RCC.MSI_VALUE=2097000
155161
RCC.PLLCLKFreq_Value=32000000
156162
RCC.PLLMUL=RCC_PLLMUL_4
157-
RCC.PWRFreq_Value=16000000
163+
RCC.PWRFreq_Value=2097000
158164
RCC.RTCFreq_Value=37000
159165
RCC.RTCHSEDivFreq_Value=4000000
160-
RCC.SYSCLKFreq_VALUE=16000000
161-
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSI
162-
RCC.TIMFreq_Value=16000000
163-
RCC.TimerFreq_Value=16000000
164-
RCC.USART2Freq_Value=16000000
166+
RCC.SYSCLKFreq_VALUE=2097000
167+
RCC.TIMFreq_Value=2097000
168+
RCC.TimerFreq_Value=2097000
169+
RCC.USART2Freq_Value=2097000
165170
RCC.VCOInputFreq_Value=16000000
166171
RCC.VCOOutputFreq_Value=64000000
167172
RCC.WatchDogFreq_Value=37000
168-
RTC.IPParameters=WakeUpCounter-WakeUp
169-
RTC.WakeUpCounter-WakeUp=46250
173+
RTC.IPParameters=WakeUpCounter-WakeUp,WakeUpClock-WakeUp
174+
RTC.WakeUpClock-WakeUp=RTC_WAKEUPCLOCK_CK_SPRE_16BITS
175+
RTC.WakeUpCounter-WakeUp=60
170176
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2
171-
SPI1.CalculateBaudRate=8.0 MBits/s
177+
SPI1.CalculateBaudRate=1.0485 MBits/s
172178
SPI1.Direction=SPI_DIRECTION_1LINE
173179
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler
174180
SPI1.Mode=SPI_MODE_MASTER

0 commit comments

Comments
 (0)