Este paquete propone una implementación en C del controlador para el componente de radio LR11XX .
El controlador se divide en varios componentes:
Este componente se utiliza para actualizar el firmware.
Este componente se utiliza para leer / escribir datos desde registros o memoria interna.
Este componente se utiliza para interactuar con parámetros de todo el sistema como fuentes de reloj, interruptores de RF integrados, etc.
Este componente se utiliza para enviar / recibir datos a través de los diferentes módems (LORA y GFSK) o realizar un Lora CAD (detección de actividad del canal). Los parámetros, como la selección del amplificador de potencia, la potencia de salida y los modos de retroceso, también se pueden acceder a través de este componente.
Esto también expone características para Sigfox. La compatibilidad con Bluetooth®-Low-Energy-Beaconing también se proporciona en este componente para LR1110/LR1120.
Este componente proporciona funciones relacionadas con LR-FHSS.
Este componente se utiliza para configurar e iniciar el escaneo pasivo de las señales Wi-Fi que se pueden compartir para solicitar una geolocalización.
Este componente se utiliza para configurar e iniciar la adquisición de señales GNSS que se pueden compartir para solicitar una geolocalización.
Este componente se utiliza para establecer y derivar claves en el llavero interno y realizar operaciones criptográficas con el acelerador de hardware integrado.
Este componente se utiliza para configurar y operar la función Lora Round-Trip Time of Flight (RTTOF) del dispositivo.
Cada componente se basa en diferentes archivos:
El HAL (capa de abstracción de hardware) es una colección de funciones que el usuario implementará para escribir llamadas dependientes de la plataforma al host. La lista de funciones es la siguiente:
Cuando el chip se despierta del modo de suspensión con retención, un parámetro no se reconfigura correctamente. Esta configuración errónea puede conducir a una potencia de canal adyacente inesperadamente alta en todas las transmisiones posteriores.
El problema aparece solo en la modulación de Lora, para todos los anchos de banda, excepto 500kHz y 800kHz.
Las siguientes versiones de firmware se ven afectadas:
La solución es restablecer el bit 30 en el registro 0x00F30054 cuando el chip se despierta del modo de suspensión con retención.
Esta solución no resuelve el caso en el que LR11XX_RADIO_MODE_SLEEP se configura con lr11xx_radio_auto_tx_rx y el chip se establece en modo RX. Esto es cuotas al hecho de que la solución no se puede aplicar antes de la transmisión posterior, lanzada automáticamente por el chip después de despertar del modo de suspensión con retención.
La primera implementación, habilitada de forma predeterminada en el controlador, agrega una llamada implícita que actualiza el parámetro a cada función que podría establecer el chip en transmisión, directamente o no,:::
lr11xx_radio_set_tx_with_timeout_in_rtc_steplr11xx_radio_set_tx_infinite_preamblelr11xx_radio_set_rx_with_timeout_in_rtc_step - En caso de lr11xx_radio_auto_tx_rx se ha habilitadolr11xx_radio_set_cad - En caso de LR11XX_RADIO_CAD_EXIT_MODE_TX se ha establecido con lr11xx_radio_set_cad_params Esta implementación se puede deshabilitar definiendo la macro LR11XX_DISABLE_HIGH_ACP_WORKAROUND . Esta discapacidad será útil cuando, en el futuro, se lance un nuevo firmware que integra una solución y ya no requiere la solución.
La principal ventaja de esta implementación es que es transparente para el usuario que solo necesita actualizar el controlador sin cambiar su aplicación. El principal inconveniente es que la llamada implícita se realiza sistemáticamente incluso cuando no es necesario.
El segundo método requiere que el usuario llame explícitamente la función lr11xx_radio_apply_high_acp_workaround cuando el chip se despierta del modo de suspensión con retención (Nota: Para aliviar la implementación, se puede llamar cuando el chip se despierta desde cualquier modo de suspensión).
Este método requiere que la macro LR11XX_DISABLE_HIGH_ACP_WORKAROUND se define para que la implementación 1 de la solución alternativa (habilitada por defecto) esté deshabilitada.
Las siguientes versiones de firmware se ven afectadas:
Cuando el chip finaliza una recepción en la banda de 2.4 GHz, un parámetro no se reconfigura correctamente. Esta configuración errónea evitará que una exploración GNSS posterior funcione correctamente.
Es importante tener en cuenta que si el chip ingresa uno de los siguientes estados entre la recepción en la banda de 2.4GHz y el escaneo GNSS, el parámetro se reconfigura correctamente y la limitación no aparece:
La solución es establecer el bit 4 en el registro 0x00F30024 cuando el chip finaliza una recepción en la banda de 2.4GHz antes de lanzar un escaneo GNSS.
Esta solución no es necesaria cuando se usa ninguna versión de firmware LR1110. Sin embargo, no evita que un LR1110 funcione correctamente si la solución no está desactivada.
La primera implementación, habilitada de forma predeterminada en el controlador, agrega una llamada implícita que actualiza el parámetro a cada función que podría establecer el chip en modo de escaneo GNSS:
lr11xx_gnss_scan Esta implementación se puede deshabilitar definiendo la macro LR11XX_DISABLE_MIXER_CFG_WORKAROUND . Esta discapacidad será útil cuando, en el futuro, se lance un nuevo firmware que integra una solución y ya no requiere la solución.
La principal ventaja de esta implementación es que es transparente para el usuario que solo necesita actualizar el controlador sin cambiar su aplicación. El principal inconveniente es que la llamada implícita se realiza sistemáticamente incluso cuando no es necesario.
El segundo método requiere que el usuario llame explícitamente la función lr11xx_gnss_apply_mixer_cfg_workaround cuando el chip finalice una recepción en el 2.4GHz si se planifica un escaneo GNSS, sin pasar por uno de los estados especificados en la descripción de esta limitación.
Este método requiere que la macro LR11XX_DISABLE_MIXER_CFG_WORKAROUND se define para que la implementación 1 de la solución alternativa (habilitada por defecto) esté deshabilitada.