2013-10-09 3 views
2

Людей,Реализовать SDIO интерфейс SPI устройству

Я всегда видел упоминание о том, как использовать интерфейс SPI для работы карты памяти SD. Это не что я хочу. Мне нужно сделать все наоборот.

Я хочу иметь возможность использовать контроллер SDIO (через слот SD) на моем «хосте» (на любом ПК с интерфейсом SD-карты), чтобы разговаривать с моими устройствами (в основном микроконтроллерами), которые могут «говорить» только SPI ,

Если мое понимание не слишком ошибочно, я не могу просто сказать моему контроллеру SD говорить в сыром режиме SPI, но я могу научить своих микроконтроллеров вести себя как устройство SDIO, которое может контролировать мой хост.

Таким образом, у меня еще есть две проблемы осталось:

  1. Правильно реализовать стандартное устройство SDIO в моем микроконтроллером.
  2. Реализация/настройка правильных драйверов в хосте для взаимодействия с моими устройствами.

Реализация устройства SDIO кажется быть вопросом после spec. Драйвер на стороне хоста, я надеюсь, что я смогу выполнить с помощью драйвера пользовательского пространства в Linux, используя уже существующий драйвер ядра для SDIO.

В том-то и дело, что я пришел попросить о помощи. Может ли кто-нибудь указать мне образцы, документы или любые ресурсы, которые могут помочь мне в моей задаче?

+1

Я сомневаюсь, что здесь много людей, которые понимают, как работает стек SDIO в Linux (и должен работать драйвер, использующий SDIO). Я определенно посмотрю их и спрошу их напрямую или через свой список рассылки. В качестве отправной точки: http://sdio-linux.sourceforge.net/ –

ответ

1

На стороне ПК, это все, что вам нужно: http://sourceforge.net/projects/sdio-linux/

Это может быть полезно для справки: http://www.varsanofiev.com/inside/WritingLinuxSDIODrivers.htm (хотя, я не думаю, что будет писать драйвер)

На микроконтроллере используйте «бит-биение» для реализации спецификации SDIO.

Однако сначала подумайте, зачем это делать. SDIO и SPI - это только последовательные протоколы, поэтому USB; не лучше ли вы сделать мост SPI-USB? USB намного более удобен для пользователя на стороне хоста, а также является более стандартным и более распространенным. И если вы хотите мост SPI-к-USB, оказывается, что уже существует, SPI Shortcut (возможно и другие варианты, это только первое, что приходит на ум)

EDIT Или вы могли бы битового b2 I2C на микро, если хост поддерживает I2C (многие делают). Собственно, пройдите через каждый последовательный протокол, поддерживаемый хостом, и посмотрите, можете ли вы легко его поддерживать с микро-стороны (с помощью бит-битнга, поскольку микроконтроллер, скорее всего, не будет иметь подчиненный режим для этого встроенного протокола). RS232 (с повышением уровня), I2C и SPI, вероятно, будут предпочтительным выбором. Думаю, SDIO - это, пожалуй, самый последний выбор.

+0

Мой клиент не хочет добавлять дополнительное оборудование для подключения хоста к его устройствам. Я уверен, что конвертер USB/RS232 будет очень легко работать, но клиент еще не убежден, что стандартный конвертер, такой как FTDI, Microchip или Prolific, стоит того. Они не доверяют этому решению, и у них есть свои причины, поэтому мне еще нужно немного поработать над этой возможностью SDIO/SPI. Благодаря! – j4x

+0

@fljx: Ладно, я вижу. Еще один вариант: вы можете заставить ваше хост-устройство разговаривать с I2C с микрофоном и работать с подчиненным I2C на бит-биение микро? Вероятно, это будет на 1000% проще, чем SDIO. Я предполагаю, что я имею в виду, пройдите через каждый последовательный протокол, поддерживаемый вашим хостом, и сравните, насколько легко это сделать на микро-стороне. SDIO должен быть одним из самых сложных, я бы оттолкнул вас от этого. –

+0

Алекс, еще раз спасибо. На подчиненной стороне мне не нужно бить, если у меня есть I2C на главном сервере. Микроконтроллер имеет I2C в оборудовании. Вопрос в том, как заставить хост (аппаратное обеспечение на основе x86) говорить I2C через интерфейс SDIO? – j4x

0

SDIO очень плотно указан. Если ваш микроконтроллер не имеет блока SDIO, который предназначен для работы как устройства, а не для хоста, я не думаю, что это будет возможно. Я знаю несколько коммуникационных контроллеров специального назначения, которые реализуют устройство SDIO, но я не сталкивался с микроконтроллерами общего назначения.

Вам понадобится довольно быстрый микроконтроллер, чтобы иметь возможность инициализации SDIO на бит-бит до 400 кГц.Если вы используете STM32F4 на частоте 180 МГц, это дает вам только циклы микроконтроллера между тактовыми циклами SDIO. Если после инициализации хост отображает тактовую частоту до 25 МГц, вы можете отключить до 7 циклов между тактами SDIO.

Для перспективы использования спецификации SDIO, вы связали это упрощенная спецификация, которая не распространяется на сигнализацию и синхронизацию шины. Полная спецификация во много раз больше.

Как я уже говорил, могут быть лучшие альтернативы тому, что вам нужно. Если ваш хост SDIO поддерживает режим SPI, большинство микроконтроллеров имеют периферийные устройства SPI, которые могут действовать как подчиненные устройства, а не хосты, поэтому это может быть проспектом без периферии. Если ваши скорости передачи данных достаточно низки, может быть достаточно простого UART (вы можете разумно набрать 1 Мбит на короткие расстояния).

+0

Возможно, я не был достаточно ясен, но то, что я хочу, это именно то, что использует SDIO от хоста, чтобы поговорить с микроконтроллерами SPI. Я никогда не говорил, что планирую реализовать бит-биение SDIO в микроконтроллере. Если у вас есть какие-либо рекомендации относительно того, как поставить контроллер хоста SDIO на разговор с устройством SPI, я буду очень благодарен. – j4x

+0

Я думаю, что я до сих пор не понимаю. У вас есть хост-компьютер, и вы хотите использовать SDIO для связи с микроконтроллерами SPI? У вас есть два разных интерфейса связи, которые вы пытаетесь связать, и я не думаю, что вы сможете заставить его работать, не создавая своего рода мостовое устройство. – rjp

+0

1. Протокол SDIO определяет режим SPI, правильно? 2. Устройства, имеющие интерфейс SPI, могут разговаривать с хостом SDIO, если он обменивается протоколом SDIO в режиме SPI, правильно? – j4x

Смежные вопросы