Skip to content
Snippets Groups Projects
Select Git revision
  • clang
  • main default protected
  • aspis-dev
  • clang-support-dev
  • hil-upd
  • vn300
  • sx1278
  • lps28dfw
  • lsm6dsrx
  • ads131m08
  • build-system
  • Lis3mdl-bugfix
  • lps22df-dev
  • vl53l7cxa-dev
  • stepper-logging-upd
  • tfmicro-dev
  • vn100-upd
  • timed-wait2
  • timed-wait
  • vcm
  • PYXIS_ROCCARASO
  • PYXIS_EUROC
  • lynx-euroc
  • hermes-v1.0
  • hermes-flight-1
25 results

boardcore.cmake

Forked from Avionics / Software Development / Skyward Boardcore
Source project has a limited visibility.
  • Emilio Corigliano's avatar
    187441af
    [I2C] Created new low-level (for stm32f4) and high-level I2C drivers · 187441af
    Emilio Corigliano authored
    Low-level driver features (specific for the stm32f4 family):
    - 7-bit (tested) and 10-bit (not tested yet) addressing;
    - Speed modes: Standard (100kHz clock) and Fast (400kHz clock);
    - Compatibility with all I2C peripherals till I2C4 (easy to extend to additional ones);
    - Internal configuration of the pins in order to avoid forgetting to set them to ALTERNATE_OD mode (so, avoiding possibility of short-circuits between master and slave);
    - The configurations of the slave (slave address, addressing mode and speed mode) we want to communicate with are setted before each read/write on the bus;
    - Support for the reStart condition when wanting to write and then read from the same slave;
    - Usage of interrupts when possible; In two cases we need polling anyway (limited to a parameter to avoid infinite polling): 
        . I2C_SR2_BUSY doesn't generate an interrupt and we can't communicate with the bus in BUSY state. 
        . I2C_SR1_SB do generate an interrupt, but its handling is a bit tricky since other interrupts are generated in the case of a reStart condition; also, using the interrupt for this, there would be the risk of a deadlock.
    - Resilience to bus deadlocks;
    
    High-level driver features:
    - Resilience to bus deadlocks embedded before any operation on the bus;
    - Implementation of higher level methods for using the bus;
    - Possibility to have a synchronized version of the driver;
    187441af
    History
    [I2C] Created new low-level (for stm32f4) and high-level I2C drivers
    Emilio Corigliano authored
    Low-level driver features (specific for the stm32f4 family):
    - 7-bit (tested) and 10-bit (not tested yet) addressing;
    - Speed modes: Standard (100kHz clock) and Fast (400kHz clock);
    - Compatibility with all I2C peripherals till I2C4 (easy to extend to additional ones);
    - Internal configuration of the pins in order to avoid forgetting to set them to ALTERNATE_OD mode (so, avoiding possibility of short-circuits between master and slave);
    - The configurations of the slave (slave address, addressing mode and speed mode) we want to communicate with are setted before each read/write on the bus;
    - Support for the reStart condition when wanting to write and then read from the same slave;
    - Usage of interrupts when possible; In two cases we need polling anyway (limited to a parameter to avoid infinite polling): 
        . I2C_SR2_BUSY doesn't generate an interrupt and we can't communicate with the bus in BUSY state. 
        . I2C_SR1_SB do generate an interrupt, but its handling is a bit tricky since other interrupts are generated in the case of a reStart condition; also, using the interrupt for this, there would be the risk of a deadlock.
    - Resilience to bus deadlocks;
    
    High-level driver features:
    - Resilience to bus deadlocks embedded before any operation on the bus;
    - Implementation of higher level methods for using the bus;
    - Possibility to have a synchronized version of the driver;