Перейти к содержанию

MAX7219 и MAX7221 — драйверы светодиодных индикаторов на 8 разрядов

MAX7219 сам ведёт динамическую индикацию восьми разрядов семисегментного индикатора или матрицы из 64 светодиодов: микроконтроллер только передаёт 16-битные слова по трём проводам, а ток всех сегментов задаёт один резистор. Разбираем по даташиту Analog Devices (Maxim) выводы, формат посылки, регистры, выбор резистора RSET, нагрев корпуса и соединение микросхем цепочкой.

Обновлено Редакция GAW

MAX7219 и его вариант MAX7221 — драйверы светодиодных индикаторов с общим катодом на 8 разрядов. Внутри — статическое ОЗУ 8×8 (по байту на разряд), декодер BCD Code B, схема мультиплексирования, восемь источников тока сегментов и восемь ключей разрядов. По даташиту один драйвер управляет семисегментным индикатором до 8 разрядов, линейной шкалой или 64 отдельными светодиодами — отсюда популярные модули с матрицей 8×8. Любой разряд можно перезаписать, не трогая остальные.

Коротко

  • Питание — 4,0–5,5 В; в режиме выключения не больше 150 мкА, при всех горящих сегментах и 40 мА на сегмент — 330 мА типично.
  • Нагрузка — индикаторы с общим катодом: 8 разрядов по 8 сегментов (7 сегментов и точка), до 40 мА на сегмент.
  • Интерфейс — DIN, CLK и LOAD (у MAX7221 — CS), 16-битные слова, такт до 10 МГц; выход DOUT для цепочки.
  • Яркость — резистором RSET и 16 ступенями ШИМ: от 1/32 до 31/32 у MAX7219, от 1/16 до 15/16 у MAX7221.
  • Корпуса — узкий DIP-24 (пластмассовый и керамический CERDIP) и широкий SO-24; диапазоны 0…+70 °C и −40…+85 °C.

Распиновка

MAX7219, вид сверху: 1 DIN, 2 DIG 0, 3 DIG 4, 4 GND, 5 DIG 6, 6 DIG 2, 7 DIG 3, 8 DIG 7, 9 GND, 10 DIG 5, 11 DIG 1, 12 LOAD (CS у MAX7221), 13 CLK, 14 SEG A, 15 SEG F, 16 SEG B, 17 SEG G, 18 ISET, 19 V+, 20 SEG C, 21 SEG E, 22 SEG DP, 23 SEG D, 24 DOUTMAX72191DIN2DIG 03DIG 44GND5DIG 66DIG 27DIG 38DIG 79GND10DIG 511DIG 112LOAD13CLK14SEG A15SEG F16SEG B17SEG G18ISET19V+20SEG C21SEG E22SEG DP23SEG D24DOUTвид сверху
MAX7219 и MAX7221 в корпусе DIP-24 или SO-24, вид сверху; у MAX7221 вывод 12 называется CS
ВыводОбозначениеНазначение
1DINвход данных: бит вдвигается в 16-битный сдвиговый регистр по фронту CLK
2, 11, 6, 7, 3, 10, 5, 8DIG 0, DIG 1 … DIG 7ключи разрядов: принимают ток общего катода; номера идут не по порядку
4, 9GNDобщий провод; подключают оба вывода
12LOAD (MAX7219), CS (MAX7221)по фронту защёлкиваются последние 16 бит; у MAX7221 такты принимаются только при низком CS
13CLKтактовый вход, до 10 МГц
14, 16, 20, 23, 21, 15, 17SEG A, SEG B … SEG Gисточники тока сегментов, к анодам индикатора
22SEG DPсегмент десятичной точки
18ISETчерез резистор RSET к питанию V+ — задаёт пиковый ток сегментов
19V+питание +5 В
24DOUTвыход для цепочки: данные со входа DIN через 16,5 такта; в высокоимпедансное состояние не переходит

Выключенные выходы у двух микросхем ведут себя по-разному: MAX7219 подтягивает выходы разрядов к V+, а выходы сегментов — к общему проводу, у MAX7221 те и другие переходят в высокоимпедансное состояние.

Как работает индикация

В каждый момент открыт ключ одного разряда, а источники тока зажигают в нём сегменты из байта этого разряда; затем драйвер переходит к следующему. Это динамическая индикация, только микроконтроллер в ней не участвует. При восьми разрядах частота полного обхода — 800 Гц типично (от 500 до 1300 Гц), то есть каждый разряд горит примерно 1/8 времени. Если разрядов меньше, частота растёт как 8·fOSC/N, где N — число сканируемых разрядов. Как устроены сами индикаторы и чем общий катод отличается от общего анода, рассказано в статье «Семисегментные индикаторы».

Ключ разряда принимает ток всех горящих в нём сегментов — до восьми токов сегмента сразу, то есть 320 мА при 40 мА на сегмент. Даташит гарантирует для ключа разряда не меньше 320 мА при падении 0,65 В, абсолютный предел — 500 мА на разряд и 100 мА на сегмент. Содержимое регистров разрядов сохраняется, пока питание выше 2 В (типичное значение).

Последовательный интерфейс

Микроконтроллер передаёт 16-битные слова старшим битом вперёд (первым идёт D15):

БитыD15–D12D11–D8D7–D0
Назначениене важны (X)адрес регистраданные

Бит со входа DIN вдвигается по фронту CLK (переходу из нуля в единицу), на выход DOUT данные выдвигаются по спаду. Фронт LOAD (или CS) переписывает 16 бит из сдвигового регистра в регистр разряда или управления. По даташиту LOAD должен подняться одновременно с 16-м фронтом CLK или после него, но до следующего фронта — иначе данные теряются.

ПараметрОбозначениеЗначениеПримечание
Период CLKtCPот 100 нсотсюда предел 10 МГц
Длительность единицы и нуля CLKtCH, tCLот 50 нс
Установка и удержание DINtDS, tDHот 25 нс и от 0 нсотносительно фронта CLK
От спада CS до фронта CLKtCSSот 25 нстолько MAX7221
От фронта LOAD до следующего фронта CLKtLDCKот 50 нстолько MAX7219
От фронта CLK до фронта LOAD или CStCSHот 0 нс
Длительность единицы на LOAD или CStCSWот 50 нс
Задержка выхода DOUTtDOдо 25 нспри нагрузке 50 пФ
От записи данных до сегментовtDSPDдо 2,25 мс

Пороги входов DIN, CLK, LOAD и CS при питании 5 В ± 10 % — не меньше 3,5 В для единицы и не больше 0,8 В для нуля, гистерезис — 1 В типично. На временной диаграмме (рис. 1 даташита) CLK перед первым тактом находится в нуле, DIN захватывается по фронту, а DOUT меняется по спаду — это режим 0 шины SPI; как устроена шина и чем режимы отличаются, рассказано в статье «Интерфейс SPI».

MAX7219 и MAX7221. По даташиту микросхемы отличаются двумя вещами. Первая — интерфейс: MAX7219 вдвигает бит по каждому фронту CLK независимо от LOAD, а MAX7221 принимает и выдаёт данные только при низком CS и поэтому полностью совместим с SPI. На общей шине с другими ведомыми сдвиговый регистр MAX7219 заполняется чужими данными, но записи не произойдёт, пока не поднимется LOAD. Вторая — у MAX7221 ограничена скорость нарастания тока сегментов: 10–50 мА/мкс, типично 20 мА/мкс, — это снижает электромагнитные помехи.

У обеих микросхем выход DOUT по даташиту никогда не переходит в высокоимпедансное состояние, даже при высоком CS у MAX7221. Поэтому DOUT подключают только ко входу DIN следующего драйвера, а не к общей линии MISO.

Регистры

Адрес регистра — биты D11–D8. Старшая тетрада D15–D12 не важна, поэтому в даташите коды записаны как 0xX0 и т. д.; обычно в неё пишут нули.

РегистрD11–D8Код
No-Op (нет операции)00000xX0
Digit 0 … Digit 7 (разряды)0001…10000xX1…0xX8
Decode Mode (декодирование)10010xX9
Intensity (яркость)10100xXA
Scan Limit (число разрядов)10110xXB
Shutdown (выключение)11000xXC
Display Test (проверка индикатора)11110xXF

Всего 14 адресуемых регистров; коды 0xXD и 0xXE в карте не используются. После подачи питания все регистры управления сброшены, индикатор погашен, а микросхема находится в режиме выключения. Пока её не настроили, она сканирует один разряд, не декодирует данные и держит минимальную яркость, поэтому даташит требует запрограммировать драйвер до использования индикатора.

Декодирование

Каждый бит регистра Decode Mode относится к своему разряду: 1 включает декодер Code B, 0 — прямое управление сегментами. Примеры из даташита: 0x00 — без декодирования во всех разрядах, 0x01 — декодирование только в разряде 0, 0x0F — в разрядах 0–3, 0xFF — во всех.

С декодером учитываются только биты D3–D0 регистра разряда, биты D4–D6 игнорируются, а D7 зажигает десятичную точку (1 — горит):

D3–D00x0…0x90xA0xB0xC0xD0xE0xF
Символцифры 0–9«−»EHLPпусто

Без декодера биты D7–D0 соответствуют сегментам DP, A, B, C, D, E, F, G. Например, цифра 0 без декодера — сегменты A–F, код 0x7E. В матрице 8×8 каждый регистр разряда — это ряд из восьми светодиодов, по одному биту на светодиод, а декодирование выключают (0x00). Какая сторона матрицы подключена к разрядам, а какая к сегментам, зависит от разводки модуля.

Яркость

Пиковый ток задаёт резистор RSET, а среднюю яркость — встроенный ШИМ, которым управляют биты D3–D0 регистра Intensity. Он меняет коэффициент заполнения в 16 ступеней:

КодMAX7219MAX7221КодMAX7219MAX7221
0xX01/32 (минимум)1/16 (минимум)0xX817/329/16
0xX13/322/160xX919/3210/16
0xX25/323/160xXA21/3211/16
0xX37/324/160xXB23/3212/16
0xX49/325/160xXC25/3213/16
0xX511/326/160xXD27/3214/16
0xX613/327/160xXE29/3215/16
0xX715/328/160xXF31/32 (максимум)15/16 (максимум)

У MAX7221 два старших кода дают одно и то же — 15/16. Минимальная пауза между разрядами — 1/32 периода, поэтому даже на максимуме заполнение у MAX7219 не доходит до 100 %.

Число разрядов

Регистр Scan Limit задаёт, сколько разрядов сканировать: код 0xX0 — только разряд 0, 0xX1 — разряды 0 и 1 и так далее до 0xX7 — все восемь. Чем меньше разрядов, тем дольше горит каждый из них и тем ярче индикатор. Поэтому даташит не рекомендует гасить этим регистром часть индикатора, например ведущие нули: для этого в разряд пишут пустой символ (0xF с декодером или 0x00 без него).

Выключение и проверка

Регистр Shutdown: D0 = 0 — режим выключения, D0 = 1 — работа. В выключении генератор сканирования останавливается, индикатор гаснет, а данные во всех регистрах сохраняются. Ток потребления не больше 150 мкА при 25 °C, если логические входы на уровне общего провода или питания. Выход из выключения занимает типично меньше 250 мкс, а настраивать регистры можно и в выключенном состоянии. Чередуя выключение и работу, можно мигать индикатором.

Регистр Display Test: D0 = 1 зажигает все светодиоды — сканируются 8 разрядов с заполнением 31/32 (15/16 у MAX7221) поверх всех настроек, включая выключение. Содержимое регистров при этом не меняется, а сама микросхема остаётся в режиме проверки, пока в регистр не запишут 0.

Ток сегментов и резистор RSET

Резистор RSET включают между выводами V+ и ISET. Ток сегмента примерно в 100 раз больше тока, втекающего в ISET, а наибольший рекомендованный ток сегмента — 40 мА. Минимальное сопротивление — 9,53 кОм, но 40 мА оно даёт лишь при определённом напряжении на выходе сегмента: при питании 5 В, температуре 25 °C и выходе на 1 В ниже питания даташит гарантирует от 30 до 45 мА (40 мА типично), разброс между сегментами — 3 % типично. Чем ниже напряжение на выходе, тем больше ток: по графику на с. 4 даташита при RSET = 10 кОм это около 40 мА при 4 В на выходе и около 48 мА при 2 В. Поэтому RSET выбирают по прямому напряжению светодиода VLED при нужном токе (табл. 11 даташита, сопротивления в килоомах):

ISEG, мАVLED = 1,5 В2,0 В2,5 В3,0 В3,5 В
4012,211,811,010,69,69
3017,817,115,815,014,0
2029,828,025,924,522,6
1066,763,759,355,451,2

