Damien George
6f1e857624
stm32/qspi: Don't take the address of pin configuration identifiers.
...
Taking the address assumes that the pin is an object (eg a struct), but it
could be a literal (eg an int). Not taking the address makes this driver
more general for other uses.
2018-03-27 20:34:55 +11:00
Damien George
6b51eb22c8
stm32: Consolidate include of genhdr/pins.h to single location in pin.h.
...
genhdr/pins.h is an internal header file that defines all of the pin
objects and it's cleaner to have pin.h include it (where the struct's for
these objects are defined) rather than an explicit include by every user.
2018-03-27 20:25:24 +11:00
Damien George
b63cc1e9ef
stm32/Makefile: Re-enable strict aliasing optimisation for ST HAL files.
...
The HAL requires strict aliasing optimisation to be turned on to function
correctly (at least for the SD card driver on F4 MCUs). This optimisation
was recently disabled with the addition of H7 support due to the H7 HAL
having errors with the strict aliasing optimisation enabled. But this is
now fixed in the latest stm32lib and so the optimisation can now be
re-enabled.
Thanks to @chuckbook for finding that there was a problem with the SD card
on F4 MCUs with the strict aliasing optimisation disabled.
2018-03-26 00:00:47 +11:00
iabdalkader
7b0a020a02
stm32/boards/NUCLEO_H743ZI: Disable uSD transceiver.
...
There's no uSD Transceiver on this NUCLEO board.
2018-03-20 23:26:03 +11:00
iabdalkader
1e0a67f290
stm32/boards/NUCLEO_H743ZI: Enable hardware I2C support.
2018-03-20 23:25:43 +11:00
iabdalkader
24a9facd89
stm32/i2c: Add H7 I2C timing configurations.
...
Found the timing for full (400 KHz) and FM+ (1MHz) in the HAL examples, and
used CubeMX to calculate the standard value (100KHz).
2018-03-20 23:25:01 +11:00
iabdalkader
2ebc538d63
stm32/dma: Enable H7 DMA descriptors.
2018-03-20 23:24:45 +11:00
Damien George
0abbafd424
stm32/can: Add "list" param to CAN.recv() to receive data inplace.
...
This API matches (as close as possible) how other pyb classes allow inplace
operations, such as pyb.SPI.recv(buf).
2018-03-19 15:12:24 +11:00
Damien George
e37b8ba5a5
stm32: Use STM32xx macros instead of MCU_SERIES_xx to select MCU type.
...
The CMSIS files for the STM32 range provide macros to distinguish between
the different MCU series: STM32F4, STM32F7, STM32H7, STM32L4, etc. Prefer
to use these instead of custom ones.
2018-03-17 10:42:50 +11:00
Damien George
06aa13c350
stm32/can: Use explicit byte extraction instead of casting to word ptr.
...
Casting the Data array to a uint32_t* leads to strict aliasing errors on
older gcc compilers.
2018-03-16 23:52:13 +11:00
Damien George
a25e6c6b65
stm32/can: Add CAN.info() method to retrieve error and tx/rx buf info.
2018-03-16 18:28:35 +11:00
Damien George
d7e67fb1b4
stm32/can: Add CAN.state() method to get the state of the controller.
...
This is useful for monitoring errors on the bus and knowing when a restart
is needed.
2018-03-16 17:10:41 +11:00
Damien George
1272c3c65d
stm32/can: Add CAN.restart() method so controller can leave bus-off.
2018-03-15 17:29:30 +11:00
Damien George
823ca03008
stm32/can: Add "auto_restart" option to constructor and init() method.
2018-03-15 17:17:33 +11:00
Damien George
1608c4f5be
stm32/can: Use enums to index keyword arguments, for clarity.
2018-03-15 17:15:41 +11:00
Damien George
2036196d71
stm32/can: Improve can.recv() so it checks for events, eg ctrl-C.
...
This patch provides a custom (and simple) function to receive data on the
CAN bus, instead of the HAL function. This custom version calls
mp_handle_pending() while waiting for messages, which, among other things,
allows to interrupt the recv() method via KeyboardInterrupt.
2018-03-15 16:34:07 +11:00
Damien George
22a9158ced
stm32/boards/STM32L476DISC: Enable CAN peripheral.
...
This board allows to test CAN support on the L4 series.
2018-03-15 16:32:11 +11:00
Damien George
1345093401
stm32/qspi: Do an explicit read instead of using memory-mapped mode.
...
Using an explicit read eliminates the need to invalidate the D-cache after
enabling the memory mapping mode, which takes additional time.
2018-03-11 18:28:48 +11:00
Damien George
0d5bccad11
stm32/storage: Provide support for a second block device.
2018-03-10 01:03:27 +11:00
Damien George
bb3359f357
stm32/boards/STM32L476DISC: Provide SPI-flash bdev config.
...
This board shows how to configure external SPI flash as the main storage
medium. It uses software SPI.
2018-03-10 00:59:43 +11:00
Damien George
626d6c9756
stm32/storage: Introduce MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE cfg.
...
This config variable controls whether to support storage on the internal
flash of the MCU. It is enabled by default and should be explicitly
disabled by boards that don't want internal flash storage.
2018-03-10 00:59:43 +11:00
Damien George
d1c4bd69df
stm32/storage: Remove all SPI-flash bdev cfg, to be provided per board.
...
If a board wants to use SPI flash for storage then it must now provide the
configuration itself, using the MICROPY_HW_BDEV_xxx macros.
2018-03-10 00:59:43 +11:00
Damien George
1803e8ef22
stm32/storage: Make spi_bdev interface take a data pointer as first arg.
...
This allows a board to have multiple instances of the SPI block device.
2018-03-10 00:59:43 +11:00
Damien George
1e4caf0b1e
stm32/storage: Merge all misc block-dev funcs into a single ioctl func.
...
It makes it cleaner, and simpler to support multiple different block
devices. It also allows to easily extend a given block device with new
ioctl operations.
2018-03-10 00:59:43 +11:00
Damien George
a739b35a96
drivers/memory/spiflash: Change to use low-level SPI object not uPy one.
...
This patch alters the SPI-flash memory driver so that it uses the new
low-level C SPI protocol (from drivers/bus/spi.h) instead of the uPy SPI
protocol (from extmod/machine_spi.h). This allows the SPI-flash driver to
be used independently from the uPy runtime.
2018-03-10 00:59:43 +11:00
Damien George
58ebeca6a9
drivers/bus: Pull out software SPI implementation to dedicated driver.
...
This patch takes the software SPI implementation from extmod/machine_spi.c
and moves it to a dedicated file in drivers/bus/softspi.c. This allows the
SPI driver to be used independently of the uPy runtime, making it a more
general component.
2018-03-10 00:59:43 +11:00
iabdalkader
ad2a6e538c
stm32/system_stm32: Fix CONFIG_RCC_CR_2ND value to use bitwise or.
2018-03-09 23:37:09 +11:00
Tom Collins
993f4345c0
stm32/usbd_conf.h: Add include of stdint.h to fix compilation issues.
2018-03-09 16:08:08 +11:00
Damien George
eb56efb434
stm32: Remove startup_stm32.S, now provided in boards/ for each MCU.
2018-03-09 15:14:24 +11:00
iabdalkader
66748aaf60
stm32/Makefile: Use separate startup file for each MCU series.
2018-03-09 15:14:17 +11:00
iabdalkader
88157715db
stm32/boards: Add startup_stm32l4.s for L4 series specific startup.
2018-03-09 15:14:10 +11:00
iabdalkader
e3b81f5712
stm32/boards: Add startup_stm32f4.s for F4 series specific startup.
2018-03-09 15:14:03 +11:00
iabdalkader
d84f1a90cc
stm32/boards: Add startup_stm32f7.s for F7 series specific startup.
2018-03-09 15:13:56 +11:00
iabdalkader
0f5cce7753
stm32/boards: Add startup_stm32h7.s for H7 series specific startup.
2018-03-09 15:13:13 +11:00
iabdalkader
bbf19bb64e
stm32/main: Enable D2 SRAM1/2/3 clocks on H7 MCUs.
2018-03-09 15:12:58 +11:00
iabdalkader
61d463ad07
stm32/mpconfigboard_common: Add STM32H7 common configuration.
2018-03-09 15:12:44 +11:00
iabdalkader
6d3f42f713
stm32/extint: Add EXTI support for H7 MCUs.
2018-03-09 15:12:34 +11:00
iabdalkader
711f817c2a
stm32/rtc: Add RTC support for H7 MCUs.
2018-03-09 15:12:29 +11:00
iabdalkader
0e51e4d139
stm32/dma: Add DMA support for H7 MCUs.
2018-03-09 15:12:19 +11:00
iabdalkader
fe29419c10
stm32/stm32_it: Add support for H7 MCUs.
2018-03-09 15:12:01 +11:00
iabdalkader
2858e0aef8
stm32/usbd_conf: Add USB support for H7 MCUs.
2018-03-09 15:11:22 +11:00
iabdalkader
d151adb791
stm32/modmachine: Support basic H7 MCU features.
2018-03-09 15:10:53 +11:00
iabdalkader
0989e0cdff
stm32/timer: Add Timer support for H7 MCUs.
2018-03-09 15:10:46 +11:00
iabdalkader
b982b95c18
stm32/uart: Add UART support for H7 MCUs.
2018-03-09 15:10:39 +11:00
iabdalkader
a863c60439
stm32/wdt: Add WDT support for H7 MCUs.
2018-03-09 15:10:31 +11:00
iabdalkader
3f86fbcb07
stm32/mphalport: Use GPIO BSRRL/BSRRH registers for H7 MCUs.
2018-03-09 15:10:10 +11:00
iabdalkader
2e93d4167d
stm32/system_stm32: Add H7 MCU system initialisation.
2018-03-09 15:09:56 +11:00
iabdalkader
81f8f5f163
stm32/flash: Add flash support for H7 MCUs.
2018-03-09 15:09:49 +11:00
iabdalkader
b8d09b9bef
stm32/Makefile: Add settings to support H7 MCUs.
2018-03-09 15:09:29 +11:00
iabdalkader
fabfacf3d7
stm32/boards: Add new NUCLEO_H743ZI board configuration files.
...
USB serial and mass storage works, and the REPL is also available via the
UART through the on-board ST-LINK.
2018-03-09 15:08:11 +11:00