APA102 – светодиоды со встроенным драйвером и SPI интерфейсом

Views: 3254


ledAPA102

В 2014 году фирма Shenzhen Led Color Optoelectronic Co., Ltd http://www.szledcolor.com/ начала производство светодиодов на драйвере APA102. Это серия так называемых светодиодов со встроенным драйвером. Основной особенностью этих светодиодов, что в них применен упрощенный вид SPI интерфейса, шина данных и тактовая шина. Особенностью драйвера, это встроенный в данный драйвер, это 5 битовый регистр общей яркости, т.е. эти светодиоды уже наиболее близко подошли к настоящим драйверам светодиодных экранов. Максимальная тактовая частота заявленная производителем 1,2 МГц, первые испытания на ленточки длиной из 30 светодиодов, подаренных мне производителем, показали довольно внушительные результаты, на тестовом столе они нормально работают на тактовой в 2,5 МГц. Если их сравнивать с такими светодиодами как WS2812B , то по скорости выигрыш более чем в 5 раз (на 2,5 МГц)!!!

У WS2812B проблема в том, что чем больше длин цепочки, тем уменьшается скорость передачи, это связано с тем, что необходимо формировать импульс сброса такой длины, чтобы его времени хватило на распространения через всю группу светодиодов.

По мере дальнейшей разработки конструкций, протестирую максимальную тактовую на большем количестве светодиодов, чтобы определить реальные характеристики.


ФИЗИЧЕСКИЕ РАЗМЕРЫ

Cat_APA102_01

 

Светодиоды упаковываются в стандартный SMD 5050. Расположение выводов сделано грамотно, для подвода питания и прокладки шины данных и синхронизации.

Какая больше всего особенность меня поразила, что на ленточках нет не единого блокирующего конденсатора по питанию, и все работает. Тут только можно сказать Браво разработчикам чипов. И что самое главное (на что страдают WS2812B) входные сигналы – ТТЛ логики, т.е я подключил к контроллеру, с 3,3 вольтовым питанием, ленточку, работает идеально (лента питается от 5 вольт).


Управление Светодиодом “по двум проводам”

Принцип управления прост, тактовая шина Clock проходит напрямую через драйвер светодиода (внутри используется повторитель), задержка на передачу тактовой, скажем так минимальная. По шине DATA принцип работы следующий, если на вход поступило от 4 последовательных байт (32 бита) с нулями, то драйвер переключается в режим приема. Если в режиме приема первый байт “0” то он работает как ретранслятор передает нулевые байты на выход, тем самым инициализируя следующие драйверы светодиодов.

Если следующий байт не нулевой и самое главное в нем должны быть 7, 6, 5 бит = “1”, это значит, что эти следующие 4 байта данных будут “поглощены” этим драйверов, при этом в этот момент на выходе он также формирует нулевые байты. Если следующие 4 байта тоже несут информацию (первый байт не равен нулю и имеет три единицы в старших битах), то они теперь будут на прямую транслироваться на выход.

Итог. Для управления светодиодами в цепочке, необходимо:

  1. передать в начале 4 байта синхронизации.
  2. передавать данные по 4 байта на каждый светодиод который есть в цепочке.
Графически это можно представить так:

cat_sinh

 


Программирование

В этом разделе я опишу вариант на котором я остановился, для управления этими светодиодами. Скорость на которую рассчитаны APA102 позволяют на них строить небольшие видеоэкраны. Предлагаемый вариант для такого видео экрана. Массив для передачи удобно формировать так:

#define height  1          // высота дисплея, в настоящем примере просто полоска
#define width  31          // длина дисплея, 30 светодиодов + 1 "синхро байт" (первые 4 байта всегда нули, это Start Frame)
#define SRGB    4          // глубина дисплея яркость, синий, зеленый, красный
// для удобства описания выбранного цвета
#define BRI     0          // задание яркости 0b111xxxxx где х - яркость
#define CBL     1          // адрес для синего цвета
#define CGR     2          // адрес для зеленого
#define CRE     3          // адрес для красного

volatile unsigned char APADISP[height][width][SRGB];    // массив яркостных режимов

Для инициализации массива удобно применить цикл:

// инициализация массивов
    brightness=brightness|0b11100000;       // настройка регистра яркости
// загрузка буфера для тест
    for (cyhei=0;cyhei<height;cyhei++)      // высота
    {
        for (cywid=0;cywid<width;cywid++)   // количество светодиодов в строке
        {
            for (cyrgb=0;cyrgb<SRGB;cyrgb++)
            {
                if(!cyhei && !cywid)APADISP[cyhei][cywid][cyrgb]=0;     // первые 4 байта инициализация всегда нулями.
                else
                if (!cyrgb)APADISP[cyhei][cywid][cyrgb] = brightness;   // каждый 0 байт загрузка параметра яркость
                else APADISP[cyhei][cywid][cyrgb] = 0;                  // установка яркости в 0
            }
        }
    }