Резистор может быть и переменным — для ручной регулировки яркости. Для тока сегмента больше 40 мА нужны внешние ключи разрядов, и MAX7219 работает лишь контроллером; если сегменты питают внешние источники тока, даташит советует RSET = 47 кОм, чтобы не тратить мощность. В его примере (рис. 2) разряды индикаторов высотой 2,3 дюйма с прямым напряжением сегмента около 8 В коммутируют внешние транзисторы, а последовательно с точкой (около 4,2 В) включён стабилитрон 5,6 В. AN1196 добавляет, что сегменты из трёх кристаллов и больше от 5 В напрямую не работают, а описанные в нём схемы с внешними ключами рассчитаны на индикаторы с общим анодом. Как выбирают ток и прямое напряжение светодиода, рассказано в статье «Драйвер светодиода».

Мощность и нагрев

Верхнюю границу рассеиваемой мощности даташит считает так:

PD=V+⋅8 мА+(V+−VLED)⋅DUTY⋅ISEG⋅N,P_D = V_+ \cdot 8\ \text{мА} + (V_+ - V_\text{LED}) \cdot \text{DUTY} \cdot I_\text{SEG} \cdot N,

где DUTY — заполнение из регистра Intensity, N — число горящих сегментов (в худшем случае 8). Температуру кристалла считают как TJ = TA + PD · θJA, предел — 150 °C. Тепловое сопротивление (табл. 12): 75 °C/Вт у узкого DIP-24, 85 °C/Вт у широкого SO-24, 80 °C/Вт у CERDIP. В примере даташита при 40 мА, 8 сегментах, заполнении 31/32, VLED = 1,8 В и питании 5,25 В получается 1,11 Вт, и наибольшая температура среды — 66,7 °C для DIP, 55,6 °C для SO и 61,2 °C для CERDIP. То есть при полном токе и максимальной яркости весь диапазон до +85 °C недоступен.

Из той же формулы следует оценка тока от источника: около 8 мА + DUTY · ISEG · N, при 40 мА и 31/32 — около 318 мА, близко к типичным 330 мА из таблицы характеристик. Это не верхняя граница: 8 мА — максимум только с отключённым RSET, а ток сегмента при одном и том же RSET лежит в пределах 30–45 мА, то есть может быть до 12,5 % больше номинала. Источник питания выбирают по 330 мА на микросхему с запасом.

Питание и разводка

Даташит требует:

  • Конденсаторы — электролитический 10 мкФ и керамический 0,1 мкФ между V+ и GND как можно ближе к микросхеме: ключи разрядов коммутируют пиковые токи в сотни миллиампер, и без них пульсирует питание.
  • Короткие провода — микросхему ставят рядом с индикатором, чтобы уменьшить влияние индуктивности проводов и помехи.
  • Оба вывода GND — 4 и 9 — соединяют с общим проводом.
  • Питание — 4,0–5,5 В; для работы от 3 В даташит отсылает к MAX6951.

Цепочка из нескольких микросхем

Выход DOUT соединяют со входом DIN следующей микросхемы, а входы CLK и LOAD (CS) всех микросхем — параллельно. Как в любой цепочке сдвиговых регистров (см. «Каскадирование»), слово, отправленное первым, уходит дальше всех. Чтобы записать регистр в одной микросхеме, остальным посылают слово No-Op (0xX0XX). Пример из даташита: в цепочке из четырёх MAX7219, чтобы записать четвёртую, передают её слово и за ним три слова No-Op; по фронту LOAD данные защёлкиваются во всех микросхемах сразу, и первые три получают «нет операции». Для N микросхем LOAD поднимают после 16 · N тактов.

Выход DOUT — обычный КМОП-выход: не ниже V+ − 1 В при вытекающем токе 1 мА и не выше 0,4 В при втекающем 1,6 мА, поэтому он прямо управляет входом DIN соседней микросхемы. Но запас по времени в цепочке меньше, чем у одиночной микросхемы: DOUT меняется по спаду CLK, а следующий драйвер захватывает бит по фронту, через tCL. На 10 МГц это 50 нс — ровно задержка DOUT (до 25 нс) плюс установка DIN (от 25 нс), без запаса на провода, поэтому цепочку тактируют медленнее. Если число разрядов не кратно восьми, всем драйверам задают одинаковый Scan Limit, иначе индикаторы будут разной яркости: для 12 разрядов — по 6 на каждый драйвер, для 11 — тоже по 6, оставив один выход разряда свободным.

Пример расчёта

