Skip to content

Commit 18393f3

Browse files
authored
Merge pull request #5424 from jeromecoutant/PR_L496
NUCLEO_L496ZG_P support
2 parents adfe004 + 88c3bcf commit 18393f3

File tree

5 files changed

+45
-12
lines changed

5 files changed

+45
-12
lines changed

targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L496xG/TARGET_NUCLEO_L496ZG/PeripheralPins.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,8 @@ const PinMap PinMap_UART_TX[] = {
258258
{PC_12, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)},
259259
{PD_5, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
260260
{PD_8, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, // ARDUINO D1
261-
{PG_7, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)},
262-
{PG_9, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, // Connected to STDIO_UART_TX
261+
{PG_7, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, // Connected to STDIO_UART_TX
262+
{PG_9, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
263263
{NC, NC, 0}
264264
};
265265

targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L496xG/TARGET_NUCLEO_L496ZG/PinNames.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,15 @@ typedef enum {
266266
SPI_CS = D10,
267267
PWM_OUT = D9,
268268

269+
USB_OTG_FS_SOF = PA_8,
270+
USB_OTG_FS_VBUS = PA_9,
271+
USB_OTG_FS_ID = PA_10,
272+
USB_OTG_FS_DM = PA_11,
273+
USB_OTG_FS_DP = PA_12,
274+
USB_OTG_FS_NOE_ALT = PA_13,
275+
USB_OTG_FS_SOF_ALT = PA_14,
276+
USB_OTG_FS_NOE = PC_9,
277+
269278
// Not connected
270279
NC = (int)0xFFFFFFFF
271280
} PinName;

targets/TARGET_STM/TARGET_STM32L4/TARGET_STM32L496xG/TARGET_NUCLEO_L496ZG/system_clock.c

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,10 @@ uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
190190

191191
// Select PLL clock as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
192192
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
193-
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 80 MHz or 48 MHz
194-
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 80 MHz or 48 MHz
195-
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; // 80 MHz or 48 MHz
196-
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 80 MHz or 48 MHz
193+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 80 MHz
194+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 80 MHz
195+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; /* 80 MHz */
196+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // 80 MHz
197197
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) {
198198
return 0; // FAIL
199199
}
@@ -217,6 +217,13 @@ uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
217217
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; // No PLL update
218218
HAL_RCC_OscConfig(&RCC_OscInitStruct);
219219

220+
/* Select HSI as clock source for LPUART1 */
221+
RCC_PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPUART1;
222+
RCC_PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI;
223+
if (HAL_RCCEx_PeriphCLKConfig(&RCC_PeriphClkInit) != HAL_OK) {
224+
return 0; // FAIL
225+
}
226+
220227
// Output clock on MCO1 pin(PA8) for debugging purpose
221228
#if DEBUG_MCO == 2
222229
if (bypass == 0)
@@ -289,6 +296,13 @@ uint8_t SetSysClock_PLL_HSI(void)
289296
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; // No PLL update
290297
HAL_RCC_OscConfig(&RCC_OscInitStruct);
291298

299+
/* Select HSI as clock source for LPUART1 */
300+
RCC_PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPUART1;
301+
RCC_PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI;
302+
if (HAL_RCCEx_PeriphCLKConfig(&RCC_PeriphClkInit) != HAL_OK) {
303+
return 0; // FAIL
304+
}
305+
292306
// Output clock on MCO1 pin(PA8) for debugging purpose
293307
#if DEBUG_MCO == 3
294308
HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1); // 16 MHz
@@ -322,7 +336,6 @@ uint8_t SetSysClock_PLL_MSI(void)
322336
RCC_OscInitStruct.MSIState = RCC_MSI_ON;
323337
RCC_OscInitStruct.HSEState = RCC_HSE_OFF;
324338
RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
325-
326339
RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
327340
RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11; /* 48 MHz */
328341
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
@@ -342,11 +355,6 @@ uint8_t SetSysClock_PLL_MSI(void)
342355
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_MSI; /* 48 MHz */
343356
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
344357

345-
/* Select LSE as clock source for LPUART1 */
346-
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LPUART1;
347-
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_LSE;
348-
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
349-
350358
// Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers
351359
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
352360
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; /* 80 MHz */
@@ -357,6 +365,13 @@ uint8_t SetSysClock_PLL_MSI(void)
357365
return 0; // FAIL
358366
}
359367

368+
/* Select LSE as clock source for LPUART1 */
369+
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LPUART1;
370+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_LSE;
371+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
372+
return 0; // FAIL
373+
}
374+
360375
// Output clock on MCO1 pin(PA8) for debugging purpose
361376
#if DEBUG_MCO == 4
362377
HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_MSI, RCC_MCODIV_2); // 2 MHz

targets/targets.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3396,6 +3396,10 @@
33963396
"release_versions": ["2", "5"],
33973397
"device_name": "STM32L496ZG"
33983398
},
3399+
"NUCLEO_L496ZG_P": {
3400+
"inherits": ["NUCLEO_L496ZG"],
3401+
"detect_code": ["0828"]
3402+
},
33993403
"VBLUNO52": {
34003404
"supported_form_factors": ["ARDUINO"],
34013405
"inherits": ["MCU_NRF52"],

tools/export/sw4stm32/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,11 @@ class Sw4STM32(GNUARMEclipse):
259259
'name': 'NUCLEO-L496ZG',
260260
'mcuId': 'STM32L496ZGTx'
261261
},
262+
'NUCLEO_L496ZG_P':
263+
{
264+
'name': 'NUCLEO-L496ZG',
265+
'mcuId': 'STM32L496ZGTx'
266+
},
262267
}
263268

264269
TARGETS = BOARDS.keys()

0 commit comments

Comments
 (0)