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
- Mr.Nobody — embedbits.com
Příspěvky jsou vítány! Otevřete prosím pull request.