Модуль: матрица 8×8 из красных светодиодов, все восемь рядов сканируются, ток сегмента — 20 мА, прямое напряжение светодиода при этом токе по его даташиту — 2,0 В. Питание — 5 В, в худшем случае 5,5 В; корпус DIP-24; яркость — максимальная, 31/32.

  1. RSET. По табл. 11 для 20 мА и 2,0 В — 28,0 кОм; это значение есть в ряду E96. Если ставить резистор из ряда E24, берут ближайший больший — 30 кОм, и ток будет немного меньше 20 мА.
  2. Средний ток светодиода. Каждый ряд горит 1/8 времени, поэтому через светодиод течёт в среднем 20 мА · 31/32 / 8 ≈ 2,4 мА.
  3. Мощность при 5,5 В: PD = 5,5 · 0,008 + (5,5 − 2,0) · 31/32 · 0,020 · 8 = 0,044 + 3,5 · 0,155 ≈ 0,59 Вт.
  4. Нагрев. При +85 °C: TJ = 85 + 0,59 · 75 ≈ 129 °C — меньше 150 °C, запас есть; в корпусе SO-24 получится около 135 °C.
  5. Если поднять ток до 40 мА (RSET = 11,8 кОм), мощность вырастет до 0,044 + 3,5 · 0,31 ≈ 1,13 Вт, а наибольшая температура среды упадёт до 150 − 1,13 · 75 ≈ 65 °C для DIP и примерно 54 °C для SO.
  6. Питание. При 20 мА одна микросхема берёт около 8 + 155 ≈ 163 мА. Если заложить такой же разброс тока сегмента, как в таблице характеристик (до +12,5 %), получится около 0,18 А, поэтому на микросхему берут ≈ 0,2 А, на цепочку из четырёх модулей — 0,8 А.

Код инициализации

Пример для Arduino с библиотекой SPI: цепочка из нескольких драйверов, общий вывод LOAD. Регистры настраиваются в режиме выключения, выход из него — последним.

#include <SPI.h>

const uint8_t LOAD_PIN = 10;   // LOAD (MAX7219) or CS (MAX7221)
const uint8_t CHIPS = 4;       // devices chained DOUT -> DIN

// Register addresses, MAX7219/MAX7221 data sheet, Table 2
const uint8_t REG_NOOP = 0x00;
const uint8_t REG_DIGIT0 = 0x01;        // Digit 0..7 = 0x01..0x08
const uint8_t REG_DECODE_MODE = 0x09;
const uint8_t REG_INTENSITY = 0x0A;
const uint8_t REG_SCAN_LIMIT = 0x0B;
const uint8_t REG_SHUTDOWN = 0x0C;
const uint8_t REG_DISPLAY_TEST = 0x0F;

// The data sheet allows 10 MHz (tCP >= 100 ns), but in a chain the next chip gets
// DOUT one tCL after the falling edge: tDO (<= 25 ns) + tDS (>= 25 ns) = 50 ns = tCL
// at 10 MHz, zero margin for wiring. 4 MHz leaves 125 ns. Mode 0: DIN is sampled
// on the rising CLK edge, D15 first.
const SPISettings MAX72XX_SPI(4000000, MSBFIRST, SPI_MODE0);

// Write one register in chip `chip` (0 = nearest to the MCU); the others get No-Op.
void writeOne(uint8_t chip, uint8_t reg, uint8_t data) {
  SPI.beginTransaction(MAX72XX_SPI);
  digitalWrite(LOAD_PIN, LOW);
  for (int8_t i = CHIPS - 1; i >= 0; i--) {  // the first word sent ends up in the last chip
    SPI.transfer(i == chip ? reg : REG_NOOP);  // D15..D8: don't-care nibble + address
    SPI.transfer(i == chip ? data : 0x00);     // D7..D0
  }
  digitalWrite(LOAD_PIN, HIGH);  // rising edge latches 16 bits in every chip
  SPI.endTransaction();
}

// Write the same register in every chip of the chain.
void writeAll(uint8_t reg, uint8_t data) {
  SPI.beginTransaction(MAX72XX_SPI);
  digitalWrite(LOAD_PIN, LOW);
  for (uint8_t i = 0; i < CHIPS; i++) {
    SPI.transfer(reg);
    SPI.transfer(data);
  }
  digitalWrite(LOAD_PIN, HIGH);
  SPI.endTransaction();
}

