Commit Graph

13353 Commits

Author SHA1 Message Date
Gregory Nutt
e379491d13 STM32/STM32L4: Review of last commit -- Eliminate possible underflow 2017-06-13 07:05:46 -06:00
JM
7903a8a46c stm32/stm32l4 PWM: While attempting to output a 70 MHz square wave from the timer output of a STM32 clocked at 140 MHz (which works fine in baremetal C), I stumbled on what I believe to be an error in arch/arm/src/stm32/stm32_pwm.c. Line 1304 we are told that
reload = timclk / info->frequency;

which I belive to be incorrect, it should be

reload = timclk / info->frequency - 1;

since starting to count from 0, if I want to output half of the TIM clock, I must count to 1 and not to 2.

Surely enough, the original code did output 140/3=47 MHz, while this correction does allow the output up to 70 MHz.

I am not sure this affects most users generating slow PWM (e.g. PX4) but for frequencies
close to the PCLK, indeed the difference becomes significant.
2017-06-13 06:01:13 -06:00
raiden00pl
f6ba4642a3 stm32_hrtim: GPIOs configuration + EEV and FAULT strucutres 2017-06-12 18:45:58 +02:00
Gregory Nutt
f5f1c73b54 Based on the last PR, review all serial driver vector attachment. Found one additional error and updated all relevant drivers to current interrupt parameter passing. 2017-06-12 06:22:35 -06:00
Masayuki Ishikawa
93a2d52b56 i.MX6: Fix a wrong parameter passed when calling irq_attach() in imx_serial.c 2017-06-12 13:34:53 +09:00
raiden00pl
de8cd6c870 stm32_hrtim: add character driver 2017-06-11 20:51:23 +02:00
Gregory Nutt
fe813545e8 STM32F33: Forgot to add new files that were a part of the last patch before committing. 2017-06-11 11:00:29 -06:00
Mateusz Szafoni
437ad3ccb2 STM32F33: Fix hrtim definitions, Add beginning of HRTIM driver 2017-06-11 10:49:20 -06:00
Gregory Nutt
1e5125c5d5 STM32L4: Remove some C++ style comments. 2017-06-08 13:43:47 -06:00
Gregory Nutt
8b907c4c1f STM32L4: Fix a typo 2017-06-08 11:07:20 -06:00
Gregory Nutt
d99ceec58c STM32L4: Add STM32L475 pinmap. Initial cut is just the the L476 pinmap with unsupported devices removed. 2017-06-08 10:55:27 -06:00
Gregory Nutt
596fe68854 STM32L4: Add STM32L475 OTGFS header file. Not fully reviewed. 2017-06-08 10:34:26 -06:00
Gregory Nutt
95fcdff1fd STM32L4: Add STM32L475 RCC definitions/logic. 2017-06-08 10:04:28 -06:00
Gregory Nutt
1a405d2881 STM32L4: Add L475 syscfg register definitions. 2017-06-08 09:07:04 -06:00
Gregory Nutt
66e2247f30 STM32L4: Ad support for the STM32L475 family. Incomplete -- still needs pinmap, rcc, otgfs, syscfg 2017-06-08 08:52:09 -06:00
David Sidrane
4854eb1fd7 Kinetis:Fixed waning for kinetis_mpudisable
Missing header file added
2017-06-06 15:18:01 -10:00
David Sidrane
36da2b91c5 Kinetis:USB-FS driver
Removed the notion of attached. The khci_usbattach is call early in
   the init either in board_initalize or in board_app_initalize. In
   either case it is always done prior to the the class register.
   Therefore the khci_usbattach call only set a flag, and that
   flag is only tested in the class register. The class register will
   enable the soft connect pull up.
2017-06-06 14:39:00 -10:00
David Sidrane
cb62675b5e Kinetis:sim ensure isolation of clock dividers for 0 value case
This fixes a bug were a SoC does not have a clockdivN register
   and passes a 0 for the init value. This prevents overflow of
   the 0 decremented to -1 (0xffffffff) spilling over to other
   clockdivN feilds.
