XMC-for-Arduino 4.0.0
This is a major release with significant changes including migration to the new Arduino Core API, board naming convention updates, and the removal of legacy boards.
⚠️ Breaking Changes
Arduino Core API Migration
- Migrated to the new Arduino Core API: The entire core has been refactored to use the official ArduinoCore-API. This brings better compatibility across different Arduino cores and with modern Arduino libraries but may require code adjustments for existing projects.
Board and Vendor Naming Convention Changes
- Index file renamed from
package_infineon_index.jsontopackage_xmc_index.json, please update the URL in the Arduino preferences, instructions here. - Vendor name changed from
Infineontoinfineon(lowercase) in package and platform files to be consistent with naming conventions across our Arduino cores and to avoid issues with Windows-based systems (case insensitivity). - Board names have been standardized to follow the official kit naming convention:
XMC1100_Boot_Kit→KIT_XMC11_BOOT_001XMC1100_XMC2GO→KIT_XMC_2GO_XMC1100_V1XMC1300_Boot_Kit→KIT_XMC13_BOOT_001XMC1400_Kit_for_Arduino→KIT_XMC1400_ARDUINOXMC1400_XMC2GO→KIT_XMC14_2GOXMC4700_Relax_Kit→KIT_XMC47_RELAX
- Old board variant macros are preserved for backwards compatibility via
build.board_variant_oldin boards.txt.
Wire/I2C Library Changes
- The Wire library has been completely refactored to inherit from
HardwareI2C. - Ring buffer implementation added for I2C communication.
- Error handling has been improved with proper return codes.
SPI Library Changes
- SPI library refactored with updated transfer function logic.
- Changes to SPI pin configurations across all variants.
🗑️ Removed Boards
The following boards have been removed from V4.0.0 and are only supported up to V3.x:
| Board | Product Link |
|---|---|
| KIT_XMC_PLT2GO_XMC4200 | Product Page |
| KIT_XMC_PLT2GO_XMC4400 | Product Page |
✨ Added Features
Core Functions
setAnalogWriteFrequency()function: New function to configure PWM frequency dynamically.random()implementation: Added proper random number generation implementation.pulseIn()improvements: Updated pulse measurement implementation usingmillis().shiftIn()/shiftOut()implementation: Added shift register functions.sbrk()function declaration: Added for proper memory allocation support.
Debugging
- Cortex Debugger Integration: Added support for Cortex debugging with automatic
launch.jsongeneration. - Generic
gen_launch.shscript: Tool to configure build ELF and JSON paths for debugging.
Tone Function
- Reworked Tone implementation with proper CCU timer handling.
- Support for multiple tone pins (configurable via
NUM_TONE_PINS). - Frequency range: 1 Hz to 500 Hz (software-derived from Systick).
Testing Infrastructure
- Added comprehensive Hardware-in-the-Loop (HIL) test integration.
- Arduino Core Tests added as submodule for standardized testing.
- Unity test framework integration for all boards.
🗑️ Removed Features
- OneWire library removed from built-in libraries: Now available as external submodule.
- XMC1100 H-Bridge 2GO support removed from documentation.
🐛 Bugfixes
- I2C scan bug fixed: Corrected issue in Wire library affecting device scanning.
- Digital I/O fixes: Removed invalid pin condition checks, added flag for current pin status.
- Tone function
noTone()fix: Corrected the noTone function implementation. - Platform.txt typo fix: Fixed critical typo/bug in platform configuration.
- XMC1400 Arduino pinout fixes: Updated pin configurations for correct operation.
- Higher frequency PWM fix for XMC1400: Resolved issue with PWM at higher frequencies.
- Interrupt handler fixes: Corrected interrupt code for invalid pin/mode handling.
- Fixed incompatibility with arm_math.h: Modified analog macros to avoid naming conflict.
🔧 Improvements
Documentation
- Added installation reference documentation.
- Updated Arduino deviations documentation with Tone frequency details.
- Added known issues documentation for XMC1300 Boot Kit.
- Improved documentation for analog macros and built-in libraries.
Flasher Tool
- Updated
xmc-flasher.pywith improved firmware flag handling. - Added custom flag to disable J-Link auto-update.
- Better logging and error messages.
DevOps & CI/CD
- Migrated to reusable GitHub workflows.
- Added compile checks for all library examples.
- Pre-commit hooks enabled for code quality.
- Added CODEOWNERS file for better code review management.
Pin Configurations
- Updated XMC1400 Arduino pinout diagram.
- Improved pin configurations for all supported boards.
- Added CCU8V3 macro support for XMC1400 variants.
📦 Supported Boards in V4.0.0
| Board Name | Description |
|---|---|
KIT_XMC11_BOOT_001 |
XMC1100 Boot Kit |
KIT_XMC_2GO_XMC1100_V1 |
XMC1100 2Go Kit |
KIT_XMC13_BOOT_001 |
XMC1300 Boot Kit |
KIT_XMC1400_ARDUINO |
XMC1400 Kit for Arduino |
KIT_XMC14_2GO |
XMC1400 2Go Kit |
KIT_XMC47_RELAX |
XMC4700 Relax Kit |
Contributors
Full Changelog: V3.5.2...4.0.0