Рейтинг@Mail.ru
Плата с микросхемой FTDI
Плата с микросхемой FTDI

Реализация SPI с помощью микросхем фирмы FTDI

Рассматриваются основные этапы программной реализации взаимодействия по последовательному интерфейсу SPI с помощью микросхем семейств FT2xx и FT4xx фирмы FTDI.

1Микросхемы фирмы FTDI

Мы уже не раз обсуждали работу с интерфейсом SPI, реализуя его с помощью Arduino. На этот раз рассмотрим этот интерфейс на примере работы с микросхемами фирмы FTDI, а именно FT2232 и FT4232, которые пользуются огромной популярностью среди разработчиков радиоэлектронной аппаратуры из-за своей дешевизны, надёжности и хорошей поддержки со стороны производителя.

FTDI выпускает микросхемы с суффиксом H (например, FT2232H) – выскоскоростные, с D (FT2232D) – низкоскоростные.

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

Отладочная плата с микросхемой FT2232D
Отладочная плата с микросхемой FT2232D

Для тестов вы можете купить готовую плату у наших китайских друзей или сделать плату самому, используя типовое решение, описанное в Datasheet на микросхемы.

На двух иллюстрациях ниже, взятых из Datasheet, приводится назначение ножек микросхем FT2232D (низкоскоростной) и FT2232H (высокоскоростной) при работе в разных режимах, в том числе SPI (см. столбец MPSSE).

Ножки микросхем, обозначенные как GPIOL («нижние» порты ввода-вывода GPIO), могут работать в качестве Chip Select, т.е., как видно, к микросхемам FT2232D и FT2232H можно подключить до 5 ведомых устройств SPI к одному каналу.

Назначение выводов микросхемы FT2232D при работе в разных режимах
Назначение выводов микросхемы FT2232D при работе в разных режимах

Доступны также «верхние» порты ввода-вывода GPIOH: 4 у микросхемы FT2232D и 8 – у микросхемы FT2232H. Эти ножки также можно использовать в качестве чип-селекта, или для иных целей.

Назначение выводов микросхемы FT2232H при работе в разных режимах
Назначение выводов микросхемы FT2232H при работе в разных режимах

2Библиотеки для работы с микросхемами FTDIFTCSPI.dll и FTD2XX.dll

Если вы хотите реализовать программное обеспечение, использующее микросхемы FTDI для работы по интерфейсу SPI, нужно зайти на сайт производителя и скачать динамические библиотеки FTD2XX.dll и FTCSPI.dll. Первая из них – общего назначения – и входит в состав пакета драйверов FTDI WHQL Certified. Includes VCP and D2XX. Вторая предназначена исключительно для работы по SPI, и найти её можно на странице FTC SPI. Для работы с обеими библиотеками есть прекрасные подробные инструкции для программистов (Programmers Guide), которые любезно выложены на том же сайте фирмы FTDI. Они обязательны для прочтения, если вы будете разрабатывать ПО, работающее с микросхемами FTDI.

Указанный драйвер FTDI WHQL Certified должен быть установлен в любом случае, прежде, чем вы начнёте работать с микросхемами FTхххх.

Дальнейшая последовательность действий такая: вы создаёте проект в Visual Studio или в той IDE, в которой пишете свои программы. Размещаете обе библиотеки в папке проекта. Импортируете нужный функционал в свой проект через директивы [DllImport]. Например, для проектов на VB.NET импорт функции FT_Open из библиотеки ftd2xx.dll будет выглядеть так:

<DllImport("c:\Temp\ftd2xx.dll", SetLastError:=True, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function FT_Open(ByVal deviceNumber As Integer, ByRef pHandle As Integer) As Integer
End Function

Public Shared Sub OpenDevice(ByVal deviceNumber As Integer, ByRef pHandle As Integer)
   Dim r As Integer = FT_Open(deviceNumber, pHandle)
   If r <> FT_OK Then
        Throw New Exception(r)
    End If
End Sub

То же самое на C#:

[DllImport("c:\Temp\ftd2xx.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
private static extern int FT_Open(int deviceNumber, ref int pHandle);

public static void OpenDevice(int deviceNumber, ref int pHandle)
{
    int r = FT_Open(deviceNumber, ref pHandle);
    if (r != FT_OK) 
    {
	throw new Exception(r);
    }
}

Собственно, метод FT_Open импортируется как закрытый в первых двух строках кода, а следом объявляется открытый метод с теми же (или другими, если это удобно) входными параметрами для обращения к нему из других классов сборки. В принципе, можно сразу объявлять метод как открытый и обращаться к нему напрямую из других классов вашей сборки, но более правильно объявлять методы, обращающиеся к нативному неуправляемому коду, закрытыми, а внутри .NET приложения использовать открытые управляемые методы.

Импортировать все функции из DLL не нужно. Внимательно изучите Programmers Guide и выберите только те функции и структуры, которые понадобятся вам для решения вашей задачи.

Как правильно и какие типы импортировать? Поможет замечательный инструмент PInvoker, о котором мы уже писали, или любой другой аналогичный. Ну и конечно же, заголовочные h-файлы из скачанного архива с драйвером, а также руководство программиста.

3Программа «Реализация SPI с помощью микросхем FTDI»

Представляю вашему вниманию программу «Реализация SPI с помощью микросхем фирмы FTDI» – программное обеспечение, написанное под .NET и предназначенное для передачи данных из ПК и приёма данных в ПК с помощью микросхем фирмы FTDI (семейства FT22xx, FT23xx, FT42xx) по последовательному интерфейсу SPI. Это ПО позволит вам организовать обмен с ведомыми устройствами, которые поддерживают обмен данными по интерфейсу SPI.

Микросхемы FT2ххx и FT3xxx работают только в режиме ведущего устройства SPI (master).

С помощью данной программы вы сможете оперативно протестировать вашу микросхему в разных режимах работы. Подключившись логическим анализатором к выводам SK, DO, DI и CS микросхемы, можно наглядно увидеть, как влияют разные настройки на способ передачи данных.

Системные требования

  • Операционная система Windows XP и выше, в т.ч. Windows 10. Программа работает как с x86, так и с x64 операционными системами.
  • .NET Framework версии 3.5 SP1.
  • Наличие USB порта.

Установка и настройка программы «SPI с помощью микросхем FTDI»

Если программа запускается на компьютере с ОС Windows XP, необходимо убедиться в наличии установленной .NET Framework и, при её отсутствии, установить.

Скачать .NET Framework 3.5 SP1. После установки .NET Framework компьютер следует перезагрузить.

В Windows Vista, Windows 7 и 10 библиотеки .NET версии 3.5 присутствуют по умолчанию. Для установки на Windows 8 потребуется произвести дополнительные операции, а именно вручную включить возможность установки среды .NET.

Установка программы осуществляется копированием исполняемого файла с установочного носителя в нужное расположение.

При первом запуске программа проверит наличие необходимых для работы с микросхемами динамических библиотек D2XX.dll и FTCSPI.dll и, при их отсутствии, запишет их на компьютер в директорию C:\Temp.

Возможности программы

  • Передача данных из файла или введённого вручную массива байтов из ведущего устройства (микросхемы FTDI) к ведомому устройству, реализующему интерфейс SPI.
  • Приём данных от ведомого устройства.
  • Циклический приём данных заданное количество раз и в бесконечном цикле.
  • Изменение настроек работы SPI, а также частотно-временных характеристик приёма и передачи «на ходу». Реализация различных режимов работы интерфейса SPI.
  • Сохранение принятых данных в файл (текстовый или двоичный).

Работа с программой "SPI via FTDI"

При запуске программа определяет наличие подключённых к системе поддерживаемых устройств FTDI и создаёт для каждого устройства свою вкладку. Если после запуска программы были подключены новые устройства FTDI, можно обновить список устройств, нажав кнопку с синей стрелкой (Обновить).

Внешний вид главного окна программы «SPI с помощью FTDI»
Внешний вид главного окна программы «SPI с помощью FTDI»

Выбор настроек осуществляется выбором желаемых параметров в левой панели главного окна программы. Каждое устройство конфигурируется независимо.

Подключение к устройству FTDI осуществляется нажатием на кнопку в заголовке вкладки. Отключение – нажатием на ту же кнопку. Возможно одновременное подключение к нескольким устройствам.

Передача данных возможна тремя способами: выбором файла (кнопка с иконкой папки), отправкой произвольной последовательности байтов (в поле Преамбула при активном флажке), а также отправка преамбулы, а затем выбранного файла, если выбраны оба варианта. Передача данных осуществляется нажатием на кнопку Записать.

Приём данных от ведомого устройства осуществляется нажатием на кнопку Прочитать. Если в поле справа от кнопки введено число, отличное от 1, приём будет осуществлён соответствующее число раз; если указан "0", то чтение будет продолжаться бесконечно (до принудительной остановки).

При чтении все принятые данные автоматически сохраняются в файл (текстовый или двоичный, по выбору пользователя) в директорию с программой. Открытие файла происходит по нажатию на кнопку Открыть.

Данная программа использует только базовые возможности микросхем FTDI. Например, вы не сможете назначить несколько пинов Chip Select (используется только первый CS, см. таблицы выше), не сможете использовать выводы GPIOH. Т.е., сможете подключить только одно ведомое устройство SPI.

Вы можете скачать программу "SPI via FTDI" по ссылке ниже. Пишите свои замечания и отзывы о работе с программой в комментариях или мне на электронную почту.

Скачать вложения:

Последнее изменениеСуббота, 28 Январь 2017 22:09
(5 голосов)
Прочитано 1723 раз

Поделиться

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

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены