Bugfix and update for AT32F415 (#24807)

This commit is contained in:
HorrorTroll 2025-01-14 12:20:36 +07:00 committed by GitHub
parent eb29f8befc
commit 7f1c236c75
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 46 additions and 32 deletions

View File

@ -24,7 +24,7 @@
# elif defined(PROTOCOL_CHIBIOS) # elif defined(PROTOCOL_CHIBIOS)
# include "hal.h" # include "hal.h"
# include "chibios_config.h" # include "chibios_config.h"
# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103) || defined(MCU_RP) # if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(AT32F415) || defined(GD32VF103) || defined(MCU_RP)
# define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns # define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
# else # else
# error APA102_NOPS configuration required # error APA102_NOPS configuration required

View File

@ -1,5 +1,5 @@
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll> // Copyright 2023-2025 HorrorTroll <https://github.com/HorrorTroll>
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12> // Copyright 2023-2025 Zhaqian <https://github.com/zhaqian12>
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll> // Copyright 2023-2025 HorrorTroll <https://github.com/HorrorTroll>
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12> // Copyright 2023-2025 Zhaqian <https://github.com/zhaqian12>
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View File

@ -1,5 +1,5 @@
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll> // Copyright 2023-2025 HorrorTroll <https://github.com/HorrorTroll>
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12> // Copyright 2023-2025 Zhaqian <https://github.com/zhaqian12>
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View File

@ -17,4 +17,8 @@
"ws2812": { "ws2812": {
"pin": "B0" "pin": "B0"
} }
"apa102": {
"data_pin": "B0",
"clock_pin": "B1"
}
} }

View File

@ -1,5 +1,5 @@
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll> // Copyright 2023-2025 HorrorTroll <https://github.com/HorrorTroll>
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12> // Copyright 2023-2025 Zhaqian <https://github.com/zhaqian12>
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View File