void setup() {
  pinMode(LOAD_PIN, OUTPUT);
  digitalWrite(LOAD_PIN, HIGH);
  SPI.begin();
  // Power-up state: shutdown, one digit scanned, no decode, minimum intensity
  writeAll(REG_DISPLAY_TEST, 0x00);  // normal operation, not test mode
  writeAll(REG_SCAN_LIMIT, 0x07);    // scan digits 0..7
  writeAll(REG_DECODE_MODE, 0x00);   // no decode: one bit per LED (8x8 matrix)
  writeAll(REG_INTENSITY, 0x07);     // 15/32 on MAX7219, 8/16 on MAX7221
  for (uint8_t d = 0; d < 8; d++) writeAll(REG_DIGIT0 + d, 0x00);  // blank all rows
  writeAll(REG_SHUTDOWN, 0x01);      // leave shutdown last
  writeOne(0, REG_DIGIT0, 0x81);     // two corner LEDs in row 0 of the first chip
}

void loop() {}

Для семисегментного индикатора меняются три вещи: в Decode Mode пишут 0xFF, в регистры разрядов — цифры 0x00–0x09 (с битом 0x80 для точки), а гасят разряды кодом 0x0F — с включённым декодером 0x00 покажет «0», поэтому в цикле очистки тоже пишут 0x0F.

Типичные ошибки

  • Управление от 3,3 В. Единица на входах гарантирована от 3,5 В, а питание — не ниже 4,0 В. Сигнал 3,3 В ниже гарантированного порога, поэтому нужен преобразователь уровней. AN876 предлагает для систем на 3–3,3 В MAX6950/MAX6951, но они не подходят для многоразрядных индикаторов с общими сегментами, а из матриц 8×8 MAX6951 управляет только собранными из отдельных светодиодов (MAX6950 — никакими).
  • Индикатор не настроен после включения. Микросхема стартует в режиме выключения — ничего не горит; без записи Scan Limit работает только разряд 0.
  • Забытый режим проверки. Если в регистр Display Test попала единица, все светодиоды горят, пока туда не запишут 0. Поэтому инициализацию начинают с записи 0x00 в регистр 0xXF.
  • Гашение ведущих нулей через Scan Limit. Яркость оставшихся разрядов меняется; гасить нужно пустым символом.
  • Полный ток при одном–трёх разрядах. Ключи разрядов перегреваются; ток сегмента — не больше 10, 20 и 30 мА по табл. 9.
  • Индикатор с общим анодом. MAX7219 напрямую управляет только индикаторами с общим катодом.
  • Нет конденсаторов, подключён один GND, длинные провода. Импульсы тока разрядов дают пульсации питания и помехи — даташит требует 10 мкФ и 0,1 мкФ рядом с микросхемой и оба вывода GND.
  • LOAD не в тот момент. По даташиту LOAD должен подняться одновременно с 16-м фронтом CLK или после него, но до следующего, 17-го, иначе слово теряется; в цепочке — после 16 · N-го фронта и до следующего.
  • Разный Scan Limit в цепочке. Индикаторы с меньшим числом разрядов светятся ярче.

Другие драйверы — в разделе «Драйверы».

Частые вопросы

Какой резистор RSET поставить на MAX7219?

По таблице 11 даташита: при прямом напряжении светодиода 2 В для тока сегмента 20 мА нужен 28,0 кОм, для 10 мА — 63,7 кОм, для 40 мА — 11,8 кОм. Резистор включают между выводом ISET и питанием V+. Для наибольшего рекомендованного тока 40 мА по той же таблице берут от 9,69 до 12,2 кОм в зависимости от прямого напряжения; 9,53 кОм — нижний предел для любого светодиода. С красными светодиодами на 9,53 кОм ток выйдет больше 40 мА: 40 мА при этом сопротивлении даташит указывает для выхода на 1 В ниже питания.

Работает ли MAX7219 от 3,3 В?

Нет: питание по даташиту — 4,0–5,5 В, а единица на входах DIN, CLK и LOAD гарантирована только от 3,5 В. С микроконтроллером на 3,3 В сигналы поднимают преобразователем уровней или берут MAX6950/MAX6951 с питанием 2,7–5,5 В и порогом единицы 2,4 В. Но они, по AN876, не работают с многоразрядными индикаторами, у которых сегменты всех разрядов соединены внутри.

Чем MAX7219 отличается от MAX7221?

