Commit Graph

266 Commits (master)

Author SHA1 Message Date
Chun-Chieh Li c1c9550539 NUVOTON: CAN: Fix filter mask being zero
On mask being zero, it means any match, not exact match.

NOTE: This fix only targets CAN (M453/M487), not CAN-FD (M467).
NOTE: NUC472 CAN doesn't support filter.
2024-04-18 13:29:24 +08:00
Chun-Chieh Li 989a694c5a NUVOTON: CAN: Fix Message Object number for Tx and recognition of Rx interrupt
1.  The same Message Object number cannot use for both Tx and Rx simultaneously.
    For Tx, Message Object number 31 is reserved instead of 0.
    For Rx, Message Object numbers 0~30 are used and for filters.
2.  NewDat bit (CAN_IsNewDataReceived()) isn't exclusive to Rx.
    Recognize Rx interrupt by Message Object number other than 31.

NOTE: This fix only targets CAN (NUC472/M453/M487), not CAN-FD (M467).
2024-04-18 11:04:15 +08:00
Chun-Chieh Li bfd4ceb20b NUVOTON: CAN: Fix Rx interrupt doesn't work
Major modifications:
1. Handle Rx interrupt based on Message Object interrupt (CAN_IIDR=0x0001~0x0020) instead of CAN_STATUS.RxOK
2. Also handle Tx interrupt following above for consistency

Other related modifications:
1. Fix signature type error in CAN_CLR_INT_PENDING_BIT()
2. Add CAN_CLR_INT_PENDING_ONLY_BIT() which doesn't clear NewDat flag so that user can fetch received message in thread context

NOTE: This fix only targets CAN (NUC472/M453/M487), not CAN-FD (M467).
2024-04-18 11:04:15 +08:00
Chun-Chieh Li 63bdb26915 NUVOTON: CAN: Fix filter mask
NOTE: This fix only targets CAN (M453/M487), not CAN-FD (M467).
NOTE: NUC472 CAN doesn't support filter.
2024-04-18 11:04:15 +08:00
Chun-Chieh Li 91a1b59c95 Nuvoton: Enable extending sampling time for ADC/EADC
For all Nuvoton targets, enable extending sampling time in ADC/EADC clocks on per-pin basis.
2023-05-15 14:40:10 +08:00
Chun-Chieh Li e638da4a69 M487: Remove unused variable 'u32EscapeFrame'
Remove unused variable 'u32EscapeFrame' in BSP m480_ccap.h to avoid warnings
2023-03-09 11:29:57 +08:00
Chun-Chieh Li dbc0f5b2b3 Nuvoton: I2C: Fix potential role switch failure
Fix in i2c_do_trsn(), interrupt doesn't change back to enabled due to premature return.

Fix targets:
-   NUMAKER_PFM_NANO130
-   NUMAKER_PFM_NUC472
-   NUMAKER_PFM_M453
-   NUMAKER_PFM_M487/NUMAKER_IOT_M487
-   NUMAKER_IOT_M252
-   NUMAKER_IOT_M263A
-   NU_M2354
2022-09-23 09:45:56 +08:00
Hari Limaye f4e5359710 GPIO: Use uintptr_t for gpio_irq_api context
The HAL gpio_irq_api stores object IDs, which serve as a form of context
for the dispatch of the interrupt handler in the drivers level
InterruptIn Class. The way this is achieved is that the InterruptIn
Class casts its address to uint32_t, which is stored as the ID.
This results in compilation failure when the size of an object pointer
is greater than uint32_t, for example when building on a PC for unit
testing.

