Git Product home page Git Product logo

nrf-hal's Introduction

nrf-hal

HAL for the nRF51, nRF52 and nRF91 families of microcontrollers

CI

Please refer to the changelog to see what changed in the last releases.

Crates

Every nRF chip has its own crate, listed below:

Crate Docs crates.io target
nrf51-hal docs.rs crates.io thumbv6m-none-eabi
nrf52810-hal docs.rs crates.io thumbv7em-none-eabi
nrf52811-hal docs.rs crates.io thumbv7em-none-eabi
nrf52832-hal docs.rs crates.io thumbv7em-none-eabihf
nrf52833-hal docs.rs crates.io thumbv7em-none-eabihf
nrf52840-hal docs.rs crates.io thumbv7em-none-eabihf
nrf9160-hal docs.rs crates.io thumbv8m.main-none-eabihf

Device Reference Manuals from Nordic

Device Product Specification DK Reference Guide
nRF52810 v1.3 v1.3.1*
nRF52811 v1.0 v1.3.1*
nRF52832 v1.4 v1.3.1*
nRF52833 v1.3 v1.0.1
nRF52840 v1.1 v1.2
nRF9160 v2.0 v0.9.3

* These devices do not have a separate development kit and share the NRF52 DK

Development

Be sure to copy and edit the Cargo.example.toml file to Cargo.toml. The file will require editing dependent on the target you wish to work with and contains some further instructions. Similarly, check out the .vscode/settings.json file when used in the context of Visual Studio Code. By default, all of these files are configured to work with the nRF52840 target.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Summary of the Examples

Here follows a brief description of each demo for quick reference. For a more in-depth explanation on how the peripherals work please refer to the device reference manuals linked above, the readme for each demo and the comments in the demo code itself.

Demo Category Description
blinky-button-demo Hello World Blinky button demo
ccm-demo Encryption Cipher block chaining - message authentication code (CCM) mode demo
comp-demo Analog Pins Voltage comparator peripheral demo
ecb-demo Encryption AES electronic codebook mode encryption demo
gpiote-demo Digital Pins General-Purpose Input Output Tasks and Events module demo
i2s-controller-demo Audio Inter-IC Sound interface "controller mode (aka master mode)" demo
i2s-peripheral-demo Audio Inter-IC Sound interface "peripheral mode (aka slave mode)" demo
lpcomp-demo Analog Pins Low power voltage comparator demo
ppi-demo Channels Programmable peripheral interconnect (PPI) demo
pwm-demo Digital Pins Pulse width modulation demo
qdec-demo Sensor Decoding Quadrature sensor decoder (QDEC) demo
rtic-demo Framework The Real-Time Interrupt-driven Concurrency framework demo
spi-demo Digital Pins Serial peripheral interface master (SPIM) with EasyDMA demo
spis-demo Digital Pins Serial peripheral interface slave (SPIS) demo
twi-ssd1306 Digital Pins I2C compatible Two-Wire Interface with the SSD1306 OLED Display demo
twim-demo Digital Pins I2C compatible Two-Wire Interface Master mode demo
twis-demo Digital Pins I2C compatible Two-Wire Interface Slave mode demo
wdt-demo Timer Watchdog timer demo

Running the Examples

Each demo readme should contain instructions on how to run it. However, the information below describes the technologies used and can be used to troubleshoot your system setup. Run the demos from within their respective project directories. E.g. to run ccm-demo, you must be in the nrf-hal/examples/ccm-demo/ directory.

Since the demos are stand-alone projects you would NOT typically run them with cargo run --example xyz-demo like some cargo projects are configured to do.

Once Off System Setup

Install the cross compilation toolchain to target your device. You would typically pass the target as a parameter to cargo or explicitly set it in your cargo config file. If you get compilation errors about eh_personality then you have not set the target correctly. Here is an example of the target for a nRF52840 chip:

$ rustup target add thumbv7em-none-eabihf

Install the tools to flash the device.

$ cargo install cargo-embed

For Every Project (optional)

Setup the Cargo.toml file to use the correct features. Features allow for conditional compilation which is essential for a library like this that supports multiple different devices. Under the [features] section add the following line default = ["52840"] for the nRF52840-DK device or whatever other feature is applicable for your device. This is optional but it will allow you to simply call cargo run and cargo build instead of cargo run --features 52840 and cargo build --features 52840 respectively. Note that some demo projects do not have features so this step may not be necessary. If you get a whole bunch of compilation errors or plugins like rust-analyzer are not working then check that you have set the chip features correctly.

nrf-hal's People

Contributors

almindor avatar andresovela avatar bjc avatar blueluna avatar bors[bot] avatar careyk007 avatar diondokter avatar dirbaio avatar disasm avatar fmckeogh avatar hannes-hochreiner avatar hannobraun avatar huntc avatar istar-eldritch avatar jackscan avatar jamesmunns avatar japaric avatar jonas-schievink avatar jscarrottberan avatar kalkyl avatar lulf avatar macthestack avatar mariusknaust avatar simonsso avatar thalesfragoso avatar thejpster avatar therealprof avatar timokroeger avatar wez avatar yatekii avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.