I purchased the SDIO card because it is the only 4 bit solution for STM32L4 (apart from the ST eval board) and has short data lines and easy access for a logic analyzer. I was not interested in the Arduino stuff although I looked into the arduino core code out of interest. Positive: -short data lines to SD-card which enables the use of high clock frequencies. -decoupling caps on board -Arduino core code has been programmed natively on the sdmmc register interface so no ST HAL. Very impressive and I suppose a lot of time was spent on this.
Possible improvements: -mounting on the Dragonfly. To avoid covering the RGB-LED it has to be mounted on the bottom, but in this case access to the sd card is really cumbersome -no pull-ups on CMD and data lines. You have to rely on setting the internal STM32 pull-ups -D3 is connected the blue part of the RGB LED and the is no solder bridge. This imho is a poor choice signal integrity wise and power consumption wise
This is a small board with a fair number of peripherals so some trade-offs had to be made in the design. We agree having the rgb led share other pin functions is undesirable, but it is the choice we made. As far as power usage, SD cards are high-power devices, which is one reason the SD Card Reader interface design for the Dragonfly seems somewhat of an after thought; it was! Nevertheless, we have found that it can work well despite the awkward access to the SD card itself.
I ordered the board as I was planning to use it for marine compass in conjunction with Ultimate Sensor Fusion Solution board. I had no problem getting both boards to work on their own with provided from Kris (the creator of the board) samples. I also was successful to compile the test code for the Ultimate Sensor Fusion Solution to run on the Butterfly board. Both hardware solutions are well executed and great performers. then I tryed to implement my full code that I was successful running on Teensy3.1. Here is where I start running into problems. There is very little to none compatibility described into the documentation, so I presumed that I would be able to compile the code written for Teensy or Arduino to run on the Butterfly STM32L433. This is where I was wrong with my assumptions. I ether couldn't find it, or it doesn't exists yet low level drivers for CAN bus support for the Butterfly board. Neither could I find examples, of the use of the DAC1 and DAC2 located on the board. Kris was so kind to answer my email about the DACs, but just to tell me that there might not be an example yet. In retrospect, I did presume that the Butterfly board will be easy replacement for the Teensy3.2, but it has proven more of a challenge to me and impossible to use with the NMEA2000 libraries due to lack of low level CAN bus driver. I hope that this is because the board is still new, and Kris have been very busy with other projects, but I also hope that he is planning to write the support drivers and more examples soon, so people with less experience can use this excellent little board. The bottom line is that the better the documentation and the support files are, the less time Kris will need to deal with answering support questions. To summarize, great little board! I wish I could make it work for my project... for now back to Teensy. Regrettably I had to order much larger Teensy 3.5 this time, as I need the dual DACs output. I hope someone will write the CAN buss support, because that's definitely is not my forte, and then I can get done what I needed done using this small, yet powerful board.
Thanks for the detailed review Jordan. Unlike the Teensy, we haven't yet benefited from the army of users who write APIs and libraries to use with this family of dev boards. I hope others who need to use the CAN peripheral will step up and pitch in. We will eventually get to it ourselves, but we can't do it all, or at least we can't do it all right now.
Judging from the scarce and sometimes outdated information scattered on a few third party webpages one would expect this to be very much a improvised solution. But far from it! Those guys just put every bit of their expertise and time into the product with almost no regard to documentation let alone advertising or community building.
Just lured in by the sheer technical specs I tried. And I was not disappointed!
I quickly made a project with several I2C sensors dropping in libraries i wrote for the Teensy 3.x, took another one from Adafruit, added the SDIO SD Card breakout also from Tlera and (once I knew how) it all worked out of the box. Used the built-in RTC. Used some simple power saving modes. Hooked up a Li-ION battery. All things that took ages getting right on the Teensy 3.x.
The only confusion really, arose from the lack of documentation, because Dragonfly can do stuff "built-in" (in the core) that other boards need libraries for. Such as the built-in DOSFS object replacing the SD lib and object. Many things I had to find out by browsing the elegant and clean (but scarcely commented) sources. However once I contacted the author of the software he was very friendly and helpful and surprised me time and again with things already there and working, just needed to be pointed out. Once I asked for I2S and some weeks later is was just there in the guthub (have not tried it yet, though).
It's surprising how much more diagnostic value can be gained from the three (RGB) LEDs built right in. Just know they're inverted (pull down to light). Also the blue LED is connected to SDIO D2 line so you can't use it when enabling the SD card (and you might shoot yourself in the foot doing so, like I did). However, the LED glows faintly when accessing the card, also very informative. You can unsolder a lead bridge for power saving.
Coming from the Teensy 3.x I hat to realize the STM32L4xxx chips have their bootloader on-board so unlike other MCUs it seems you can never brick them and you don't need a second small boot code injection MCU like the Teensy 3.x. Just press the BOOT button and while holding down strobe RESET button and the board waits for a new Sketch on the USB line however screwed up it was before.
The Arduino integration is "by the book". The Dragonfly (and Butterfly, Ladybug od the same series) are good citizens of the Arduino Platform easily added through the Boards Manager, with elaborate Options controlling from the menu. It also works with the VisualMicro Addin I use in MS Visual Studio for code browsing, code completion, etc. [one BUGFIX will be released very soon].
Real world test: I used the board as a sensor with longtime data intensive recording to the card. Worked flawlessly. Hardly drained the small Li-ION I used.
I really, really hope this board takes off and goes far!
So that's my 2 cents so far.
Hope to find the time to document my little project... me too I'm more into coding, really... erm... you got me there ;-)
Thank you for the very thoughtful and kind review Markus. I am glad you have found value in the Dragonfly. That means we have met our goal. Now I agree, the documentation is poor. We have been so busy working to complete the last bits of the Arduino core, adding new development boards to the STM32L4 family as well as useful add-on boards that we have just not spent enough time in basic documentation. I hope to amend this oversight soon. It's just the two of us part time so please be patient and we will eventually have documentation worthy of these wonderful devices. In the meantime, please do share your doings with the Dragonfly, I am sure others would benefit and we would be interested to know how you are making use of it. Kris and Thomas
I purchased this board option as a way to log data that was happening in my application. While it is nice to just print the information to the screen this can lead to timing issues as well as needing a cable connected to the application.
With an SD card attached you can log data very quickly without effecting the application to much.
The problem with this board is how it attaches to the butterfly board. If you attached it to the top side it blocks the pin names and LED's as well as some other pins. If you mount it to the bottom side it makes it hard to get the SD card in and out of the socket.
For me having the unit face outward from the Butterfly would be better or still yet have it built onto the board. Nothing attaches to the end of the board and the board is small enough. Then I can easily remove the SD card after testing my application and review the data without having to remove the unit from the circuit.
I was told that you can make the SD card look like a USB drive through the Butterfly but I have not been able to make that work.
Thanks for the thorough review Mike. Yes, there are no perfect solutions. I use other add-ons as well as the SD card and if I had designed it to face the board end as you suggest it could be blocked by those add-ons using the 3V3 and GND pins at the board edge. I like to mount the SD card reader on the board bottom and leave enough gap that I can pull the card out and put it in using tweezers. Not elegant but it works and is out of the way.
As far as the mass storage device, you have to choose USB Type: serial+Mass Storage and DOSFS: SDCARD(SPI) in order for the SD card to appear as a disk drive on your laptop. If you did this and it is still not working for you, please send me an e-mail at firstname.lastname@example.org and we will help you get it working.