aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32
Commit message (Collapse)AuthorAgeFilesLines
* stm32: Clear SPE flag on a change to SPI CR1 registerKevin O'Connor2022-02-101-0/+6
| | | | | | | | | The stm32 specs indicate that the SPE bit must be cleared before changing the CPHA or CPOL bits. Reported by @cbc02009 and @bigtreetech. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Wait for transmission to complete before returning from spi_transfer()Kevin O'Connor2022-02-101-2/+5
| | | | | | | | | | | | | It's possible for the SCLK pin to still be updating even after the last byte of data has been read from the receive pin. (In particular in spi mode 0 and 1.) Exiting early from spi_transfer() in this case could result in the CS pin being raised before the final updates to SCLK pin. Add an additional wait at the end of spi_transfer() to avoid this issue. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Fix ADC on stm32h7 (#5239)adelyser2022-02-061-1/+3
| | | | | | Don't reset the ADC peripheral if the clock is already enabled. Fixes #5236 Signed-off-by: Aaron DeLyser <bluwolf@gmail.com>
* stm32: Add remap CAN to PD0/PD1 for stm32f103 (#5173)Sergey15602022-01-262-1/+4
| | | Signed-off-by: Sergey Terentiev <sergey@terentiev.me>
* stm32: Update Kconfig as CANBUS isn't available on stm32f401Kevin O'Connor2022-01-071-8/+15
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Unify enable_pclock() codeKevin O'Connor2021-12-308-238/+125
| | | | | | | | | Unify the handling of the enable_pclock() and is_enabled_pclock() code across all stm32 chips. All chips will now perform a peripheral reset on enable_pclock() (this is a change for stm32f0 and stm32h7). The enable_pclock() code will now also disable irqs during the enable. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Fix the GPIO register for stm32h7 (#5077)adelyser2021-12-291-3/+3
| | | Signed-off-by: Aaron DeLyser <bluwolf@gmail.com>
* stm32: Fix ADC on stm32f042Kevin O'Connor2021-12-241-0/+1
| | | | | | It seems the stm32f042 chip needs a small delay during ADC enable. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Enable SPI support on stm32g0Kevin O'Connor2021-12-232-4/+8
| | | | | Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Enable ADC support on stm32g0Kevin O'Connor2021-12-233-12/+51
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Rework register access on stm32f0_adc.cKevin O'Connor2021-12-231-34/+25
| | | | | | | | | | | Avoid read-modify-write operations where possible. The register values are in a known state so prefer absolute writes. Improve handling of race conditions with hardware updates. Remove the adc reference from "struct gpio_adc" as it is a constant. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Minor whitespace changes to stm32f0_adc.cKevin O'Connor2021-12-231-12/+8
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Enable I2C on stm32g0Kevin O'Connor2021-12-232-1/+2
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add support for USB on stm32g0Kevin O'Connor2021-12-232-21/+70
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Rework USB transfer memory layout in usbfs.cKevin O'Connor2021-12-231-46/+55
| | | | | | | | | Use a fixed layout for the USB transfer memory and remove the ep_mem struct definition. This is in preparation for stm32g0 support. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Fix buffer size calculation in usbfs.cKevin O'Connor2021-12-231-1/+1
| | | | | | When the buffers are over 32 bytes, a block count of 1 starts at 0. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Simplify irq declaration in usbfs.cKevin O'Connor2021-12-231-11/+11
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Initial support for stm32g0Kevin O'Connor2021-12-236-8/+253
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Enable optimized gpio_clock_enable() function on stm32h7Kevin O'Connor2021-12-231-1/+3
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Reorganize stm32h7.c into major code blocksKevin O'Connor2021-12-231-10/+21
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Remove USB boot stubs from stm32h7.cKevin O'Connor2021-12-231-8/+0
| | | | | | | The USB dfu bootloader wasn't enabled on stm32h7, so remove the copy-and-paste code stubs for it. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Fix DFU entry point on stm32f072Kevin O'Connor2021-12-231-0/+2
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Reorganize usb bootloader code in stm32f0.cKevin O'Connor2021-12-231-38/+65
| | | | | | Reorganize stm32f0.c into major code blocks. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Reorganize usb bootloader code in stm32f4.cKevin O'Connor2021-12-231-30/+63
| | | | | | Reorganize stm32f4.c into major code blocks. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Reorganize code in stm32f1.cKevin O'Connor2021-12-231-47/+82
| | | | | | Reorganize stm32f1.c into major code blocks. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add new gpioperiph.c file for gpio_peripheral() codeKevin O'Connor2021-12-235-83/+45
| | | | | | | | The gpio_peripheral() code is the same in stm32f0.c, stm32f4.c, and stm32h7.c. Move that function to a new gpioperiph.c file to avoid code duplication. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add option to disable SWD on GigaDevice STM32F103 clonesKevin O'Connor2021-11-252-2/+17
| | | | | | Tested by @FotoFieber. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add USBOTG support to stm32h7adelyser2021-11-213-23/+81
| | | | | Signed-off-by: Aaron DeLyser <bluwolf@gmail.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Enable SPI on stm32h7Kevin O'Connor2021-11-201-1/+1
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add stm32h7 SPI support (#4850)adelyser2021-11-203-3/+159
| | | Signed-off-by: Aaron DeLyser <bluwolf@gmail.com>
* stm32: Add STM32H743 supportadelyser2021-11-201-3/+17
| | | | | Signed-off-by: Aaron DeLyser <bluwolf@gmail.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Limit stm32h7 chips to 400MhzKevin O'Connor2021-11-201-1/+1
| | | | | | | | Don't go above 400Mhz as otherwise it causes 32bit rollover issues. (Parts of the code expect a rollover will not occur faster than 10 seconds.) Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add UART4 to stm32h7 (#4848)adelyser2021-11-191-2/+13
| | | Signed-off-by: Aaron DeLyser <bluwolf@gmail.com>
* stm32f4: reset peripherals in enable_pcclock()Eric Callahan2021-11-081-0/+7
| | | | | | | Reset peripherals to after enabling to clear stale registers set by the bootloader. Signed-off-by: Eric Callahan <arksine.code@gmail.com>
* stm32f4: reset peripheral clocks on initEric Callahan2021-11-081-0/+6
| | | | Signed-off-by: Eric Callahan <arksine.code@gmail.com>
* stepper: Add support for stepping on both edges of a step pulseKevin O'Connor2021-11-041-0/+1
| | | | | | | | | | Add an optimized step function for drivers that support stepping on both rising and falling edges of the step pin. Enable this optimization on 32bit ARM micro-controllers. Automatically detect this capability in the host code and enable on TMC drivers running in SPI/UART mode. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Remove gcc -mfpu=fpv4-sp-d16 floating point optionKevin O'Connor2021-10-301-1/+0
| | | | | | | | The floating point unit must be enabled in order to use it and Klipper does not currently implement that. Newer versions of gcc may spill registers to the floating point unit causing failures. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add a MACH_STM32F0x2 alias for F042 and F072 chipsKevin O'Connor2021-10-132-7/+11
| | | | | | | | The F042 and F072 chips are in the same series and the code should be nearly identical for these chips. Implement the alias and enable USB for the F072 chips. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Rework HAVE_GPIO_HARD_PWM in KconfigKevin O'Connor2021-10-131-7/+1
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Change stm32f0 OSPEEDR to "medium" speedKevin O'Connor2021-10-121-1/+1
| | | | | | | | | The previous OSPEEDR value of 0x2 was copied from the stm32f4.c code, but the stm32f0 interprets that value the same as 0x0 - which is "low" speed. Change the OSPEEDR value to "medium" speed so that it matches the configuration of stm32f1 chips. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add comments to configuration of OSPEEDR gpio speedKevin O'Connor2021-10-124-8/+15
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Rework #if pin definition clauses in hard_pwm.cKevin O'Connor2021-10-111-54/+50
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Adding Hardware PWM support for the STM32F4 processors (#4693)jrhelbert2021-10-112-1/+67
| | | | | This change has been expanded to include all STM32F4 processors, since they share a common TIMER mapping with some processors just not having all of the timers and pins. Signed-off-by: Jerome Helbert <jerome@helbert.net>
* config: Anycubic Vyper (#4740)Manuel Fichtner2021-10-111-1/+1
| | | | | | | | | | | This commit contains a configuration for the Anycubic Vyper printer from 2021. It uses a clone of the STM32F103 chip named GD32F103. There are 2 Mainboard versions out there v0.0.5 and v0.0.6, this config has been tested with the v0.0.6 only. It should probably work for v0.0.5 as well since there are no different changes in the Anycubic Marlin firmware. The LCD is not supported yet (might work, but didn't try yet). Signed-off-by: Marc Neuhaus <marc@neuhaus.nrw> Signed-off-by: Manuel Fichtner <manuel.fichtner@me.com>
* stm32: Add an MACH_STM32F4x5 alias for F405, F407, and F429 chipsKevin O'Connor2021-10-063-15/+18
| | | | | | | | | The F405, F407, and F429 chips are in the same series and almost all code definitions should apply to all chips in that series. Implement the alias and fix defintions in adc.c and Kconfig that were only applying to a subset of that series. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add hardware pwm for stm32h7D4SK2021-10-062-1/+49
| | | | | Signed-off-by: Konstantin Vogel <konstantin.vogel@gmx.net> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add initial support for stm32h7D4SK2021-10-067-2/+583
| | | | | Signed-off-by: Konstantin Vogel <konstantin.vogel@gmx.net> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Support PB7/PB6 for USART1 on stm32f0Kevin O'Connor2021-08-012-10/+17
| | | | | | | | | | | Add support for USART1 on PB7/PB6. Remove STM32_SERIAL_USART1_ALT_PA15_PA14 option and allow all serial mappings to be used on stm32f031. Reported by @Desuuuu. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stm32: Add 16KiB bootloader option for STM32F103 (#4493)Simon Hawkenson2021-07-151-1/+1
| | | | | The Eryone ER-20 is a STM32F103 based 3D printer which ships with a 16KiB bootloader. Their official version of Marlin starts at 0x08004000. Signed-off-by: Simon Hawkenson <simon@hawkenson.ca>
* stm32: Allow STM32F401 boards to use STM32 HID Bootloader (#4461)Henky Prayoga2021-07-091-2/+2
| | | Signed-off-by: Henky Prayoga <henky.prayoga@callysta-engineering.com>