@ -1,7 +1,7 @@
/* /*
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
ChibiOS - Copyright (C) 2023..2024 HorrorTroll ChibiOS - Copyright (C) 2023..2025 HorrorTroll
ChibiOS - Copyright (C) 2023..2024 Zhaqian ChibiOS - Copyright (C) 2023..2025 Zhaqian
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -1,7 +1,7 @@
/* /*
ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
ChibiOS - Copyright (C) 2023..2024 HorrorTroll ChibiOS - Copyright (C) 2023..2025 HorrorTroll
ChibiOS - Copyright (C) 2023..2024 Zhaqian ChibiOS - Copyright (C) 2023..2025 Zhaqian
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -49,6 +49,14 @@
*/ */
#define AT32F415KB #define AT32F415KB
/*
* GPIO settings, allow unused GPIO for smaller chip packages.
*/
#if defined(AT32F415KB) || defined(AT32F415KC)
#define AT32_HAS_GPIOC TRUE
#define AT32_HAS_GPIOF TRUE
#endif
/* /*
* IO pins assignments. * IO pins assignments.
*/ */
@ -142,21 +150,21 @@
* 6 - Open Drain output 2MHz. * 6 - Open Drain output 2MHz.
* 7 - Open Drain output 50MHz. * 7 - Open Drain output 50MHz.
* 8 - Digital input with Pull-Up or Pull-Down resistor depending on ODT. * 8 - Digital input with Pull-Up or Pull-Down resistor depending on ODT.
* 9 - Alternate Push Pull output 10MHz. * 9 - Multiplexing Push Pull output 10MHz.
* A - Alternate Push Pull output 2MHz. * A - Multiplexing Push Pull output 2MHz.
* B - Alternate Push Pull output 50MHz. * B - Multiplexing Push Pull output 50MHz.
* C - Reserved. * C - Reserved.
* D - Alternate Open Drain output 10MHz. * D - Multiplexing Open Drain output 10MHz.
* E - Alternate Open Drain output 2MHz. * E - Multiplexing Open Drain output 2MHz.
* F - Alternate Open Drain output 50MHz. * F - Multiplexing Open Drain output 50MHz.
* Please refer to the AT32 Reference Manual for details. * Please refer to the AT32 Reference Manual for details.
*/ */
/* /*
* Port A setup. * Port A setup.
*/ */
#define VAL_GPIOACFGLR 0x88888B88 /* PA7...PA0 */ #define VAL_GPIOACFGLR 0x88888888 /* PA7...PA0 */
#define VAL_GPIOACFGHR 0x888888B8 /* PA15...PA8 */ #define VAL_GPIOACFGHR 0x88888888 /* PA15...PA8 */
#define VAL_GPIOAODT 0xFFFFFFFF #define VAL_GPIOAODT 0xFFFFFFFF
/* /*

View File

@ -1,5 +1,5 @@
// Copyright 2023-2024 HorrorTroll <https://github.com/HorrorTroll> // Copyright 2023-2025 HorrorTroll <https://github.com/HorrorTroll>
// Copyright 2023-2024 Zhaqian <https://github.com/zhaqian12> // Copyright 2023-2025 Zhaqian <https://github.com/zhaqian12>
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View File

@ -1,7 +1,7 @@
/* /*
ChibiOS - Copyright (C) 2006..2020 Giovanni Di Sirio ChibiOS - Copyright (C) 2006..2020 Giovanni Di Sirio
ChibiOS - Copyright (C) 2023..2024 HorrorTroll ChibiOS - Copyright (C) 2023..2025 HorrorTroll
ChibiOS - Copyright (C) 2023..2024 Zhaqian ChibiOS - Copyright (C) 2023..2025 Zhaqian
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -63,7 +63,7 @@
#define AT32_USBDIV AT32_USBDIV_DIV3 #define AT32_USBDIV AT32_USBDIV_DIV3
#define AT32_CLKOUT_SEL AT32_CLKOUT_SEL_NOCLOCK #define AT32_CLKOUT_SEL AT32_CLKOUT_SEL_NOCLOCK
#define AT32_CLKOUTDIV AT32_CLKOUTDIV_DIV1 #define AT32_CLKOUTDIV AT32_CLKOUTDIV_DIV1
#define AT32_ERTCSEL AT32_ERTCSEL_HEXTDIV #define AT32_ERTCSEL AT32_ERTCSEL_NOCLOCK
#define AT32_PVM_ENABLE FALSE #define AT32_PVM_ENABLE FALSE
#define AT32_PVMSEL AT32_PVMSEL_LEV1 #define AT32_PVMSEL AT32_PVMSEL_LEV1
@ -136,10 +136,10 @@
#define AT32_I2C_USE_I2C1 FALSE #define AT32_I2C_USE_I2C1 FALSE
#define AT32_I2C_USE_I2C2 FALSE #define AT32_I2C_USE_I2C2 FALSE
#define AT32_I2C_BUSY_TIMEOUT 50 #define AT32_I2C_BUSY_TIMEOUT 50
#define AT32_I2C_I2C1_IRQ_PRIORITY 5
#define AT32_I2C_I2C2_IRQ_PRIORITY 5
#define AT32_I2C_I2C1_DMA_PRIORITY 3 #define AT32_I2C_I2C1_DMA_PRIORITY 3
#define AT32_I2C_I2C2_DMA_PRIORITY 3 #define AT32_I2C_I2C2_DMA_PRIORITY 3
#define AT32_I2C_I2C1_IRQ_PRIORITY 5
#define AT32_I2C_I2C2_IRQ_PRIORITY 5
#define AT32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") #define AT32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
/* /*
@ -151,8 +151,6 @@
#define AT32_ICU_USE_TMR4 FALSE #define AT32_ICU_USE_TMR4 FALSE
#define AT32_ICU_USE_TMR5 FALSE #define AT32_ICU_USE_TMR5 FALSE
#define AT32_ICU_USE_TMR9 FALSE #define AT32_ICU_USE_TMR9 FALSE
#define AT32_ICU_USE_TMR10 FALSE
#define AT32_ICU_USE_TMR11 FALSE
/* /*
* PWM driver system settings. * PWM driver system settings.
@ -216,9 +214,13 @@
#define AT32_UART_USE_USART1 FALSE #define AT32_UART_USE_USART1 FALSE
#define AT32_UART_USE_USART2 FALSE #define AT32_UART_USE_USART2 FALSE
#define AT32_UART_USE_USART3 FALSE #define AT32_UART_USE_USART3 FALSE
#define AT32_UART_USE_UART4 FALSE
#define AT32_UART_USE_UART5 FALSE
#define AT32_UART_USART1_DMA_PRIORITY 0 #define AT32_UART_USART1_DMA_PRIORITY 0
#define AT32_UART_USART2_DMA_PRIORITY 0 #define AT32_UART_USART2_DMA_PRIORITY 0
#define AT32_UART_USART3_DMA_PRIORITY 0 #define AT32_UART_USART3_DMA_PRIORITY 0
#define AT32_UART_UART4_DMA_PRIORITY 0
#define AT32_UART_UART5_DMA_PRIORITY 0
#define AT32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") #define AT32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
/* /*

View File

@ -149,8 +149,8 @@
# if defined(AT32F415) # if defined(AT32F415)
# define USE_GPIOV1 # define USE_GPIOV1
# define USE_I2CV1 # define USE_I2CV1
# define PAL_MODE_ALTERNATE_OPENDRAIN PAL_MODE_AT32_ALTERNATE_OPENDRAIN # define PAL_MODE_ALTERNATE_OPENDRAIN PAL_MODE_AT32_MUX_OPENDRAIN
# define PAL_MODE_ALTERNATE_PUSHPULL PAL_MODE_AT32_ALTERNATE_PUSHPULL # define PAL_MODE_ALTERNATE_PUSHPULL PAL_MODE_AT32_MUX_PUSHPULL
# define AUDIO_PWM_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL # define AUDIO_PWM_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL
# endif # endif
#endif #endif