Tutorials on USB, SPI, I2C, CAN, LIN, etc.

Thanks to the Arduino, and others including Maple, lots of new users, beyond traditional developers and engineers, are using microcontrollers. Microcontrollers are mind-boggling pieces of equipment, genuinely worthy of the moniker ‘only limited by your imagination’. Many users create amazing projects using the excellent libraries and existing electronics. Some need to go further. They want to understand how to make the hardware do even more and different things.

I have always been the type of person who likes to understand how things work. I like to read manuals. Even as a child I read the manuals for my brother’s HiFi so I knew how to do make it do pretty much anything possible. I like looking at low-level code, and digesting Microcontroller manufacturers manuals. I like reading technical stuff, especially over a balmy Holiday Weekend.

I sometimes work with folks with technical backgrounds in software not hardware or low-level embedded systems who want to do more. They have all the knowledge and skills to program the hardware, but the hardware manuals are too hard a place to start. It is surprisingly rare to find good introductory material for low-level technology which is both approachable and also detailed enough to enable non-specialists to go further.

I was pleased to stumble into a set of resources for embedded systems at “EE Herald”
http://www.eeherald.com/section/design-guide/index.html

It includes a section of “On line Courses” on common embedded communication interface ‘standards’. The tutorials include USB, I2C, SPI, CAN, LIN, Serial, and RS232. Those standards are used to communicate with individual chips such as accelerometer sensors, other microcontrollers, host PCs, SD memory, Wii controllers, controllers in manufacturing plant, and parts of cars. There are also section on ‘IEEE 802’ local area and wide area networking standards.

The sections I’ve skimmed seem to have good coverage and a decent level of details. The tutorials include some helpful diagrams, which helps folks like me a lot, and are written at useful level of technical detail without going down to the manufacturer specific hardware.

For example USB is covered in
http://www.eeherald.com/section/design-guide/esmod14.html

I have only skimmed it, but it reads as good coverage of USB 2.0 from history to physical hardware, electrical levels, signalling, end-points and protocol including packet formats. It isn’t as detailed as the USB specifications, but I don’t think many people would want to start their! I like to get a good overview of the way a system works before digging into the detail, and I like to have a broad technical understanding to stitch detail into.

The USB article at EE Herald isn’t perfect. It includes a very brief overview of USB On-The-Go (OTG), but not enough to feel I could properly understand the STM32F USB OTG hardware. USB On-The-Go includes the more complex host-side of USB, so it would be impressive if they had got that too. I feel that is a minor and common weakness.

It is a readable alternative to
USB in a NutShell at http://beyondlogic.org/usbnutshell/
USB made Simple at http://www.usbmadesimple.co.uk/

These won’t replace the manufacturers manuals (e.g. ST Micros STM32F RM0008), but they cover generic technical detail, and look pretty good. I’m hoping they may be enough overview for anyone who wants to read low-level code or hardware specific manuals like STM32F RM0008 or the Atmel ATmega 48/88/168/328 manual.

I briefly looked at some other articles in the EE Herald design guides, and they are not all good quality. I felt disappointed by the ‘MEMS based motion sensing design’. It had almost no useful detail; I thought it was weak even as marketing ‘puff’. I wouldn’t feel ready to tackle a manufacturers MEMS datasheet after reading that.

EE Herald have some links to other sites, including this useful looking article on 1-Wire Interfaces from Maxim which has a lovely list of 1-Wire Application Note links at the end. Ideal Holiday Weekend reading 🙂

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: