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.
Распиновка
| Вывод | Обозначение | Назначение |
|---|---|---|
| 1 | DIN | вход данных: бит вдвигается в 16-битный сдвиговый регистр по фронту CLK |
| 2, 11, 6, 7, 3, 10, 5, 8 | DIG 0, DIG 1 … DIG 7 | ключи разрядов: принимают ток общего катода; номера идут не по порядку |
| 4, 9 | GND | общий провод; подключают оба вывода |
| 12 | LOAD (MAX7219), CS (MAX7221) | по фронту защёлкиваются последние 16 бит; у MAX7221 такты принимаются только при низком CS |
| 13 | CLK | тактовый вход, до 10 МГц |
| 14, 16, 20, 23, 21, 15, 17 | SEG A, SEG B … SEG G | источники тока сегментов, к анодам индикатора |
| 22 | SEG DP | сегмент десятичной точки |
| 18 | ISET | через резистор RSET к питанию V+ — задаёт пиковый ток сегментов |
| 19 | V+ | питание +5 В |
| 24 | DOUT | выход для цепочки: данные со входа 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–D12 | D11–D8 | D7–D0 |
|---|---|---|---|
| Назначение | не важны (X) | адрес регистра | данные |
Бит со входа DIN вдвигается по фронту CLK (переходу из нуля в единицу), на выход DOUT данные выдвигаются по спаду. Фронт LOAD (или CS) переписывает 16 бит из сдвигового регистра в регистр разряда или управления. По даташиту LOAD должен подняться одновременно с 16-м фронтом CLK или после него, но до следующего фронта — иначе данные теряются.
| Параметр | Обозначение | Значение | Примечание |
|---|---|---|---|
| Период CLK | tCP | от 100 нс | отсюда предел 10 МГц |
| Длительность единицы и нуля CLK | tCH, tCL | от 50 нс | |
| Установка и удержание DIN | tDS, tDH | от 25 нс и от 0 нс | относительно фронта CLK |
| От спада CS до фронта CLK | tCSS | от 25 нс | только MAX7221 |
| От фронта LOAD до следующего фронта CLK | tLDCK | от 50 нс | только MAX7219 |
| От фронта CLK до фронта LOAD или CS | tCSH | от 0 нс | |
| Длительность единицы на LOAD или CS | tCSW | от 50 нс | |
| Задержка выхода DOUT | tDO | до 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 (нет операции) | 0000 | 0xX0 |
| Digit 0 … Digit 7 (разряды) | 0001…1000 | 0xX1…0xX8 |
| Decode Mode (декодирование) | 1001 | 0xX9 |
| Intensity (яркость) | 1010 | 0xXA |
| Scan Limit (число разрядов) | 1011 | 0xXB |
| Shutdown (выключение) | 1100 | 0xXC |
| Display Test (проверка индикатора) | 1111 | 0xXF |
Всего 14 адресуемых регистров; коды 0xXD и 0xXE в карте не используются. После подачи питания все регистры управления сброшены, индикатор погашен, а микросхема находится в режиме выключения. Пока её не настроили, она сканирует один разряд, не декодирует данные и держит минимальную яркость, поэтому даташит требует запрограммировать драйвер до использования индикатора.
Декодирование
Каждый бит регистра Decode Mode относится к своему разряду: 1 включает декодер Code B, 0 — прямое управление сегментами. Примеры из даташита: 0x00 — без декодирования во всех разрядах, 0x01 — декодирование только в разряде 0, 0x0F — в разрядах 0–3, 0xFF — во всех.
С декодером учитываются только биты D3–D0 регистра разряда, биты D4–D6 игнорируются, а D7 зажигает десятичную точку (1 — горит):
| D3–D0 | 0x0…0x9 | 0xA | 0xB | 0xC | 0xD | 0xE | 0xF |
|---|---|---|---|---|---|---|---|
| Символ | цифры 0–9 | «−» | E | H | L | P | пусто |
Без декодера биты D7–D0 соответствуют сегментам DP, A, B, C, D, E, F, G. Например, цифра 0 без декодера — сегменты A–F, код 0x7E. В матрице 8×8 каждый регистр разряда — это ряд из восьми светодиодов, по одному биту на светодиод, а декодирование выключают (0x00). Какая сторона матрицы подключена к разрядам, а какая к сегментам, зависит от разводки модуля.
Яркость
Пиковый ток задаёт резистор RSET, а среднюю яркость — встроенный ШИМ, которым управляют биты D3–D0 регистра Intensity. Он меняет коэффициент заполнения в 16 ступеней:
| Код | MAX7219 | MAX7221 | Код | MAX7219 | MAX7221 |
|---|---|---|---|---|---|
| 0xX0 | 1/32 (минимум) | 1/16 (минимум) | 0xX8 | 17/32 | 9/16 |
| 0xX1 | 3/32 | 2/16 | 0xX9 | 19/32 | 10/16 |
| 0xX2 | 5/32 | 3/16 | 0xXA | 21/32 | 11/16 |
| 0xX3 | 7/32 | 4/16 | 0xXB | 23/32 | 12/16 |
| 0xX4 | 9/32 | 5/16 | 0xXC | 25/32 | 13/16 |
| 0xX5 | 11/32 | 6/16 | 0xXD | 27/32 | 14/16 |
| 0xX6 | 13/32 | 7/16 | 0xXE | 29/32 | 15/16 |
| 0xX7 | 15/32 | 8/16 | 0xXF | 31/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 В |
|---|---|---|---|---|---|
| 40 | 12,2 | 11,8 | 11,0 | 10,6 | 9,69 |
| 30 | 17,8 | 17,1 | 15,8 | 15,0 | 14,0 |
| 20 | 29,8 | 28,0 | 25,9 | 24,5 | 22,6 |
| 10 | 66,7 | 63,7 | 59,3 | 55,4 | 51,2 |
Резистор может быть и переменным — для ручной регулировки яркости. Для тока сегмента больше 40 мА нужны внешние ключи разрядов, и MAX7219 работает лишь контроллером; если сегменты питают внешние источники тока, даташит советует RSET = 47 кОм, чтобы не тратить мощность. В его примере (рис. 2) разряды индикаторов высотой 2,3 дюйма с прямым напряжением сегмента около 8 В коммутируют внешние транзисторы, а последовательно с точкой (около 4,2 В) включён стабилитрон 5,6 В. AN1196 добавляет, что сегменты из трёх кристаллов и больше от 5 В напрямую не работают, а описанные в нём схемы с внешними ключами рассчитаны на индикаторы с общим анодом. Как выбирают ток и прямое напряжение светодиода, рассказано в статье «Драйвер светодиода».
Мощность и нагрев
Верхнюю границу рассеиваемой мощности даташит считает так:
где 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.
- RSET. По табл. 11 для 20 мА и 2,0 В — 28,0 кОм; это значение есть в ряду E96. Если ставить резистор из ряда E24, берут ближайший больший — 30 кОм, и ток будет немного меньше 20 мА.
- Средний ток светодиода. Каждый ряд горит 1/8 времени, поэтому через светодиод течёт в среднем 20 мА · 31/32 / 8 ≈ 2,4 мА.
- Мощность при 5,5 В: PD = 5,5 · 0,008 + (5,5 − 2,0) · 31/32 · 0,020 · 8 = 0,044 + 3,5 · 0,155 ≈ 0,59 Вт.
- Нагрев. При +85 °C: TJ = 85 + 0,59 · 75 ≈ 129 °C — меньше 150 °C, запас есть; в корпусе SO-24 получится около 135 °C.
- Если поднять ток до 40 мА (RSET = 11,8 кОм), мощность вырастет до 0,044 + 3,5 · 0,31 ≈ 1,13 Вт, а наибольшая температура среды упадёт до 150 − 1,13 · 75 ≈ 65 °C для DIP и примерно 54 °C для SO.
- Питание. При 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).
Источники
- 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 (цепочка из двух драйверов)
- 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 В, ограничение по индикаторам с общими сегментами
- Maxim Integrated. Application Note 1196: Using the MAX7219/7221 to Drive Higher Voltage or Current, 9 September 2002 — до 40 мА на сегмент при питании 4–5,5 В; сегменты из трёх и более кристаллов не работают напрямую от 5 В; ток разряда — восемь токов сегмента; внешние ключи требуют индикаторов с общим анодом
- 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 для остальных
Нашли ошибку?
Смотрите также
- ДрайверыH-мосты, сборки ключей, драйверы затворов и индикаторов: параметры и выбор
- Семисегментные индикаторыОбщий анод и катод, коды 0–F, резисторы, мультиплексирование разрядов
- SPISCLK, MOSI, MISO, CS, режимы 0–3, daisy chain, частота, SPI в AVR
- Динамическая индикацияРазряды по очереди: 8 + N выводов вместо 8 · N
- КаскадированиеЦепочка микросхем: выход одной — на вход следующей, общие такты
- Светодиоды и драйверыПрямое напряжение, параллельное включение, резистор, стабилизаторы тока, понижающие и повышающие драйверы, ШИМ, нагрев