In order to allow Unit Testing of the InterruptIn Class, we replace the
use of uint32_t with uintptr_t (type capable of holding a pointer),
which allows portability and expresses intentions more clearly.
In aid of this latter goal, we also replace the use of the name "id"
with "context", to improve clarity - these are addresses of the context
related to that callback.
2022-01-26 18:12:52 +00:00
Chun-Chieh Li 926cda5e8f M487: Fix UART 6/7 base address encoding
Fix UART 6/7 base addresses are incorrectly encoded into peripheral names
2022-01-07 16:39:59 +08:00
Hari Limaye b493a15a53 CAN: Use uintptr_t for can_irq_ids
The HAL can_api stores an array of IDs in order to dispatch interrupts
to the correct CAN object. The drivers level CAN Class casts a pointer
to itself to an uint32_t, which is stored as the ID and then cast back
to a CAN * in order to call the correct handler. This results in
compilation failure when the size of an object pointer is greater than
uint32_t, for example when building on a PC for unit testing.

In order to allow Unit Testing of the CAN Class, we replace the use of
uint32_t with uintptr_t (type capable of holding a pointer), which
allows portability and expresses intentions more clearly. In aid of this
latter goal, we also replace the use of the name "id" with "context",
to improve clarity. These are addresses of the context related to that
callback.
2021-09-17 13:36:43 +01:00
cyliangtw a33dc4e371 M480 CAN API support mask feature 2021-08-24 18:26:49 +08:00
Chun-Chieh Li 77ed6778d8 Nuvoton: Explicitly disable HXT/LXT on configured to not present
This is to guard from BSP driver which cannot see this configuration and still uses HXT/LXT.
2021-06-02 09:02:05 +08:00
Chun-Chieh Li a0c53896e0 Nuvoton: Enable no HXT/LXT configurabiliy
LXT/HXT are external crystl oscillator and can be absent on custom board.
This enables configuring LXT/HXT presence:
1.  By default, LXT/HXT are configured to be present, except M252 which has no HXT.
2.  When LXT is configured to not present, lp_ticker/watchdog will clock by LIRC instead.
3.  Limitations:
    (1) On all targets, LIRC-clocked lp_ticker gets inaccurate and fails to pass tests.
    (2) On NUC472/M453, HIRC-clocked PLL doesn't output 1MHz-aligned frequency. us_ticker gets slight inaccurate.
    (3) On all targets, LIRC-clocked RTC is not supported due to no H/W path/RTC clock source reset to LXT on reset/RTC not trimmed for other clock rates.
4.  On M263, TRNG's clock source defaults to LXT and needs special handling without LXT.
5.  On M252, replace target.hxt-enable with target.hxt-present for consistency.
2021-06-02 09:02:05 +08:00
Martin Kojtal ccde03aac2
Merge pull request #14567 from OpenNuvoton/nvt_m480_wdt_rst
M487: Resolve WDT reset H/W limit
2021-05-03 12:11:30 +02:00
Chun-Chieh Li e38b691541 M487: Refine the WKT resolution to WDT reset from PD
1. Rephrase the comment
2. Pass WDT reset reason test
2021-04-22 19:12:52 +08:00
cyliangtw 7db85490e6 Align lines by space instead of tab 2021-04-20 19:39:14 +08:00
cyliangtw b26fd71855 Resolve M480 WDT reset H/W limit by reset from deep power-down 2021-04-20 18:18:00 +08:00
Chun-Chieh Li d489c92a1b Nuvoton: Fix hal_watchdog_kick() with WDT stopped
According to HAL spec, hal_watchdog_kick() shall do nothing when WDT is stopped.
2021-04-16 09:56:43 +08:00
Chun-Chieh Li df4f1a3387 M487: Adjust placement of SYS_UnlockReg in WDT reset from PD patch
This adjustment has two purposes:
1.  Avoid misleading placement of SYS_UnlockReg for WDT clock setting
2.  Safer for power-down
2021-04-08 17:18:38 +08:00
George Psimenos 61cfaa15cd Update UART pin names & add MBED_CONF_TARGET_STDIO_UART overrides 2021-03-23 11:17:17 +00:00
George Psimenos 885cdef5f7 Add standard pin-names validation script & tests 2021-03-18 17:01:53 +00:00
Martin Kojtal 306172570a
Merge pull request #14379 from OpenNuvoton/nvt_high_res_pwm
Nuvoton: Enlarge NuMaker PWM duty cycle range
2021-03-11 17:12:25 +00:00
cyliangtw 5b693ff3b3 To keep proprietary BSP DutyCycle definition and rename HighDutyCycle in extend API 2021-03-10 11:53:55 +08:00
Harrison Mutai 46fb822d02 Remove uARM dependencies from Nuvoton targets 2021-03-05 14:48:17 +00:00
cyliangtw abdcc7b831 Support M480 PWM duty cycle range as 0 ~ 10000 2021-03-04 17:10:04 +08:00
Martin Kojtal 3bb8de6ea3
Merge pull request #14308 from hugueskamba/hk_cmake_create_flash_cmsis_algo
Create FLASH CMSIS ALGO target to remove dependency on MBED_TARGET_LABELS
2021-02-22 14:36:44 +00:00
Hugues Kamba 7d49d4bce1 Create FLASH CMSIS ALGO target to remove dependency on MBED_TARGET_LABELS
This goes towards eventually removing reliance on targets.json to specify
the requirements of Mbed targets.
2021-02-19 16:56:37 +00:00
Hugues Kamba a3a36ccb92 CMake: Fix some NUVOTON build
Correct source file listings for M251, M261.
Also remove unused input source files.
2021-02-19 16:48:32 +00:00
Hugues Kamba 2a6a840903 CMake: Refactor Nuvoton targets
Refactor all Nuvoton targets to be CMake buildsystem targets. This removes
the need for checking MBED_TARGET_LABELS repeatedly and allows us to be
more flexible in the way we include MBED_TARGET source in the build.