2017-06-06 14:38:59 -10:00
David Sidrane
60c552ae0f Kinetis:usbdev clean up ensuring proper use of HW.
Remove magic numbers from code, documented the use of
  undocumented bits.

  Remove comments and code that were not appropriate for this
  hardware.

  Removed ifdef that's that were always compiled and removed code
  blocks that were never compiled.

  Ensure proper access order to hardware.
  Per the reference manual: disable endpoints prior to configuring buffer
  descriptor, then enable endpoints
  Reorganize interrupt processing order to offload data after processing
  errors.

  Reorganize initialization so that there is a clear initialization phase,
  reset phase for both the hardware and software structures.

  By breaking the initialization into smaller pieces, the reset interrupt
  only resets the resources within the controller that should be reset.

  Rework suspend and resume logic so they perform properly

  Made attach and detach functions optional. As they do not make sense for
  a bus powered device.

  Ensured the calls to up_usbinitalize up_usbuninitalize do not violate the
  USB spec.
2017-06-06 14:38:59 -10:00
David Sidrane
c1a3208f83 Kinetis:Disable MPU when not in protected mode.
The hardware reset state of the the MPU precludes any bus
   masters other then DMA access to memory. Unfortunately
   USB and SDHC have there own DMA and will not have access to
   memory in the default reset state.

   This change disabled the MPU if present on system startup.
2017-06-06 14:38:58 -10:00
Gregory Nutt
4d46979a6f Tiva SSI: Resolves issue 52 'Copy-Paste error in tiva_ssibus_initialize()' submitted by Aleksandr Kazantsev. 2017-06-01 06:38:47 -06:00
Juha Niskanen
ad6515563b STM32L4 RTC: store RTC MAGIC to backup reg, not to address zero 2017-06-01 06:15:28 -06:00
Jussi Kivilinna
369b72f65a stm32f7: Add SPI DMA support 2017-05-31 09:13:20 -06:00
Juha Niskanen
14c233a2f5 STM32L4: gpio: put back EXTI line source selection 2017-05-31 06:34:14 -06:00
David Sidrane
a077d0285b Kinetis:Added ADC channel macro 2017-05-25 16:52:08 -10:00
David Sidrane
b407020968 Kinetis:Fixed typo in kinetis_adc.h 2017-05-25 16:51:25 -10:00
David Sidrane
488f42588b Kinetis:Removed base address from kinetis_adc.h 2017-05-25 16:50:42 -10:00
Juha Niskanen
0c9abbfe67 STM32L4: Add IWDG peripheral. This is the same as for STM32 except that prescale and reload can be
changed after watchdog has been started, as this seems to work on L4.
2017-05-23 07:02:36 -06:00
Gregory Nutt
32eb5ca99a Missed one change in the previous commit. 2017-05-21 15:02:00 -06:00
Gregory Nutt
7ffbb704d6 This is based on a patch by Taras Drozdovsky. Basically, the delay that was added during the integration of the CDC/ACM host driver was interfering with streaming audio. That delay was put there to prevent build endpoints from hogging the system bandwidth. So what do we do? Do we hog the bandwidth or do we insert arbitrarity delays. I think both ideas such. 2017-05-21 14:28:29 -06:00
Taras Drozdovsky
4ab2a3661e STM32F4: add cs43l22 audio driver and i2s driver 2017-05-21 14:14:09 -06:00
Juha Niskanen
819a6e049e stm32_i2c: make private symbols static 2017-05-19 07:16:01 -06:00
Gregory Nutt
989195cec8 STM32 Ethernet: Last patch breaks every board that does not use the KSZ80801 PHY. 2017-05-17 15:36:57 -06:00
Gregory Nutt
aac3a3df8e STM32 Ethernet: Should not stm32_phyintenable() return a failure if it could not enable the PHY interrupt? 2017-05-17 10:07:09 -06:00
Sebastien Lorquet
2c6ea23aee STM32 Ethernet: Add support for KSZ8081 PHY interrupts. 2017-05-17 10:04:49 -06:00
Juha Niskanen
8896f91f53 STM32L4: remove duplicate USART selects from Kconfig 2017-05-17 08:05:24 -06:00
Jussi Kivilinna
9169ff6a15 stm32_serial: fix freezing serial port. Serial interrupt enable/disable functions do not disable interrupts and can freeze device when serial interrupt is received while execution is at those functions.
Trivially triggered with two or more threads write to regular syslog stream and to emergency stream. In this case, freeze happens because of mismatch of priv->ie (TXEIE == 0) and actually enabled interrupts in USART registers (TXEIE == 1), which leads to unhandled TXE interrupt
and causes interrupt storm for USART.
2017-05-17 06:50:46 -06:00
Lederhilger Martin
b8e7d5c455 I had the problem that the transmit FIFO size (= actual elements in FIFO) was slowly increasing over time, and was full after a few hours.
The reason was that the code hit the line "canerr("ERROR: No available mailbox\n");" in stm32_cansend, so can_xmit thinks it has sent the packet to the hardware, but actually has not. Therefore the transmit interrupt never happens which would call can_txdone, and so the size of the FIFO size does not decrease.

