Skip to content

trembel/fh101rf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FH101RF Driver

This repository contains driver for the FH101RF tri-band Wake-Up Radio (433MHz, 868/915MHz, 2.4GHz).

The FH101RF RFicient ® Ultra-low Power Wake-Up Receiver is a tri-band receiver for simultaneous reception of OOK modulated signals in the SRD frequency bands 433 MHz, 868 MHz or 915 MHz, and 2.4 GHz, with a sensitivity of typically -75 dBm. It allows continuous monitoring at microwatt power consumption and responds in milliseconds, enabling 24/7 connectivity and up to 10 years of battery life. The integrated ULP receiver operates without a microcontroller, recognizing two wake-up patterns and a 16-bit ID. It generates a control signal to activate application hardware like an MCU, allowing direct addressing of individual RF modules. Data packets are stored in three built-in FIFO buffers, and data events can trigger an IRQ signal for external circuitry, supporting deep-sleep modes for peripherals. RFicient ® uses binary correlators to detect 31-bit preambles, tolerating bit-error rates up to 16 %. – Frauenhofer IIS

The repository is build on top of the datasheet FH101RF_LZE_Datasheet_Revision_1p3b_A_1 and contains:

The YAML specification of the driver, as used by Reginald to create the struct fields

YAML Transpile Instruction

The yaml file can be automatically parsed using Reginald, based on branch schilkp/rust, commit dc4ff0d.

Rust version

The rust version is built (from within rust/src/) using:

reginald gen -i ../../fh101rf.yaml -o registers.rs rs-structs --enum-derive "Debug" --struct-derive "Debug" --enum-derive "PartialEq" --struct-derive "PartialEq"

C version

The C version is built (from within c/) using:

reginald gen -i ../fh101rf.yaml -o fh101rf_reg.h c-funcpack

Markdown Datasheet

The markdown datasheet is build (from within /) by using:

reginald gen -i ./fh101rf.yaml -o fh101rf_reg.md md-datasheet

Rust driver

The rust driver consists of lib.rs, device.rs, config.rs, error.rs and registers.rs. registers.rs is the only auto-created file using reginald, and contains the register structs as well as pack/unpack functions.

C driver

The C driver consists of fh101rf.c, fh101rf.h and fh101rf_reg.h. fh101rf_reg.h is the only auto-created file using reginald, and contains the register structs as well as pack/unpack functions.

Example projects for C and Rust

The example projects make automatically use of the drivers described above, and can be used as a reference for the implementation. The following pinout holds:

PeripheralFunctionality
SPI1SPI peripheral used for communication
PA5SCK pin used together with SPI1
PA7MOSI pin used together with SPI1
PA6MISO pin used together with SPI1
PC9CS pin used for SPI
PC6RST pin
PC7IRQ pin (GPO1)
GPDMA1_CH0DMA channel for TX on SPI1
GPDMA1_CH1DMA channel for RX on SPI1
  • Note: The C example does not use the MISO pin, but uses the SPI peripheral in Half-Duplex mode
  • Note: The Rust example does use MOSI and MISO pin (SPI in Full-Duplex), thus must be connected as in chapter 6.2 of the datasheet

About

FH101RF Driver

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages