6
\$\begingroup\$

Would it be possible to use a SATA interface in an embedded system, for example a MP3 player or a video camera? (speed not critical)

What is the typical way to do this? On chip peripherals, external ICs etc... What are important things to consider when implementing such intefaces?

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Depends on the type of controller you are going to use for your embedded system. You can get ARM processors with built in sata support, if you're thinking a cheap micro like a PIC or MSP430 maybe a USB to SATA bridge. You'd be in for writing some serious software for that though. If you're just playing around maybe get a linux dev board like a PI or something and USB hard drive to start. They're essentially SATA drives with a USB to sata bridge chip inside. \$\endgroup\$ Jul 9, 2014 at 21:06
  • 1
    \$\begingroup\$ As you didn't specify the question very narrowly, I think that you can also look at how Cubieboard integrates SATA - cubieboard.org/download \$\endgroup\$ Jul 10, 2014 at 11:23

2 Answers 2

7
\$\begingroup\$

SATA is not a simple thing. SATA peripherals are offered through either PCIe to SATA converters, USB to SATA bridges, or the processor will have an on-chip peripheral. You need to go pretty high-tech to get an integrated SATA peripheral controller.

Texas instruments does have some good USB to SATA bridges, great for external hard drive bays.

I have searched all over the internet and I haven't been able to find an external SATA IC that can communicate with a low communication protocol peripheral. There are some that go from P/ATA (IDE) to SATA although you cannot find a controller that handle a P/ATA protocol anymore, except may from the darkest depths of the world.

If you want to implement a SATA interface, you need to keep in mind that the layout of the interface requires differential pairs, which of course need to be differentially routed (length matched, routed as parallel as possible).

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Thanks, great answer. Like you, I couldn't find any dedicated SATA-low speed signalling converter ICs and the ICs that have SATA as a peripheral really do seem extremely high end (complex). The SATA->USB + USB->controller/processor route seems the simplest for testing. The converters are easy to get, and inexpensive enough for testing purposes and MCUs with USB host support seem much more common than those with SATA. \$\endgroup\$
    – tehwalris
    Jul 9, 2014 at 21:42
  • \$\begingroup\$ Agreed, even freescale has ARM M0+ controllers that feature a USB OTG & USB Host/Device. Its quite amazing actually. \$\endgroup\$
    – Funkyguy
    Jul 9, 2014 at 23:10
7
\$\begingroup\$

The above answer is quite good already, but an alternative approach if your micro-controller is too old/slow/dumb for even USB host or USB-OTG is to use a software (bit-banged) P/ATA interface with a P/ATA to SATA bridge chip. A commonly available one is the JMicron JM20330, the datasheet for which can be found here JM20330. The lowest common denominator PIO Mode 0 is pretty much just a 16-bit parallel bus, the details of which can be found here. The link also has an 8-bit 8051 based implementation that will probably be portable to really just about any microcontroller, even those which are too low-tech for a USB host.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ +1 for mentioning JMicron. If you want to get a hold of their chip, you'll need to contact them directly although they do take a while to respond (or at least they did with me). Also their parts listing is not up to date. \$\endgroup\$
    – Funkyguy
    Jul 9, 2014 at 23:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.