Přeskočit na hlavní obsah

Modul MCAL CRC

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

Modul MCAL CRC (Cyclic Redundancy Check) poskytuje abstrakci pro konfiguraci a použití periferie CRC na mikrokontrolérech STM32.
Tento modul je součástí vrstvy MCAL a zajišťuje jednotné API napříč rodinami STM32.
Jednotlivé rodiny STM32 jsou udržovány v samostatných větvích; přepněte se na správnou větev pro své MCU.


🚀 Vlastnosti​

  • Inicializace a deinicializace periferie CRC
  • Konfigurovatelný polynom a počáteční hodnota
  • Řízení pořadí vstupních/výstupních dat
  • Aktivace/deaktivace periferie
  • Podpora neblokujícího přenosu s přerušeními po dokončení a po polovině přenosu
  • Získání výchozí konfigurace
  • Periodická obslužná funkce (task handler)

Veřejné API​

Informace o modulu​

  • crc_ModuleVersion_t Crc_Get_ModuleVersion ( void );
    Vrací aktuální verzi modulu CRC.

Inicializace​

  • crc_RequestState_t Crc_Init ( crc_Config_t * const crcConfig );
    Inicializuje periferii CRC se zadanou konfigurací.

  • void Crc_Deinit ( void );
    Deinicializuje periferii CRC a resetuje konfiguraci.

  • void Crc_Task ( void );
    Obsluhuje úlohy na pozadí (pokud to implementace vyžaduje).

  • crc_RequestState_t Crc_Get_DefaultConfig ( crc_Config_t * const crcConfig );
    Získá výchozí konfigurační strukturu pro bezpečnou inicializaci.


Řízení periferie​

  • crc_RequestState_t Crc_Set_PeriphActive ( crc_PeriphId_t crcId );
    Aktivuje periferii CRC.

  • crc_RequestState_t Crc_Set_PeriphInactive ( crc_PeriphId_t crcId );
    Deaktivuje periferii CRC.

  • crc_Data_t Crc_Get_Data ( crc_PeriphId_t crcId );
    Přečte poslední vypočtený výsledek CRC.


Konfigurace​

  • 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í nebo načte pořadí výstupních dat.

  • 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í nebo načte pořadí vstupních dat.

  • 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í nebo načte polynom 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í nebo načte počáteční hodnotu CRC.


Podpora neblokujícího přenosu​

  • 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 );
    Řídí nebo kontroluje stav dokončení přenosu.

  • 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í nebo načte callback ISR pro dokončení přenosu.

  • 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 );
    Řídí nebo kontroluje stav poloviny přenosu.

  • 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í nebo načte callback ISR pro polovinu přenosu.


Poznámky k použití​

  • Před voláním ostatních funkcí vždy modul inicializujte pomocí Crc_Init.
  • API pro výchozí konfiguraci poskytuje bezpečný výchozí bod.
  • Neblokující režim umožňuje zpracovávat operace CRC asynchronně pomocí callbacků ISR.
  • Polynom a pořadí vstupu/výstupu je nutné nakonfigurovat podle formátu dat očekávaného v aplikaci.

🛠 Integrace s CMake​

Přidejte toto do souboru CMakeLists.txt svého modulu:

target_link_libraries(User_Lib PRIVATE Crc_Lib)

Licence​

Tento projekt je licencován pod licencí Creative Commons Uveďte původ–Neužívejte komerčně 4.0 Mezinárodní (CC BY-NC 4.0).

Toto dílo můžete volně používat, upravovat a sdílet pro nekomerční účely za předpokladu, že uvedete odpovídající autorství.

Úplné podmínky najdete v LICENSE.md nebo navštivte creativecommons.org/licenses/by-nc/4.0.


Autoři​

Příspěvky jsou vítány! Otevřete prosím pull request.