Даташит называет два отличия: у MAX7221 скорость нарастания тока сегментов ограничена (10–50 мА/мкс) для снижения помех, и интерфейс полностью совместим с SPI — такты принимаются только при низком CS. Ещё выключенные выходы MAX7221 переходят в высокоимпедансное состояние, а шкала яркости у него 1/16–15/16 вместо 1/32–31/32. Расположение выводов и карта регистров одинаковые (вывод 12 — LOAD или CS).

Сколько MAX7219 можно соединить цепочкой?

Даташит предела не задаёт: каждая микросхема удлиняет посылку на 16 тактов, данные проходят со входа DIN на выход DOUT через 16,5 такта. Утилита Maxim из AN2782 управляет цепочкой до 16 драйверов. На практике ограничивают ток питания — около 330 мА на микросхему при 40 мА на сегмент и всех горящих светодиодах — и время записи всей цепочки.

Почему после включения индикатор не горит?

После подачи питания MAX7219 находится в режиме выключения: регистры управления сброшены, индикатор погашен, а без настройки драйвер сканирует один разряд без декодирования с минимальной яркостью. Нужно задать число разрядов (0x07 в регистр 0xXB для восьми), режим декодирования, яркость и последним записать 0x01 в регистр Shutdown (0xXC).

Источники

  1. Analog Devices (Maxim Integrated). MAX7219/MAX7221: Serially Interfaced, 8-Digit LED Display Drivers (19-4452, Rev. 6, August 2021) — с. 1 — General Description, Features, Ordering Information, Pin Configuration; с. 2–3 — Absolute Maximum Ratings и Electrical Characteristics: питание 4,0–5,5 В, ток 150 мкА в выключении, 8 мА без RSET и 330 мА при 40 мА на сегмент, сканирование 500–1300 Гц, ток разряда от 320 мА, ток сегмента 30–45 мА при выходе V+ − 1 В, пороги входов, временные параметры интерфейса; с. 4 — Typical Operating Characteristics: ток сегмента в зависимости от напряжения на выходе при RSET 10, 20 и 40 кОм; с. 5 — Pin Description; с. 6 — рис. 1 (временная диаграмма), табл. 1 (формат слова), MAX7219/MAX7221 Differences, Serial-Addressing Modes, Shutdown Mode; с. 7–9 — Initial Power-Up, табл. 2 (карта регистров), табл. 3, Decode-Mode Register и табл. 4–6, Intensity Control и табл. 7, Scan-Limit Register и табл. 8; с. 10 — табл. 9 (ток при 1–3 разрядах), Display-Test Register и табл. 10, No-Op Register, Supply Bypassing and Wiring (10 мкФ и 0,1 мкФ), Selecting RSET Resistor; с. 11 — табл. 11 (RSET в зависимости от тока и прямого напряжения), Computing Power Dissipation, табл. 12 (тепловое сопротивление), Cascading Drivers; с. 12 — рис. 2 (индикаторы 2,3 дюйма с внешними ключами); с. 13 — рис. 3 (цепочка из двух драйверов)
  2. Maxim Integrated. Application Note 876: Migrating from the MAX7219 and MAX7221 to the MAX6950 and MAX6951 LED Drivers, 17 July 2002 — табл. 1 — питание 4–5,5 В против 2,7–5,5 В, пороги входов 0,8 и 3,5 В против 0,4 и 2,4 В, интерфейс до 10 Мбит/с, выход DOUT для каскада, 8 разрядов или 64 светодиода, матрицы 8×8 в корпусе и из отдельных светодиодов, 150 мкс на разряд; текст — MAX6950/MAX6951 для систем на 3–3,3 В, ограничение по индикаторам с общими сегментами
  3. Maxim Integrated. Application Note 1196: Using the MAX7219/7221 to Drive Higher Voltage or Current, 9 September 2002 — до 40 мА на сегмент при питании 4–5,5 В; сегменты из трёх и более кристаллов не работают напрямую от 5 В; ток разряда — восемь токов сегмента; внешние ключи требуют индикаторов с общим анодом
  4. Maxim Integrated. Application Note 2782: Using a PC to Experiment with the MAX7219 and MAX7221 LED Display Drivers, 29 December 2003 — 4-проводный интерфейс у MAX7219 и SPI у MAX7221; цепочка до 16 драйверов, соединённых DOUT → DIN, запись одного драйвера командами No-Op для остальных

Нашли ошибку?