-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[STM32F4] Add asynchronous I2C #2622
Conversation
@egostm needs a rebase |
3d00b36
to
e73930f
Compare
uint32_t slave; | ||
#if DEVICE_I2C_ASYNCH | ||
uint32_t event; | ||
uint32_t address; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would we consider lower types for some members of this struct? address could be 16bit at most? stop could be 8bit, etc?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed Martin, there is romm for improvment here.
Thought, "address" is given as uint32_t in I2C API, so it might safer to keep it as uint32_t in i2c_s struct. But we can fix some others.
e73930f
to
766f75f
Compare
/morph test |
@0xc0170 We currently don't have a way in the tests to specify a hardware dependency. All tests are assumed to not have external dependencies (with the exception of IPV4 tests at the moment). This is something @mazimkhan and I need to have a think on. |
Result: SUCCESSYour command has finished executing! Here's what you wrote!
Outputmbed Build Number: 863 All builds and test passed! |
@mbed-bot: TEST HOST_OSES=ALL |
[Build 932] |
@0xc0170 can you show what didn't work ? |
@egostm The failure should be fixed now that #2682 is merged |
@egostm can you rebase and resolve the conflict? |
766f75f
to
21ba81d
Compare
@sg, rebase done. |
Something happened :) @egostm can you rebase and resolve the conflict? |
Dev Asynch I2c One limitation linked to HAL bug: Master RX(Repeated Start) KO
Add single board I2C master/slave asynch test
As per reference manual, closing communication for master receiver with repeated start requires, after reading second last data byte (after second last RxNE event): -Clearing ACK bit (same as non repeated start case) -Set START bit (instead of STOP bit in non repeated start case) This is valid for I2C_FIRST_FRAME and I2C_NEXT_FRAME conditions
…11RE i2c_byte_write could be used to send byte and address. In case used for address, ADDR Flag should be reset.
Move i2c_s to common_objects.h Introduce I2C Master/Slave asynch test Test I2C asynch master/slave on STM32F4 boards
21ba81d
to
22d6bc0
Compare
@sg: rebase done (for the last time, hopefully) |
Ports for Upcoming Targets 2669: Added u-blox C029 target ARMmbed/mbed-os#2669 2707: [EFM32] Add IAR support for remaining Silicon Labs targets ARMmbed/mbed-os#2707 2819: MultiTech xDot platform support - 09.26.2016 ARMmbed/mbed-os#2819 2827: include MultiTech xDot in mbed 5 releases ARMmbed/mbed-os#2827 Fixes and Changes 2522: Add CThunk for CM7 ARMmbed/mbed-os#2522 2518: Enable uvisor on Beetle ARMmbed/mbed-os#2518 2571: STM32F7 - Add asynchronous serial ARMmbed/mbed-os#2571 2616: STM32F3xx - Add Serial Flow Control pins + enable it ARMmbed/mbed-os#2616 2619: NUCLEO_L152RE - Add Serial Flow Control ARMmbed/mbed-os#2619 2620: NUCLEO_F429ZI - Add SERIAL_FC macro ARMmbed/mbed-os#2620 2666: [EFM32] Microsecond ticker optimization ARMmbed/mbed-os#2666 2681: STM32F0xx - Add support of ADC internal channels ARMmbed/mbed-os#2681 2687: [NRF5] Add fs_data symbol in data secton for gcc ARMmbed/mbed-os#2687 2696: Add device_has to all nrf51 devices ARMmbed/mbed-os#2696 2703: TARGET_NRF5: Changed 'serial_baud' implementation to support special baud rates. ARMmbed/mbed-os#2703 2704: DISCO_L476VG: add SPI nicknames ARMmbed/mbed-os#2704 2723: KSDK serial_api.c: Fix assertion error for ParityEven ARMmbed/mbed-os#2723 2463: [STM32L0] Add asynchronous serial ARMmbed/mbed-os#2463 2572: Fix STM32F407VG target name and LPC11U6X linker errors ARMmbed/mbed-os#2572 2698: DELTA_DFBM_NQ620 target ARMmbed/mbed-os#2698 2542: Dev spi asynch stm32f4 ARMmbed/mbed-os#2542 2650: STM32F3 - Add low power timer ARMmbed/mbed-os#2650 2415: [STM32F0] Add asynchronous serial ARMmbed/mbed-os#2415 2585: Added support for ADC only pins in LPC43xx ARMmbed/mbed-os#2585 2622: [STM32F4] Add asynchronous I2C ARMmbed/mbed-os#2622 2719: Updated ARM linker scripts for Kinetis platforms that use SDK 2.0 ARMmbed/mbed-os#2719 2728: Added ethernet and enabled IPV4 feature for the EVK-ODIN-W2/C029 target ARMmbed/mbed-os#2728 2747: [LPC11U68] Fix pin interrupt select offset ARMmbed/mbed-os#2747 2751: STM32L0xx - Add Serial Flow Control ARMmbed/mbed-os#2751 2753: [NUCLEO_F767ZI] Add CAN capability ARMmbed/mbed-os#2753 2759: STM32F0 - Add low power timer ARMmbed/mbed-os#2759 2763: STM32L1 - Add low power timer ARMmbed/mbed-os#2763 2764: STM32L4 - Add low power timer ARMmbed/mbed-os#2764 2771: STM32L4 - Update deepsleep implementation ARMmbed/mbed-os#2771 2775: Update KSDK SDHC driver for K64F & K66F ARMmbed/mbed-os#2775 2792: [NUCLEO_F303ZE] MBED-OS5 capability ARMmbed/mbed-os#2792 2762: STM32L0 - Add low power timer ARMmbed/mbed-os#2762 2761: STM32F7 - Add low power timer ARMmbed/mbed-os#2761
Add asynch I2C to STM32F4xx familly.
Enabled and tested on following targets:
*NUCLEO_F401RE
*NUCLEO_F410RB
*NUCLEO_F411RE
*NUCLEO_F429ZI
*NUCLEO_F446RE
*NUCLEO_F446ZE
*DISCO_F429ZI
*DISCO_F469NI
Struct i2c_s moved to common_object.h
Includes HAL fix to unlock specific use case (Master RX with repeated start).
Added MBED_A29 test for one board testing (master/slave on single target) of I2C asynch API.
Test_report