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
- Mr.Nobody — embedbits.com
Príspevky sú vítané! Otvorte prosím pull request.