Community Report October 2017: Music to the Ears of Engineers

November 3, 2017

Young people putting their hands on top of each other symbolizing unity and teamwork. Diverse group of students stacking their hands.

Last April, the Life.Augmented Blog celebrated the new ST Community, a place that brought partners, engineers, academia, and enthusiasts together to give them a platform to share their accomplishments, questions, or ideas. Over the course of this year, the site grew tremendously, threads multiplied, and contributions expanded. Much more than a simple forum, it hosts categories that focus on a type of component or application to better serve the different groups looking for a place to learn and experiment. Hence, as the Community’s discussions and projects continue to thrive, we thought it’d be a good opportunity to shine a light on the threads of the previous month that got a lot of traction or that caught people’s attention. If you haven’t done so yet, we invite you to check them out, participate, and enjoy the creativity and ingenuity of our community members.

Build your 6-Voice Synthesizer

The NUCLEO-F746ZG board.

One project that got a lot of attention last month, and for very good reasons, was the Nucleo Synth (Virtual Analog Synthesizer). The author, Pappas.Chris, published the files to turn an STM32F7 Nucleo board (NUCLEO-F746ZG or NUCLEO-F767ZI) into a 6-voice virtual analog synthesizer. Enthusiasts only need a few adapters and the free evaluation version of Keil uVision5 to start using the system. The solution was even featured on websites like Hackaday and Ask.Audio because the project is a fantastic introduction to hobbyists thanks to a really well-designed application and a total cost of a little more than $20, MIDI keyboard excluded. It’s also a great example of a developer that really took advantage of the ST platform. For instance, using the microcontroller’s DAC reduced the overall cost and lowered the latency. The demo below will give you an idea of the project’s capabilities.

When Using UART Gets Tough

One of the greatest advantages of the community is the ability to work on issues that will help users for months and sometimes years after they were posted. The thread onreceiving data using UART during an interrupt is a wonderful example. The problem is tricky because simply calling HAL_UART_Receive_IT could cause issues and isn’t always safe. However, Ross.Mike offers a detailed workaround to guarantee the reception of data using a 1-byte buffer. Furthermore, community members are also still working on optimizations to the current solution to ensure that newcomers get an even better answer to their concerns.

Outside Our CANfort Zone

Understanding STM32CubeMX.

Other community members use the platform as a launchpad to unfamiliar projects. For instance, saraf.ninad.001 created a thread to ask for help in working with a CAN (Controller Area Network) bus using HAL (Hardware Abstraction Layer) libraries. What ensued was a passionate discussion that has become a reference for many enthusiasts and engineers with the same question. The original solution first pointed to an example application found in the STM32CubeF4 pack that allows anyone to start running the program on an ST evaluation board. After all, the best way to learn is to do, which explains why the thread is still quite popular and active today, although the original post is from April 2016.

Looking Past a Problem to Solve It

When dealing with complex programming issues, it’s so easy to miss the forest for the trees, and the community is a great place to think outside the box to start solving problems in ways we didn’t think possible. For instance, one popular thread on the community looks like a simple request: coding a delay in microseconds using HAL drivers instead of the default milliseconds. The solution ended up using the Data Watchpoint and Trace Unit from ARM. This debug module includes a cycle-count register (DWT_CYCCNT) that offers much more control and optimization possibility. Since the first responses, the community has also come up with entire programs designed to walk users through the process to teach them how to work with DWT. Hence, this thread is also a great example of the quality of the contributions in the community.