The reason why the code actually hit the mentioned line above, is because stm32can_txready uses a different (incomplete) condition than stm32can_send to determine if the mailbox can be used for sending, and thus can_xmit forwards the packet to stm32can_send. stm32can_txready considered mailboxes OK for sending if the mailbox was empty, but did not consider that mailboxes may not yet be used if the request completed bit is set - stm32can_txinterrupt has to process these mailboxes first.

Note that I have also modified stm32can_txinterrupt - I removed the if condition, because the CAN controller retries to send the packet until it succeeds. Also if the condition would not evaluate to true, can_txdone would not be called and the FIFO size would not decrease also.
2017-05-16 07:47:18 -06:00
Gregory Nutt
b0fda33e13 Kconfig: Rename CONFIG_ARM_TOOLCHAIN_IAR to CONFIG_ARCH_TOOLCHAIN_IAR 2017-05-13 16:01:38 -06:00
Gregory Nutt
27805315f4 Tiva I2C: Correct an in conditional compilation 2017-05-13 14:01:42 -06:00
Gregory Nutt
6e4918c557 Remove CONFIG_ARM_TOOLCHAIN_GNU; replace with CONFIG_ARCH_TOOLCHAIN_GNU 2017-05-13 13:28:15 -06:00
Gregory Nutt
7fe112fe4c Kconfig/deconfigs: Add CONFIG_ARCH_TOOLCHAIN_GNU to indicate that the toolchain is based on GNU gcc/as/ld. This is in addition to the CPU-specific versions of the same definition. 2017-05-13 11:44:12 -06:00
Gwenhael Goavec-Merou
02535be36a STM32F410. Add support for STM32Fr10. STM32F410 is a version of STM32F4 with 32 KB of RAM and 62 or 128 KB of flash. 2017-05-13 08:40:09 -06:00
David Sidrane
c4a2e1399b Merged in david_s5/nuttx/upstream_kinetis (pull request #368)
kinetis:K66 GPIO and pin mux cleanup

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-05-13 10:37:20 +00:00
David Sidrane
69a8aecbc8 kinetis:K66 define ALT1 to match ref manual 2017-05-12 17:21:54 -10:00
David Sidrane
700e4ff5b6 kinetis:K66 fixed TMP2_CH1 definition 2017-05-12 17:03:27 -10:00
Alan Carvalho de Assis
853d332b6c Move CAN subsystem to its own directory and put device drivers there
Signed-off-by: Alan Carvalho de Assis <acassis@gmail.com>
2017-05-12 11:48:47 -03:00
Juha Niskanen
46851b33b2 STM32L4: port stm32l4_serial_get_uart function from STM32F7 2017-05-12 15:54:48 +03:00
Gregory Nutt
0de294a586 Fix lots of occurrences of 'the the', 'the there', 'the these', 'the then', 'the they. 2017-05-11 13:35:56 -06:00
Gregory Nutt
3091050963 STM32L4: Review of last PR + Move separate stm32l4_flash.h; move hardware-specific definitions to chip/stm32l4_flash.h 2017-05-11 06:58:39 -06:00
Juha Niskanen
c74a51f789 STM32L4: add internal flash write support 2017-05-11 14:35:27 +03:00
Juha Niskanen
4f18b40429 mtd/config: erase block between block read and write 2017-05-10 08:25:39 -06:00
Juha Niskanen
e04ea9e3e3 Merged in juniskane/nuttx_stm32l4/stm32l4_dbgmcu_pr (pull request #361)
STM32L4: add dbgmcu header files

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-05-09 17:06:32 +00:00
Gregory Nutt
3d73a04259 Merged l432kc into master 2017-05-09 11:03:42 -06:00
Gregory Nutt
2043e1a114 IOBs: Move from driver/iob to a better location in mm/iob 2017-05-09 07:35:30 -06:00
Juha Niskanen
ce1ad33289 STM32L4: add dbgmcu header files 2017-05-09 14:13:51 +03:00
Sebastien Lorquet
d591d3ac4e Restore settings for UARTs 4 and 5 2017-05-09 11:38:14 +02:00
Sebastien Lorquet
5204f19e4f fix typo found by Juha during review 2017-05-09 11:32:16 +02:00
Sebastien Lorquet
c1cf1269c7 Adapt stm32l43x pin definitions 2017-05-09 10:58:04 +02:00
David Sidrane
014b69e120 removed stray paren. 2017-05-08 22:56:05 +00:00
David Sidrane
8406b40baa Merged in david_s5/nuttx-16/david_s5/stm32serial-dma-buffer-round-off-not-up-1494258804216 (pull request #357)
stm32:Serial DMA buffer round off not up

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-05-08 20:32:44 +00:00
Gregory Nutt
aa11d637a8 STM32 TIM: Add method to get timer width. Freerun timer: Use timer width to get the correct clock rollover point. 2017-05-08 12:33:15 -06:00
David Sidrane
546e7acb99 stm32:Serial DMA buffer round off not up 2017-05-08 15:54:03 +00:00
David Sidrane
b8ef079951 stm32:stm32_serial Forgot the -1 on mask 2017-05-08 03:43:36 +00:00
David Sidrane
0b2fb5a396 Merged in david_s5/nuttx/upstream_stm_dma (pull request #355)
stm32: serial Allow configuring Rx DMA buffer size

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-05-06 17:49:48 +00:00
David Sidrane
b62ef579c8 stm32: serial Allow configuring Rx DMA buffer size 2017-05-06 05:16:21 -10:00
David Sidrane
5d6da5f4bb kinetis:Add ARCH_HAVE_I2CRESET 2017-05-06 04:52:48 -10:00
David Sidrane
97260321f2 kinetis:k66 Pin mux configure all I2C signals as Open Drain
The output structure of the GPIO for I2C needs to be open
   drain.  When left at the default, one can observe on a scope
   the slave contending with the push-pull during the ACK
2017-05-05 15:06:32 -10:00
David Sidrane
ce98cedb17 kinetis:k64 Pin mux configure all I2C signals as Open Drain
The output structure of the GPIO for I2C needs to be open
   drain.  When left at the default, one can observe on a scope
   the slave contending with the push-pull during the ACK
2017-05-05 15:06:24 -10:00
David Sidrane
af1f48c1c5 kinetis:k60 Pin mux configure all I2C signals as Open Drain
The output structure of the GPIO for I2C needs to be open
   drain.  When left at the default, one can observe on a scope
   the slave contending with the push-pull during the ACK
2017-05-05 15:06:14 -10:00
David Sidrane
1d9d13c426 kinetis:k40 Pin mux configure all I2C signals as Open Drain
The output structure of the GPIO for I2C needs to be open
   drain.  When left at the default, one can observe on a scope
   the slave contending with the push-pull during the ACK
2017-05-05 15:06:09 -10:00
David Sidrane
979e671cf0 kinetis:k20 Pin mux configure all I2C signals as Open Drain
The output structure of the GPIO for I2C needs to be open
   drain.  When left at the default, one can observe on a scope
   the slave contending with the push-pull during the ACK
2017-05-05 15:06:00 -10:00
Gregory Nutt
1cd3b3f590 Fix errors introduced into Kinetis serial when I unsuccessfully tried to correct coding standard violations. Folks, things will be better for everyone if you just follow that standard. 2017-05-05 14:47:11 -06:00
Gregory Nutt
0e49db7626 Add a blank line. 2017-05-05 09:35:47 -06:00
Juha Niskanen
35883ff9ae Merged in juniskane/nuttx_stm32l4/l4dev (pull request #347)
STM32L4: add support for many new MCUs from STM32L4X3XX product line and Nucleo-L452 board

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-05-05 15:31:07 +00:00
David Sidrane
f29981e473 kinetis:Added HW flow control and termios 2017-05-05 07:33:15 -06:00
David Sidrane
b6a8db1b39 Kinetis: Use optional BOARD_OSC_CR and BOARD_OSC_DIV in clock configuration 2017-05-05 07:18:39 -06:00
David Sidrane
29ef635e89 Kinetis:Add OSC_DIV to the kinetis_osc header 2017-05-05 07:16:11 -06:00
David Sidrane
f73e2aab8d Kinetis:Fixed CLKSRC Bit Names 2017-05-05 07:14:00 -06:00
David Sidrane
2171523f50 Kinetis:Add TPM to K66 chip 2017-05-05 07:12:52 -06:00
Juha Niskanen
71accfc57b STM32L4: add more chips to Kconfig
(This also removes DPFPU/DTCM/ITCM features again, fixing a
recent git history hickup.)
2017-05-05 11:03:49 +03:00
Juha Niskanen
a5e9724224 STM32L4: firewall for stm32l4x3xx
Not tested for any product family, but now it at least compiles.
L496 devices can have one bit wider Volatile Data Segment.
2017-05-05 10:15:09 +03:00
Juha Niskanen
075a8b913c STM32L4: separate SYSCFG into product line specific files for clarity 2017-05-05 10:10:37 +03:00
Juha Niskanen
92f4277b1e Merged in juniskane/nuttx_stm32l4/stm32l4_i2c_pr (pull request #346)
STM32L4: stm32l4_i2c: change wrong macro to CONFIG_I2C_POLLED

Approved-by: Gregory Nutt <gnutt@nuttx.org>
2017-05-04 19:29:08 +00:00
Jussi Kivilinna
7035723aeb STM32F7 serial: Allow configuring Rx DMA buffer size 2017-05-04 07:09:19 -06:00
Jussi Kivilinna
acf0d17e5a Fix STM32F7 I2C interrupt handler 2017-05-04 06:51:44 -06:00
Juha Niskanen
80c2d384bb STM32L4: flash: update override config macros and add FLASH_CONFIG_B 2017-05-04 15:24:16 +03:00
Juha Niskanen
ae22eb224a STM32L4: changes needed for STM32L452 and Nucleo-L452RE board
GPIO and UART seem similar across STMicro product matrix,
so renamed files accordingly. RCC is cloned just in case,
while conflicting differences there seem to be very minor.
2017-05-04 15:23:38 +03:00
Juha Niskanen
dd1b9dfa81 STM32L4: modularize Kconfig to support different product lines/families
This is modeled after STM32F7. Idea is to declare each chip in Kconfig
but allow for flash size override. Commit adds many STM32L4_HAVE_XXX
feature test macros.
2017-05-04 15:22:51 +03:00
Juha Niskanen
c67c4a75ba STM32L4: stm32l4_i2c: change wrong macro to CONFIG_I2C_POLLED 2017-05-04 09:31:12 +03:00
Gregory Nutt
b0e880b04c Revert "STM32 I2C: More backward tests of CONFIG_I2C_POLLED. Needs to be reviewed."
This reverts commit 1e054a2d3b.
2017-05-03 18:26:24 -06:00
Gregory Nutt
11c14470c3 Merge remote-tracking branch 'origin/master' into photon 2017-05-03 17:36:52 -06:00
Gregory Nutt
1e054a2d3b STM32 I2C: More backward tests of CONFIG_I2C_POLLED. Needs to be reviewed. 2017-05-03 17:33:35 -06:00
David Sidrane
9b5ac56409 Fixed typo and backward ifdef 2017-05-03 23:10:48 +00:00
Juha Niskanen
ad3b941c44 STM32L4: stm32l4x6xx_pinmap: update I2C4 and DCMI pins
Signed-off-by: Juha Niskanen <juha.niskanen@haltian.com>
2017-05-02 10:16:34 -06:00
Juha Niskanen
74e016d013 STM32F7: flash: macro naming errors, there is no FLASH_CONFIG_F for F7
Signed-off-by: Juha Niskanen <juha.niskanen@haltian.com>
2017-05-02 10:14:46 -06:00
Gregory Nutt
e94865a317 Merge remote-tracking branch 'origin/master' into photon 2017-05-02 08:49:19 -06:00
Gregory Nutt
40b5c46024 STM32L4: Delete more references to DFPU, ITCM, and DTCM. 2017-05-02 08:03:21 -06:00
Mateusz Szafoni
1feaae7222 Merged in raiden00/nuttx (pull request #338)
OPAMP support for STM32F33XX
2017-05-02 13:57:56 +00:00
Juha Niskanen
a59b7bc932 STM32L4: add GPIO_PORTI definition
Signed-off-by: Juha Niskanen <juha.niskanen@haltian.com>
2017-05-02 07:41:14 -06:00