Preskočiť na hlavný obsah

Modul MCAL CRC

Podporované rodiny STM32: U5
Nepodporované: G4, H5, H7, L4

Modul MCAL CRC (Cyclic Redundancy Check) poskytuje abstrakciu na konfiguráciu a používanie periférie CRC na mikrokontroléroch STM32.
Tento modul je súčasťou vrstvy MCAL a zaisťuje jednotné API naprieč rodinami STM32.
Jednotlivé rodiny STM32 sú udržiavané v samostatných vetvách; prepnite sa na správnu vetvu pre svoje MCU.


🚀 Vlastnosti​

  • Inicializácia a deinicializácia periférie CRC
  • Konfigurovateľný polynóm a počiatočná hodnota
  • Riadenie poradia vstupných/výstupných dát
  • Aktivácia/deaktivácia periférie
  • Podpora neblokujúceho prenosu s prerušeniami pri dokončení a pri polovici prenosu
  • Získanie predvolenej konfigurácie
  • Periodický task handler

Verejné API​

Informácie o module​

  • crc_ModuleVersion_t Crc_Get_ModuleVersion ( void );
    Vráti aktuálnu verziu modulu CRC.

Inicializácia​

  • crc_RequestState_t Crc_Init ( crc_Config_t * const crcConfig );
    Inicializuje perifériu CRC so zadanou konfiguráciou.

  • void Crc_Deinit ( void );
    Deinicializuje perifériu CRC a resetuje konfiguráciu.

  • void Crc_Task ( void );
    Obsluhuje úlohy na pozadí (ak ich implementácia vyžaduje).

  • crc_RequestState_t Crc_Get_DefaultConfig ( crc_Config_t * const crcConfig );
    Získa predvolenú konfiguračnú štruktúru pre bezpečnú inicializáciu.


Riadenie periférie​

  • crc_RequestState_t Crc_Set_PeriphActive ( crc_PeriphId_t crcId );
    Aktivuje perifériu CRC.

  • crc_RequestState_t Crc_Set_PeriphInactive ( crc_PeriphId_t crcId );
    Deaktivuje perifériu CRC.

  • crc_Data_t Crc_Get_Data ( crc_PeriphId_t crcId );
    Prečíta posledný vypočítaný výsledok CRC.


Konfigurácia​

  • crc_RequestState_t Crc_Set_OutputDataOrder ( crc_PeriphId_t crcId, crc_DataOrder_t dataOrder );

  • crc_RequestState_t Crc_Get_OutputDataOrder ( crc_PeriphId_t crcId, crc_DataOrder_t * const dataOrder );
    Nastaví alebo získa poradie výstupných dát.

  • crc_RequestState_t Crc_Set_InputDataOrder ( crc_PeriphId_t crcId, crc_DataOrder_t dataOrder );

  • crc_RequestState_t Crc_Get_InputDataOrder ( crc_PeriphId_t crcId, crc_DataOrder_t * const dataOrder );
    Nastaví alebo získa poradie vstupných dát.

  • crc_RequestState_t Crc_Set_Polynomial ( crc_PeriphId_t crcId, crc_Data_t polynomial, crc_DataSize_t polySize );

  • crc_RequestState_t Crc_Get_Polynomial ( crc_PeriphId_t crcId, crc_Data_t * const polynomial, crc_DataSize_t * const polySize );
    Nastaví alebo získa polynóm CRC.

  • crc_RequestState_t Crc_Set_InitValue ( crc_PeriphId_t crcId, crc_Data_t initValue );

  • crc_RequestState_t Crc_Get_InitValue ( crc_PeriphId_t crcId, crc_Data_t * const initValue );
    Nastaví alebo získa počiatočnú hodnotu CRC.


Podpora neblokujúceho prenosu​

  • crc_RequestState_t Crc_Set_TransferCpltActive ( crc_PeriphId_t crcId );

  • crc_RequestState_t Crc_Set_TransferCpltInactive ( crc_PeriphId_t crcId );

  • crc_RequestState_t Crc_Get_TransferCpltState ( crc_PeriphId_t crcId );
    Riadi alebo kontroluje stav dokončenia prenosu.

  • crc_RequestState_t Crc_Set_TransferCpltIsr ( crc_PeriphId_t crcId, crc_CalcCompleteIsr_t const * const callback );

  • crc_RequestState_t Crc_Get_TransferCpltIsr ( crc_PeriphId_t crcId, crc_CalcCompleteIsr_t const * const callback );
    Nastaví alebo získa callback ISR pre dokončenie prenosu.

  • crc_RequestState_t Crc_Set_HalfTransferActive ( crc_PeriphId_t crcId );

  • crc_RequestState_t Crc_Set_HalfTransferInactive ( crc_PeriphId_t crcId );

  • crc_RequestState_t Crc_Get_HalfTransferState ( crc_PeriphId_t crcId );
    Riadi alebo kontroluje stav polovice prenosu.

  • crc_RequestState_t Crc_Set_HalfTransferIsr ( crc_PeriphId_t crcId, crc_CalcCompleteIsr_t const * const callback );

  • crc_RequestState_t Crc_Get_HalfTransferIsr ( crc_PeriphId_t crcId, crc_CalcCompleteIsr_t const * const callback );
    Nastaví alebo získa callback ISR pre polovicu prenosu.


Poznámky k použitiu​

  • Pred volaním ostatných funkcií vždy inicializujte modul pomocou Crc_Init.
  • API predvolenej konfigurácie poskytuje bezpečný východiskový bod.
  • Neblokujúci režim umožňuje spracovať operácie CRC asynchrónne pomocou callbackov ISR.
  • Polynóm a poradie vstupu/výstupu sa musia nakonfigurovať podľa formátu dát očakávaného v aplikácii.

🛠 Integrácia s CMake​

Pridajte do CMakeLists.txt svojho modulu:

target_link_libraries(User_Lib PRIVATE Crc_Lib)

Licencia​

Tento projekt je licencovaný pod licenciou Creative Commons Attribution–NonCommercial 4.0 International (CC BY-NC 4.0).

Toto dielo môžete slobodne používať, upravovať a zdieľať na nekomerčné účely, pokiaľ uvediete primeraný zdroj.

Úplné znenie podmienok nájdete v LICENSE.md alebo na creativecommons.org/licenses/by-nc/4.0.


Autori​

Príspevky sú vítané! Otvorte prosím pull request.