He revisado la hoja de datos HopeRF95W un par de veces; Algunas partes menos y otras partes.
El Extracción de datos de carga útil de FIFO en la página 36 es realmente muy claro y conciso.
Una vez que FifoPtrAddr se configura para que finalice el segmento escrito en el búfer (utilizando FifoRxCurrentAddr ), verificamos el número de bytes (NB) recibidos, recorramos ese número y leemos el RegFifo; que es un registro de 8 bits, que NB de bytes veces.
Este github implementación sigue esto también:
uint8_t currentAddr = ReadRegister(REG_FIFO_RX_CURRENT_ADDR);
uint8_t receivedCount = ReadRegister(REG_RX_NB_BYTES);
*p_length = receivedCount;
WriteRegister(REG_FIFO_ADDR_PTR, currentAddr);
for(int i = 0; i < receivedCount; i++) {
payload[i] = ReadRegister(REG_FIFO);
}
Todo claro y fácil de entender. Solo tengo curiosidad por saber cómo el SX1276 knows
carga los próximos 8 bits del FIFO en el RegFifo
simplemente haciendo un bucle a través de él.
¿Es una de esas cosas donde una lectura desencadena algún evento / mecanismo interno en el chip?
Mi falta de comprensión aquí es probablemente solo falta de experiencia, ya que mi entrenamiento y experiencia están en python.
También tengo curiosidad por saber si este procedimiento de extracción de carga útil es la implementación FIFO típica , ¿o son siempre dependientes del chip?