6

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?

tehwalris
  • 746
  • 2
  • 8
  • 16
  • 1
    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. – Some Hardware Guy Jul 09 '14 at 21:06
  • 1
    As you didn't specify the question very narrowly, I think that you can also look at how Cubieboard integrates SATA - http://cubieboard.org/download/ – berezovskyi Jul 10 '14 at 11:23

2 Answers2

7

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).

Funkyguy
  • 3,558
  • 1
  • 21
  • 45
  • 1
    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. – tehwalris Jul 09 '14 at 21:42
  • Agreed, even freescale has ARM M0+ controllers that feature a USB OTG & USB Host/Device. Its quite amazing actually. – Funkyguy Jul 09 '14 at 23:10
7

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.

Zuofu
  • 4,168
  • 2
  • 21
  • 36
  • 1
    +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. – Funkyguy Jul 09 '14 at 23:29