Один из вариантов загрузки массива в SPI2 модуль, для PIC32:

            while(SPI2STATbits.SPITBF);
            SPI2BUF=0x0; // start frame
            while(SPI2STATbits.SPITBF);
            SPI2BUF=0x0; //
            while(SPI2STATbits.SPITBF);
            SPI2BUF=0x0; //
            while(SPI2STATbits.SPITBF);
            SPI2BUF=0x0; //
            
            for (scikl=0;scikl<LENDIS;scikl++)
            {
                while(SPI2STATbits.SPITBF);
                SPI2BUF=brightness;             // Global
                while(SPI2STATbits.SPITBF);
                SPI2BUF=BLUELED[scikl];         // transmit BLUE
                while(SPI2STATbits.SPITBF);
                SPI2BUF=GREENLED[scikl];        // transmit GREEN
                while(SPI2STATbits.SPITBF);
                SPI2BUF=REDLED[scikl];          // transmit RED
            }

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

Cat_APA102_02


Схема соединения светодиодов

Cat_APA102_03

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

Cat_APA102_04

Кадр синхронизации отличается от кадра данных, тем, что первый байт равен “0”.

Видео тестирования ленточки из 30 светодиодов, тактовая 2,5 МГц

 


Габаритные размеры светодиодных лент

Cat_APA102_05

Внешний вид соединителей идущих в комплекте с лентами

Cat_APA102_06

Описание на ленту:

Значок

APA102 - светодиоды со встроенным драйвером и SPI интерфейсом 1,015.55 KB 490 downloads

APA102 - светодиоды со встроенным драйвером и SPI...
Значок

APA102 - каталог 6.05 MB 513 downloads

APA102 - каталог ...

пример использования светодиодов на драйвере APA102

 



Это может быть интересно


  • Altium Designer my setup system and project structureAltium Designer my setup system and project structure
    Views: 645 Используйте только последнее обновление!!! Updates https://catcatcat.d-lan.dp.ua/altium-designer-my-libraries-project-templates-system-settings-by-catcatcat-v23-09/        Тут хочу поделиться как я настраиваю Altium Designer и как я использую файлы DXPPreferences.DXPPrf для быстрой конфигурации и получения …
  • Бегущие огни (ch-bo-36)Бегущие огни (ch-bo-36)
    Views: 2419 Проект на PIC-микроконтроллере PIC16F648A. Количество каналов 36. Для индикации используется подключение по матрице 6х6. Расположение светодиодов в одну линию. Все эффекты написаны для возможности увеличения количества светодиодов. Рекомендуется …
  • Altium Designer – создание рисунков на печатной платеAltium Designer – создание рисунков на печатной плате
    Views: 3246   Для создание рисунков на печатной платы в Altium Designer можно использовать возможность использовать в Altium Designer сторонних скриптов. Мне возможность эта очень понравилась и я решил её расшарить …
  • MPLAB® Harmony – или как это просто! Часть 2.MPLAB® Harmony – или как это просто! Часть 2.
    Views: 2664 Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из …
  • Ultrasonic Level Meters – ULM –53LUltrasonic Level Meters – ULM –53L
    Views: 709 Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики …
  • Датчик контроля протечки воды ch-c0020Датчик контроля протечки воды ch-c0020
    Views: 1937 Как здорово летом под теплым дождем с тобою вдвоем оказаться. Как классно по лужам бежать босиком, с тобою играть и смеяться! Но совсем грустно оказаться под таким дождем, который течет с …
  • Проект с использованием MCC часть 08Проект с использованием MCC часть 08
    Views: 1014 И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, …
  • Arduino LCD + STONE STVI056WT-01 + Strain gaugeArduino LCD + STONE STVI056WT-01 + Strain gauge
    Views: 441 Author li grey email: greyli1987@outlook.com The strain assessment instrument is used to assess the degree of corresponding muscle strain by obtaining the muscle surface action potential through silver …
  • LCD драйвер – UC1601sLCD драйвер – UC1601s
    Views: 1569 http://svetomuzyka.narod.ru/project/UC1601s.html Читайте обновление на http://catcatcat.d-lan.dp.ua/?page_id=178 В данный момент можно приобрести в ООО “Гамма” несколько типов индикаторов на драйвере UC1601s. RDX0048-GC, RDX0077-GS, RDX0154-GC и RDX0120-GC выполнены по технологии COG.
  • My libraries for Altium DesignerMy libraries for Altium Designer
    Views: 3849 Attention, this version of the database is outdated today. See updates in articles https://catcatcat.d-lan.dp.ua/altium-designer-my-setup-system-and-project-structure  and https://catcatcat.d-lan.dp.ua/altium-designer-my-setup-system-and-project-structure-v23-2/    My libraries for Altium designer  (Updated V – 29/05/2022) (c) 2021 …



 

Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее