Wäre es möglich, eine SATA-Schnittstelle in einem eingebetteten System, beispielsweise einem MP3-Player oder einer Videokamera, zu verwenden? (Geschwindigkeit nicht kritisch)
Was ist der typische Weg, dies zu tun? On-Chip-Peripherie, externe ICs usw. Was ist bei der Implementierung solcher Schnittstellen zu beachten?
SATA ist keine einfache Sache. SATA-Peripheriegeräte werden entweder über PCIe-zu-SATA-Konverter, USB-zu-SATA-Brücken angeboten, oder der Prozessor verfügt über ein On-Chip-Peripheriegerät. Um einen integrierten SATA-Peripherie-Controller zu bekommen, muss man schon ziemlich High-Tech sein.
Texas Instruments hat einige gute USB-zu-SATA-Brücken, die sich hervorragend für externe Festplatteneinschübe eignen.
Ich habe im ganzen Internet gesucht und konnte keinen externen SATA-IC finden, der mit einem Peripheriegerät mit niedrigem Kommunikationsprotokoll kommunizieren kann. Es gibt einige, die von P/ATA (IDE) zu SATA wechseln, obwohl Sie keinen Controller mehr finden können, der ein P/ATA-Protokoll verarbeitet, außer vielleicht aus den dunkelsten Tiefen der Welt.
Wenn Sie eine SATA-Schnittstelle implementieren möchten, müssen Sie bedenken, dass das Layout der Schnittstelle differenzielle Paare erfordert, die natürlich differenziell geroutet werden müssen (längenangepasst, so parallel wie möglich geroutet).
Die obige Antwort ist schon ziemlich gut, aber ein alternativer Ansatz, wenn Ihr Mikrocontroller zu alt/langsam/dumm für sogar USB-Host oder USB-OTG ist, ist die Verwendung einer Software (bit-banged) P/ATA-Schnittstelle mit einem P/ ATA-zu-SATA-Brückenchip. Ein allgemein verfügbarer ist der JMicron JM20330, dessen Datenblatt hier JM20330 zu finden ist . Der kleinste gemeinsame Nenner PIO-Modus 0 ist so ziemlich nur ein 16-Bit-Parallelbus, dessen Details hier zu finden sind . Der Link hat auch eine 8-Bit-8051-basierte Implementierung, die wahrscheinlich auf wirklich fast jeden Mikrocontroller portierbar sein wird, sogar auf solche, die für einen USB-Host zu Low-Tech sind.
Irgendein Hardware-Typ
beresowskij