Skip to content

Commit 57e8232

Browse files
authored
Merge pull request #135 from kwagyeman/kwabena/add_pt_buzzer_pin
ports/stm32: Add OpenMV PureThermal buzzer pin.
2 parents 6d6cf28 + f391623 commit 57e8232

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

ports/stm32/boards/OPENMVPT/board_init.c

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,53 @@
55
#define OMV_BOOTLOADER_MAGIC_ADDR (0x2001FFFCU)
66
#define OMV_BOOTLOADER_MAGIC_VALUE (0xB00710ADU)
77

8+
void board_early_init(void) {
9+
// Bring FLIR Lepton out of reset.
10+
mp_hal_pin_config(pyb_pin_LEPTON_RSTN, MP_HAL_PIN_MODE_OUTPUT, MP_HAL_PIN_PULL_NONE, 0);
11+
mp_hal_pin_config_speed(pyb_pin_LEPTON_RSTN, MP_HAL_PIN_SPEED_LOW);
12+
mp_hal_pin_write(pyb_pin_LEPTON_RSTN, 1);
13+
14+
// Release powerdown.
15+
mp_hal_pin_config(pyb_pin_LEPTON_PWDN, MP_HAL_PIN_MODE_OUTPUT, MP_HAL_PIN_PULL_NONE, 0);
16+
mp_hal_pin_config_speed(pyb_pin_LEPTON_PWDN, MP_HAL_PIN_SPEED_LOW);
17+
mp_hal_pin_write(pyb_pin_LEPTON_PWDN, 1);
18+
19+
// Enable FLIR Lepton MCLK.
20+
mp_hal_pin_config(pyb_pin_LEPTON_MCLK, MP_HAL_PIN_MODE_ALT, MP_HAL_PIN_PULL_NONE, 4);
21+
mp_hal_pin_config_speed(pyb_pin_LEPTON_MCLK, MP_HAL_PIN_SPEED_HIGH);
22+
23+
// Hardcode the clock frequency as SystemClock_Config() hasn't been called yet.
24+
int tclk = 120000000 * 2; // HAL_RCC_GetPCLK2Freq() * 2
25+
int period = (tclk / 24000000) - 1;
26+
27+
TIM_HandleTypeDef mclk_tim_handle;
28+
mclk_tim_handle.Instance = TIM15;
29+
mclk_tim_handle.Init.Prescaler = 0;
30+
mclk_tim_handle.Init.CounterMode = TIM_COUNTERMODE_UP;
31+
mclk_tim_handle.Init.Period = period;
32+
mclk_tim_handle.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
33+
mclk_tim_handle.Init.RepetitionCounter = 0;
34+
mclk_tim_handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
35+
36+
TIM_OC_InitTypeDef mclk_tim_oc_handle;
37+
mclk_tim_oc_handle.Pulse = (period + 1) / 2;
38+
mclk_tim_oc_handle.OCMode = TIM_OCMODE_PWM1;
39+
mclk_tim_oc_handle.OCPolarity = TIM_OCPOLARITY_HIGH;
40+
mclk_tim_oc_handle.OCNPolarity = TIM_OCNPOLARITY_HIGH;
41+
mclk_tim_oc_handle.OCFastMode = TIM_OCFAST_DISABLE;
42+
mclk_tim_oc_handle.OCIdleState = TIM_OCIDLESTATE_RESET;
43+
mclk_tim_oc_handle.OCNIdleState = TIM_OCNIDLESTATE_RESET;
44+
45+
__HAL_RCC_TIM15_CLK_ENABLE();
46+
__HAL_RCC_TIM15_CLK_SLEEP_ENABLE();
47+
__HAL_RCC_TIM15_FORCE_RESET();
48+
__HAL_RCC_TIM15_RELEASE_RESET();
49+
50+
HAL_TIM_PWM_Init(&mclk_tim_handle);
51+
HAL_TIM_PWM_ConfigChannel(&mclk_tim_handle, &mclk_tim_oc_handle, TIM_CHANNEL_2);
52+
HAL_TIM_PWM_Start(&mclk_tim_handle, TIM_CHANNEL_2);
53+
}
54+
855
void board_low_power(int mode) {
956
switch (mode) {
1057
case 0: // Leave stop mode.

ports/stm32/boards/OPENMVPT/mpconfigboard.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ typedef unsigned int mp_uint_t; // must be pointer size
4242
#define MICROPY_HW_SPIFLASH_SOFT_RESET (1)
4343
#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (0)
4444

45+
#define MICROPY_BOARD_EARLY_INIT board_early_init
46+
void board_early_init(void);
47+
4548
extern void board_enter_bootloader(void);
4649
#define MICROPY_BOARD_ENTER_BOOTLOADER(nargs, args) board_enter_bootloader()
4750

ports/stm32/boards/OPENMVPT/pins.csv

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ LED_WHITE,PG3
1919
LED_RED,-PC0
2020
LED_GREEN,-PC2
2121
LED_BLUE,-PC1
22+
BUZZER,PA1
2223
PA4,PA4
2324
PA15,PA15
2425
PB3,PB3
@@ -105,3 +106,6 @@ TOUCH_SCL,PJ13
105106
TOUCH_SDA,PJ14
106107
TOUCH_INT,PJ6
107108
WINC_INT,-PH5
109+
LEPTON_RSTN,PD5
110+
LEPTON_PWDN,PD4
111+
LEPTON_MCLK,PA3

0 commit comments

Comments
 (0)