A side effect of this is it will allow us to support custom targets
without breaking the build for 'standard' targets, as we use CMake's
standard mechanism for adding build rules to the build system, rather
than implementing our own layer of logic to exclude files not needed for
the target being built. Using this approach, if an MBED_TARGET is not
linked to using `target_link_libraries` its source files will not be
added to the build. This means custom target source can be added to the
user's application CMakeLists.txt without polluting the build system
when trying to compile for a standard MBED_TARGET.
2021-02-12 19:09:11 +00:00
Chun-Chieh Li 68df919e3f Nuvoton: Remove DISABLE/ENABLE macro definitions in BSP
These are not used on Mbed OS. Remove them to avoid name conflict with other modules.
2020-12-09 14:27:23 +08:00
Martin Kojtal 28eeee2b4c
Merge pull request #13922 from 0xc0170/cmake-nuvoton
CMake: add nuvoton targets
2020-11-27 11:02:53 +00:00
Martin Kojtal 0efffa3411 CMake nuvoton: fix ARMClang linker script command 2020-11-25 13:18:15 +00:00
Martin Kojtal 02c35fdd48 CMake: add nuvoton targets 2020-11-18 15:18:18 +00:00
pea-pod 507181d262 Change MBED_STATIC_ASSERTs version for built-in 2020-10-27 08:30:40 -05:00
cyliangtw ffee35a5c8 Fix NuMaker I2C timeout,
some H/W timer count is 24 bits only, hardcode 0xffffffff causing
  wrong judgement of timeout as while H/W timer counting overflow.
2020-09-29 21:01:18 +08:00
Martin Kojtal 468372e759
Merge pull request #13492 from talorion/fix-PwmOut-resets-after-suspend
Fix pwm out resets after suspend
2020-09-10 12:40:18 +01:00
Jaeden Amero 612b148fd4 stack: armc: Workaround config passing bug
Workaround a bug where the boot stack size configuration option is not
passed on to armlink, the Arm Compiler's linker. Prefer
MBED_CONF_TARGET_BOOT_STACK_SIZE if present, as this is what the
configuration system should provide. Fall back to MBED_BOOT_STACK_SIZE
if MBED_CONF_TARGET_BOOT_STACK_SIZE is not defined, as in the case of
buggy tools. If both MBED_CONF_TARGET_BOOT_STACK_SIZE and
MBED_BOOT_STACK_SIZE are not defined, then we fall back to a hard-coded
value provided by the linkerscript. See
https://github.com/ARMmbed/mbed-os/issues/13474 for more information.
2020-09-10 10:08:38 +01:00
Jaeden Amero 39e69d328d Use boot stack size from config system
To allow overriding of the boot stack size from the Mbed configuration
system, consistently use MBED_CONF_TARGET_BOOT_STACK_SIZE rather than
MBED_BOOT_STACK_SIZE.

