I got distracted and had a hack on using a STL Link v2 clone as a development board. There’s a lot to like:
A Cortex-M3 STM32F103C8T processor with 64 KiB of flash and 20 KiB of RAM 4 I/O lines and a LED to blink Decent support in STM32duino with a DFU bootloader Comes in a case and plugs directly into a USB port ~$2/each The I/O is strange and limited but it’s enough to drive a RGB LED via PWM, drive a 40 RGB LED pHAT over SPI, and drive a 320x240 LCD over fast bitbanged SPI.
I’m hacking on adding SDHC over SPI block device support to the Zephyr Project RTOS.
I’m currently getting 224 KiB/s on an Arduino Zero with a 4 MHz bus and 1 KiB read size, which is an OK-ish 46 % of the top bus capacity.
Here’s where the time goes:
4550 us - total time to read 2x 512 byte blocks from the card 80 us - time spent in ELM FS (impressive!
I’m hacking on adding Arduino Zero support to the Zephyr Project at the moment. I had a look at speeding up crc16_ccitt() but ran into a problem: there’s so many variants of CRC16-CCITT to choose from!
Zephyr uses CRC-16/AUG-CCITT which is equivalent to CRC-16/CCITT-FALSE with two zero bytes prepended. The effective seed is 0x1d0f and test vector output is 0xe5cc.
Mynewt uses CRC-16/XMODEM. The seed is 0 and test vector output is 0x31c3.
There is an issue when trying to program a SAMD21 like in the Arduino Zero using OpenOCD with a ST-Link v2 which gives errors like this:
** Programming Started ** auto erase enabled Info : SAMD MCU: SAMD21E18A (256KB Flash, 32KB RAM) Error: Failed to erase row containing 00000000 Error: SAMD: failed to erase sector 0 Error: failed erasing sectors 0 to 0 The issue is that NVMCTRL_CTRLA is a half-word register and the ST-Link v2 emulates the half word write using two single byte writes.
In follow up to my mysensors.org build, I’ve always wanted to design PCB and try my hand at SMD soldering. I normally use veroboard on a 0.1” pitch but the time to cut and solder wires makes for a slow build. Here’s the result:
An AT91SAMD21E18 (256 KiB flash, 32 pins, 0.8 mm pitch) USB, regulator, Cortex SWD debug header, LED, and pullups on I2C Footprint for a RFM69CW radio Adafruit Feather form factor Two layer PCB with 0603 passives The soldering turned out well.