I am trying to understand how the USB module works in the very low level on STM32F4 MCUs (ARM Cortex-M4 core). In the reference manual I read often the terms Periodic and Non-Periodic Rx/Tx FIFO (I am not sure if there is periodic and non-periodic RxFIFO), for example:
Periodic TxFIFO empty interrupt mask
Nonperiodic TxFIFO empty interrupt mask
Receive FIFO nonempty interrupt mask
I do not understand what does periodic and non-periodic Tx/Rx FIFO mean (I do know what a FIFO is), I found no really helpful online resources about this. Could someone explain these terms to me please? and are these terms only specific to Tx but not Rx FIFOs?
Best Answer
The reference manual where you found these terms mentioned itself explains that the two types of FIFOs are used for different types of USB transfers, for example in section 34.12.2
Realistically you probably should not be looking at the hardware engine in this level of detail unless you have substantial USB expertise; for any normal use you would let an existing USB stack (from ST or someone else) handle it, and only worry about following the requirements/examples for integration and providing or claiming data with the appropriate APIs. Getting this level of detail would tend to occur only if trying to write your own USB stack or if trying to de behind-the-scenes debugging of an unexpected incompatibility.