Fixes #10319
2020-09-10 10:08:38 +01:00
Chun-Chieh Li ce63a17212 Nuvoton: Fix degrading QSPI to SPI
In most cases, we can control degraded QSPI H/W to standard through BSP SPI driver directly as if it is just SPI H/W.
However, BSP SPI driver distinguishes among SPI H/W instances in below functions:
-   SPI_Open
-   SPI_Close
-   SPI_SetBusClock
-   SPI_GetBusClock
In these cases, we must change to QSPI version instead for QSPI H/W.

Change target:
-   NUMAKER_PFM_M487
-   NUMAKER_IOT_M487
-   NU_PFM_M2351*
2020-09-03 10:25:08 +08:00
talorion b03d80fd08 pwmout - fixed compile errors 2020-09-02 13:39:17 +02:00
talorion 05128898a5 pwmout - M480 - add read methods for period and pulsewidth 2020-09-02 13:39:13 +02:00
Martin Kojtal 8a254a9cc6
Merge pull request #12923 from OpenNuvoton/nuvoton_watchdog_lxt
Nuvoton: Refine more on watchdog HAL
2020-05-12 14:31:26 +02:00
Chun-Chieh Li 9e9e2f18de Nuvoton: Change WDT clock source to LXT
LIRC has 40%~50% error rate, so change WDT clock source to LXT from LIRC.

NOTE: NANO100 series just supports LIRC-clocked WDT.
2020-05-05 17:50:20 +08:00
Chun-Chieh Li f6485cf92f Nuvoton: Fix failure to change WDT clock source
WDT clock source selection and its enablement bits are protected. Add unlock sequence before write to them.
2020-05-05 17:50:15 +08:00
Chun-Chieh Li d121ea89d1 Nuvoton: Fix WDT feature report with clock frequency 2020-05-05 17:50:10 +08:00
Chun-Chieh Li d823756cb7 Nuvoton: Enlarge WDT reset delay to avoid premature WDT reset
Consider the following factors to define WDT reset delay:
1. Cannot be too small. This is to avoid premature WDT reset in pieces of timeout cascading.
2. Cannot be too large. This is to pass Greentea reset_reason/watchdog_reset tests, which have e.g. 50~100 reset delay tolerance.
2020-05-05 17:50:05 +08:00
Chun-Chieh Li 73824f0c4d Nuvoton: Fix watchdog reset failure on meeting Hard Fault
Original implementation doesn't enable watchdog reset in pieces of cascaded timeout, except the last one. This is to guarantee re-configuration can be in time, but in interrupt disabled scenario e.g. Hard Fault, watchdog reset can cease to be effective.

This change enables watchdog reset all the way of cascaded timeout. With trade-off, guaranteed watchdog reset function is more significant than re-configuration in time.
2020-04-30 14:22:30 +08:00
Chun-Chieh Li 2c9ec8f19d M487: Add SPDX license identifier for BSP files 2020-04-01 13:55:46 +08:00
Chun-Chieh Li d709c775b4 M487: Add SPDX license identifier 2020-04-01 13:55:45 +08:00
Chun-Chieh Li 3b9492fdbc M487: Update BSP
Relevant modifications:
1. Support degrading QSPI0/1 to SPI4/5 for normal SPI transfer
2. Fix with BSP crypto driver API change
3. Fix with BSP PDMA driver API change
4. Make necessary modifications to pass FPGA CI Test Shield tests
5. Don't distinguish pinmap among parts e.g. M480 LG. Application users must take care.
2020-04-01 13:55:12 +08:00