From 65473172adfd1f9d02be15d6093738d1351ed9b6 Mon Sep 17 00:00:00 2001 From: Wolfgang Hoenig Date: Mon, 8 Mar 2021 11:56:52 +0100 Subject: [PATCH] Copy functional uSD deck documentation from wiki to repo documentation. This 1:1 copy will ensure that the history of the documentation is kept. The goal is to delete the functional part of the text in the wiki and refer to the repo instead. Future functional changes, e.g., the new event-trigger-based logging, can than be documented directly with the firmware changes. --- docs/images/usd_log_gap.png | Bin 0 -> 21392 bytes docs/userguides/decks/index.md | 1 + docs/userguides/decks/micro-sd-card-deck.md | 53 ++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 docs/images/usd_log_gap.png create mode 100644 docs/userguides/decks/micro-sd-card-deck.md diff --git a/docs/images/usd_log_gap.png b/docs/images/usd_log_gap.png new file mode 100644 index 0000000000000000000000000000000000000000..f7309490ad5174c50e0caf524aea03652b22ed46 GIT binary patch literal 21392 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%0Dx!wJH37zb$TQI(wj`1G|J|T=6JOv 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 literal 0 HcmV?d00001 diff --git a/docs/userguides/decks/index.md b/docs/userguides/decks/index.md index b227c9b058..da2b657963 100644 --- a/docs/userguides/decks/index.md +++ b/docs/userguides/decks/index.md @@ -6,3 +6,4 @@ page_id: decks-index Crazyflie expansion decks add new sensors and functionality to the Crazyflie. The firmware part of each deck is implemented as a [deck driver](/docs/development/howto.md) and adds functionality spcific to the deck. Read more about the functionality and implementation of each deck in the list below. * [Active Marker deck](/docs/userguides/decks/active-marker-deck.md) +* [Micro-SD card deck](/docs/userguides/decks/micro-sd-card-deck.md) diff --git a/docs/userguides/decks/micro-sd-card-deck.md b/docs/userguides/decks/micro-sd-card-deck.md new file mode 100644 index 0000000000..277d2abce6 --- /dev/null +++ b/docs/userguides/decks/micro-sd-card-deck.md @@ -0,0 +1,53 @@ +--- +title: Micro-SD card deck +page_id: micro-sd-card-deck +--- + +The microSD card deck allows to attach a micro SD card to the Crazyflie for reading and writing files. The default firmware additionally supports to use the uSD card for high-speed logging of [logging variables](/docs/userguides/logparam.md) at rates up to 1 kHz. + +## Hardware + +The specification of the deck can be found in the [wiki](https://wiki.bitcraze.io/projects:crazyflie2:expansionboards:microsd). + +## Filesystem + +We use [FatFS](http://elm-chan.org/fsw/ff/00index_e.html) as the file system handler. Have a look at the API and examples on the FatFS site fore usage information. + +The FatFS module will be initialized by the micro-SD deck driver when the deck is detected. After that the API calls can be used such as `f_mount`, `f_open`, `f_read`, `f_close` etc. + +## Data Logging + +Without any changes to `usddeck.c` there's a data logging functionality implemented. It can be enabled and configured by placing a config file on the µSD-Card. The file is a simple text file and an example is available [config.txt](https://github.com/bitcraze/crazyflie-firmware/blob/master/tools/usdlog/config.txt). The file format is as follows: + +``` +Frequency +Number of buffers +File name +log entry 1 +log entry 2 +log entry 3 +... +``` + +Frequency is an integer value in Hertz, for example 250 means that a data block is written every 4ms. The number of buffers is used to decouple the writing to the card and the data logging. Higher frequencies require more buffers, otherwise some data might be lost. Logging 10dof data with 1kHz works well with a buffer of 120 elements. But you may have to try around a bit to get feeling on what is possible. If the buffer was too small or the frequency was too high there will be gaps in the log as you can see in the following picture: + +![micro-sd Log Gap](/docs/images/usd_log_gap.png) + +The file name should be 10 characters or less and a running number is appended automatically (e.g., if the file name is log, there will be files log00, log01, log02 etc.). The log entries are the names of logging variables in the firmware. + +The config.txt file will be read only once on startup, therefore make sure that the µSD-Card is inserted before power up. If everything seems to be fine a µSD-task will be created and buffer space will be allocated. If malloc fails crazyflie will stuck with LED M1 and M4 glowing, otherwise data logging starts automatically after sensor calibration. The logfiles will be enumerated in ascending order from 00-99 to allow multiple logs without the need of creating new config files. Just reset the crazyflie to start a new file. For performance reasons the logfile is a binary file, but the python module also contains a function which will return the data as dictionary. For decoding just call + +``` +import CF_functions as cff +logData = cff.decode(fileName) +``` + +where fileName is a file from the µSD-Card. For convenience there is also an [example.py](https://github.com/bitcraze/crazyflie-firmware/blob/master/tools/usdlog/example.py) which shows how to access and plot the data. + +## Current limitations [SOLVED] + +The SD-Card is using the SPI bus on the deck port to communicate. This has turned out to have some implications for the other decks that use the SPI bus. The effected decks are the Loco-deck and the Flow v1,v2 deck. An [issue](https://github.com/bitcraze/crazyflie-firmware/issues/270) has been open about it and this has finally been solved but there might still be interesting to use the other SPI bus sometimes. One workaround is to use a "hidden" SPI on the deck port that is multiplexed with TX1, RX1 and IO_4. This SPI port is called SPI3 in the STM32F405 and after [this](https://github.com/bitcraze/crazyflie-firmware/commit/bfedc1ca97824434758269a0af255b0fa9afefbf) commit there is a possibility to switch to this SPI bus. + + - First thing the SD-card deck needs to be patched, CS->RX2(PA3), SCLK->TX1(PC10), MISO->RX1(PC11), MOSI->IO_4(PC12) and this is a quite hard to cut the small lines and solder small patch wires. Easier is to use a sd-card breakout deck such as [this](https://www.sparkfun.com/products/544) and solder wires to e.g. the battery holder board. + - Compile the firmware with `CFLAGS += -DUSDDECK_USE_ALT_PINS_AND_SPI` in your config.mk file. + - If you want to use the Loco-deck at the same time, the alternative pins for this must be used. This means cutting GS1 and GS2 underneeth the loco-deck and soldering the bridged GS3 and GS4. Then add `CFLAGS += -DLOCODECK_USE_ALT_PINS` to you config.mk as well.