Hacker News new | ask | show | jobs
by ChuckNorris89 1994 days ago
Pretty much every microSD card has had an ARM cpu core in it since forever.

The Bluetooth radio chip in your phone and the RF chip in your car's key fob already have multicore CPUs inside.

Even your optical mouse has a multicore CPU in it to handle image processing and translate the optical feed into motion packaged into USB HID frames.

Your fast phone charger has a CPU in it to monitor and negociate power delivery to not burn down your house.

Even your basic budget electric toothbrush has a 4-bit CPU inside it made by Swatch.

CPUs cores are in everything these days [happy NSA noises]

3 comments

Pretty much every microSD card has had an ARM cpu core in it since forever

A lot of them use 8051, presumably because it's cheaper and smaller: https://www.bunniestudios.com/blog/?p=3554

I've worked with TI BLE chips which were 8051 variants. Took me back to original CS classes as it is a very simple core with limited registers but can still be used to perform all the bluetooth functions.
IIRC, the BLE stack on those was a separate (undocumented?) core; the 8051 was for user software that gave high-level commands to the BLE block through magic registers. Still fun to program, for sure.
The older ones for sure, but all the modern ones have moved to ARM7-TDMI then to Cortex-Mx cores.
Some of the more, ah, cost-reduced Bluetooth chips have 8051s or all kinds of weird, proprietary processors, presumably because the per-chip licensing fee for ARM is too much at that end of the market or something.
I am right now making backlight with RGB LEDs for my monitors. It is going to have Cortex-M4 ARM in it.

I put into just about everything I build these days regardless of how small it is.

Now I'm curious about the things you're building. They wouldn't happen to be on a blog somewhere?
No, I don't have a blog. These are just my private projects that I make for my own use. I am working as a software developer and learning electronics as a hobby.

The backlight is going to be a box supplied directly from AC, connecting up to 6 strips of individually addressable WS2812 RGB LEDs, providing up to 10A at 5V (50mA per LED == 200 LEDs at full power). It will be connected using galvanically isolated Full-Speed USB to the PC.

For now I will have some pre-programmed sequences but I plan to make a piece of software that will make it possible to match LEDs to the borders of image on the screen though I have no idea how to do that at the moment.

I've also been playing with WS2812 LEDs as ambient/halo lighting around my monitor. I'm using a cheap ESP-32 dev board to allow control from my phone via WiFi even when my computer is asleep. I went much smaller though - only 16 pixels, powered by an old phone charger.

This works for now because my primary use-case is ambient lighting when the room would otherwise be dark. I'm planning to build some larger-scale higher-density light panels to provide more illumination for those dark winter days.

Is there a specific dev board with a Cortex-M4 that you like to use, or does it vary by project?
I have a bunch of STM32 Nucleo and Discovery boards that I use and which one I use will depend on circumstances.

For prototyping I use both breadboards and perfboards. I use breadboards for small fast prototypes and perfboards when I know I am going to develop it over a longer time or when I have some special requirements (like AC power on board or a component that has 2.54mm pitch but is not breadboardable) that exclude or make it more difficult to use on a breadboard.

For breadboard I would default to use STM32L432 Nucleo-32 which is breadboardable and doesn't use much space.

For perfboard I default on either STM32L452 Nucleo-64 or STM32F303 Discovery. I don't solder them to board but instead just insert it in the board and then put couple of pieces of plastic from 2.54mm pitch header with the metal pins removed. This mounts the board securely in place without having to solder it. I use dupont jumper wires to connect it to the rest of the board where I would typically solder the rest of components (unless I also don't want to solder them in for some reason).

I would typically solder in things that are disposable to me that I don't want to flap around.

This fascinates me. Is there a website anywhere that is collecting these sorts of use cases? It seems truly mind blowing something as simple as an electric toothbrush would have a processor in it.
Nothing mind blowing. Processor is cheaper than building analog circuitry.

Think about your toothbrush. All important timing parameters are configured digitally and you can easily change it. You can technically do the same with resonators but it would take much more board space, be less precise, require inductors which you want to avoid in the circuit, etc.

And cheaper/more flexible than custom digital circuitry too. Even if something is large-scale enough to justify a custom chip, that'll often be some components around a mask-programmed 8051 clone. straight-forward, well-understood, relatively easy to make variations by just changing the program.
You still need to provide the cpu with a clock signal though.
No, not really. The STM32s I use (I mainly work with Cortex-M4) have internal resonators that are enough for just about anything unless you need precise timing. Certainly good enough for toothbrush.
How would you explain this part of your argument then:

> You can technically do the same with resonators but it would take much more board space, be less precise, require inductors which you want to avoid in the circuit, etc.

Many microcontrollers (PIC, STM32, atmega8 etc) include an internal RC oscillator - which is literally inside the chip itself. Zero external components required.

Not only do you save the costs of using a crystal, you also save two pins - which was useful in the days of 8-pin microcontrollers like the ATtiny85.

As internal RC oscillator drift rates can be as much as 10% (and vary with temperature) they're not precise enough to run a serial connection, let alone a USB connection. That's why products like Arduino tend to go directly to using a proper crystal (which gives you a 0.01% drift rate for a few pennies).

yeah, almost all microprocessors in that price/power bracket have on-board oscillators, because it saves power, money, and space if you don't need a precise reference.
The parallax propeller has an on-chip RC oscillator. For obvious reasons it can only be used in low clocked scenarios, but many simple human interface applications are fine with this. The propeller is not a very common MCU, but it is fun to work with and has many technical merits.
> important timing parameter

You can also, well, use a regular toothbrush. What is actually important in a toothbrush has nothing to do with electronics.

Actually I switched to electronic toothbrush years ago as it cleans better. Now when I am deprived of my brush and have to rely on a normal brush I don't feel like I did good job cleaning my teeth. Part of this may be subjective feeling but various tests show that electronic toothbrush cleans better than regular one in most cases.

No, I don't need any special functionality other than to clean my teeth but if you were to design a toothbrush you would most likely be asked to implement those.

>Is there a website anywhere...

I doubt, pretty much anything that has electronic circuitry has got a micro processor - it's an off the shelf component, well understood, much easier to change/modify and test than custom built analog circuitry. For example - what's the option to save any end user settings with analog devises - knobs/potentiometers.... Compared non-volatile memory like NAND, the cost (and space and weight) differences are orders of magnitude.