Опубликовано: 27.08.2018
Мы уже не раз обсуждали работу с интерфейсом SPI, реализуя его с помощью Arduino. На этот раз рассмотрим этот интерфейс на примере работы с микросхемами фирмы FTDI, а именно FT2232 и FT4232, которые пользуются огромной популярностью среди разработчиков радиоэлектронной аппаратуры из-за своей дешевизны, надёжности и хорошей поддержки со стороны производителя.
FTDI выпускает микросхемы с суффиксом H (например, FT2232H) – выскоскоростные, с D (FT2232D) – низкоскоростные.
Для работы с микросхемами вам понадобится отладочная или любая другая плата со всей необходимой обвязкой. Для примера привожу плату, которую я использую для некоторых проектов.
Отладочная плата с микросхемой FT2232DДля тестов вы можете купить готовую плату у наших китайских друзей или сделать плату самому, используя типовое решение, описанное в Datasheet на микросхемы.
На двух иллюстрациях ниже, взятых из Datasheet, приводится назначение ножек микросхем FT2232D (низкоскоростной) и FT2232H (высокоскоростной) при работе в разных режимах, в том числе SPI (см. столбец MPSSE).
Ножки микросхем, обозначенные как GPIOL («нижние» порты ввода-вывода GPIO), могут работать в качестве Chip Select, т.е., как видно, к микросхемам FT2232D и FT2232H можно подключить до 5 ведомых устройств SPI к одному каналу.
Назначение выводов микросхемы FT2232D при работе в разных режимахДоступны также «верхние» порты ввода-вывода GPIOH: 4 у микросхемы FT2232D и 8 – у микросхемы FT2232H. Эти ножки также можно использовать в качестве чип-селекта, или для иных целей.
Назначение выводов микросхемы FT2232H при работе в разных режимахЕсли вы хотите реализовать программное обеспечение, использующее микросхемы 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-файлы из скачанного архива с драйвером, а также руководство программиста.
Представляю вашему вниманию программу «Реализация SPI с помощью микросхем фирмы FTDI» или "SPI via FTDI" – программное обеспечение, написанное под .NET и предназначенное для передачи данных из ПК и приёма данных в ПК с помощью микросхем фирмы FTDI (семейства FT22xx, FT23xx, FT42xx) по последовательному интерфейсу SPI. Это ПО позволит вам организовать обмен данными с устройствами, которые работают по интерфейсу SPI .
Микросхемы FT2ххx и FT3xxx работают только в режиме ведущего устройства SPI (master).
С помощью данной программы вы сможете оперативно протестировать вашу микросхему в разных режимах работы. Подключившись логическим анализатором к выводам SK, DO, DI и CS микросхемы, можно наглядно увидеть, как влияют разные настройки на способ передачи данных.
Если программа запускается на компьютере с ОС 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 и создаёт для каждого устройства свою вкладку. Если после запуска программы были подключены новые устройства FTDI, можно обновить список устройств, нажав кнопку с синей стрелкой ( Обновить ).
Внешний вид главного окна программы «SPI с помощью FTDI»Выбор настроек осуществляется выбором желаемых параметров в левой панели главного окна программы. Каждое устройство конфигурируется независимо.
Подключение к устройству FTDI осуществляется нажатием на кнопку в заголовке вкладки. Отключение – нажатием на ту же кнопку. Возможно одновременное подключение к нескольким устройствам.
Передача данных возможна тремя способами: выбором файла (кнопка с иконкой папки), отправкой произвольной последовательности байтов (в поле Преамбула при активном флажке), а также отправка преамбулы, а затем выбранного файла, если выбраны оба варианта. Передача данных осуществляется нажатием на кнопку Записать .
Приём данных от ведомого устройства осуществляется нажатием на кнопку Прочитать . Если в поле справа от кнопки введено число, отличное от 1, приём будет осуществлён соответствующее число раз; если указан "0", то чтение будет продолжаться бесконечно (до принудительной остановки).
При чтении все принятые данные автоматически сохраняются в файл (текстовый или двоичный, по выбору пользователя) в директорию с программой. Открытие файла происходит по нажатию на кнопку Открыть .
Данная программа использует только базовые возможности микросхем FTDI. Например, вы не сможете назначить несколько пинов Chip Select (используется только первый CS, см. таблицы выше), не сможете использовать выводы GPIOH . Т.е., сможете подключить только одно ведомое устройство SPI.
Скачать программу можно по любой из ссылок ниже. Пишите свои замечания и отзывы о работе с программой в комментариях или мне на электронную почту.