Подключение Compact Flash к микроконтроллеру AT91SAM9263

В этой статье я опишу особенности аппаратного подключения Compact Flash(CF) карт к микроконтроллеру AT91SAM9263 и программную реализацию интерфейса в режиме True-IDE. Микроконтроллер AT91SAM9263 имеет в своем составе интерфейс внешней шины с поддержкой Compact Flash который и будет использован. Т.к. интерфейсы Compact Flash и HDD похожи, в дальнейшем я не буду их разделять и все рассуждения будут справедливы и для CF-карт, и для жестких дисков. Программная реализация написана на языке Си без использования какой-либо операционной системы.

1. Аппаратное подключение

1.1. Сигналы внешней шины EBI.

Интерфейс внешней шины (EBI) содержит в своем составе модуль подключения Compact Flash, который позволяет работать с CF-картами в различных режимах (Memory-mode, I/O-mode, True-IDE-mode и т.п.). В таблице 1 собраны сигналы которые могут использоваться для подключения CF-карт  в режиме True-IDE.

Таблица 1. Сигналы EBI для работы с Compact Flash в режиме True-IDE.
Сигнал EBI Сигнал CF Функция Тип Активный уровень
CFIOR _IOR Строб чтения Выход Низкий
CFIOW _IOW Строб записи Выход Низкий
CFRNW   Направление данных Выход  
CFCS   Выбор устройства(CS) Выход Низкий
PD8-PD9 _CE1-_CE2 Выбор области IDE Выход Низкий
A0-A2 A0-A2 Шина адреса Выход  
D0-D15 D0-D15 Шина данных Вх/Вых  
NWAIT IORDY Готовность устройства Вход Высокий

Сигнал CFRNW используется для переключения направления передачи сигнала в шинных формирователях шины данных.

1.2. Другие управляющие сигналы.

Для работы с Compact Flash требуются так же дополнительные сигналы управления помимо внешней шины, эти линии управления собраны в таблицу 2.

Таблица 2. Другие линии AT91SAM9263 необходимые для поддержки работы с Compact Flash.
Линия AT91SAM9263 Сигнал CF Функция Тип Активный уровень
PA23 (или любой PIO) _RESET Сброс HDD Выход Низкий
PA30 (или любой PIO) CF  Card Detect Карта Вставлена Вход Низкий

Другие линии управления мы не будем использовать в нашем примере.

 1.3. Пример подключения Compact Flash.

На рисунке 1. представлена блок-схема, а на рисунке 2 - схема подключения Compact Flash карты к AT91SAM9263.

Рисунок 1. Блок-схема подключения Compact Flash к AT91SAM9263.
Рисунок 1. Блок-схема подключения Compact Flash к AT91SAM9263.

Рисунок 2. Схема подключения Compact Flash к AT91SAM9263.
Рисунок 2. Схема подключения Compact Flash к AT91SAM9263. Нажмите для увеличения.

2. Программное обеспечение

 2.1 Обработка встроенных сигналов внешней шины.

Логика контроллера Compact Flash работает через контроллер статической памяти (SMC) и организована в две области внешней памяти выбираемые 4м и 5м сигналами выбора кристалла EBI0_NCS4 и EBI0_NCS5, т.е. от 0х5000000 до  0х5FFFFFFF для EBI0_NCS4 и от 0х6000000 до  0х6FFFFFFF для EBI0_NCS5. Сигналы _IOIS16 и _ATA_SEL не поддерживаются контроллером Compact Flash. Различные режимы работы интерфейса переключаются путем работы в поддиапазонах памяти в соответствии с картой памяти (см. рис. 2).

Рисунок 2. Карта памяти Compact Flash контроллера.
Рисунок 2. Карта памяти Compact Flash контроллера.

Для использования функции Compact Flash следующие PIO сигналы должны быть настроены как периферийные входы/выходы.

  • PD5 - сигнал NWAIT
  • PD6 (PD7) - сигнал EBI0_NCS4 (EBI0_NCS5)
  • PD8 - сигнал EBI0_CFCE1
  • PD9 - сигнал EBI0_CFCE2
  • PD14 - сигнал EBI0_A25_CFNRW

Кроме того Compact Flash контроллер должен быть активирован путем установки бита EBI_CS4A или EBI_CS5A в регистре EBI_CSA для назначения ему сигнала NCS4 или NCS5 соответственно.

2.2 Обработка прочих сигналов управления.

Как видно из таблицы 2, у нас есть 2 сигнала подключенных к обычным линиям GPIO, этими сигналами мы должны управлять самостоятельно. Сигнал _RESET производит аппаратный сброс CF-карты, а входной сигнал Card Detect устанавливается в 0 когда карта вставлена, путем опроса этого сигнала программное обеспечение может определить, есть ли карта в слоте.

2.3 Временные диаграммы

Для работы в режиме PIO-4 мы установим следующие параметры контроллера статической памяти:

PS_SMC0->SMC_SETUP4 = 0x00030003;
PS_SMC0->SMC_CYCLE4 = 0x00110011;
PS_SMC0->SMC_PULSE4 = 0x11071107;

Частота MCLK у нас 100МГц так что все тайминги получаются умножением 10нс на число в регистре. Т.е. цикл чтения/записи будет равен 170нс.

2.4 Программная реализация

Программа находится в приложенном файле в конце этой статьи. В архиве надожится проект для Eclipse Gallileo, компиляция производилясь в среде Windows XP Home Edition SP3 с использованием кросс-тулчейна Yagarto. Для доступа к перефирийным устройствам используются библиотеки at91lib доступные для скачивания на сайте компании Atmel. Программное обеспечение тестировалось с использованием модуля PM9263 компании Ronetix.

2.5 Ссылки на использованные в статье материалы

  1. Interfacing a Hard Disk Drive to an AT91RM9200 Microcontroller
ПредпросмотрAttachmentSize
AT91SAM9263HDDDriver.rar203.23 КБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

А файловая система у вас

А файловая система у вас планируется на карте? Таким же образом подключал CF к AT91SAM9260, только вместо внешней логики была ПЛИС, и вместо библиотеки at91lib там был linux. Если можно сверху прикрутить фс без использования ос, было бы совсем замечательно.

Файловая система не

Файловая система не планируется, это чисто тестовое приложение для проверки функциональности новых плат (оно помогло нам найти ошибки в схемотехнике на свежеразработанных платах), но в библиотеках at91lib я встречал исходники fatfs, так что можно ее подключить при желании. Их Вы  можете найти на сайте Атмела в примерах для КИТовых плат. У меня была идея прикрутить сюда ФАТ, но пока, за неимением свободного времени она отложена до лучших времен.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании