Какое замечательное чтиво, непременно пишите ещё! Вопрос несколько не в тему: а пики могут через аппаратный SPI длинные слова (конкретно-21 бит?)
8-и битные обычно нет. Но недавно появились PIC18F K42 — у них можно настраивать длину слова (в пределах 8 бит). Но таких модулей SPI два, т.е. можно соединить в цепь и настраивать длину до 16. Если 21 — то 16 + 5 ))
У более младших… наверное то же можно сделать передачу/прием не кратно 8 бит — поможет ПНЯ (CLC + таймер-счетчик)
а в чем преимущество PIC-ов перед например STM32
для данной области использования?
Скажем так, для примера контроллера рис.2.4 (или др. на этой странице выше) код программы для PIC будет выглядеть примерно так:
init_CIP();
while(1) {
}
В общем случае не нужно что-то делать, не нужно обрабатывать прерываний, Источник, после инициализации, будет выполнять свою функцию. Код и прерывания могут быть нужны для сервисных функций.

я не большой специалист в STM32. Было бы здорово, если сможете показать на каком STM32 и в какой конфигурации периферии можно сделать такой же аппаратный ШИМ контроллер ИИП.
для STM32 почти во всех семействах есть много таймеров, почти все из них позволяют работать
с ШИМ(PWM). Причем настройка режимов для таймеров очень гибкая и позволяет например создать
режимы управления двухтактным мостом с управлением dead time…
и код будет выглядеть очень похоже
MX_TIMER1_Init();
while(1) {
ОК, а скважность и частота будут задаваться через регистры?
один раз при старте
вот в этом проблема. для регулировки выходных параметров источника параметры ШИМ нужно «двигать», т.е. в вашем случае источник с while(1){} не работает — нужен код для обеспечения работы петли регулирования, иначе параметры будут плыть от нагрузки. А дальше считайте: например частота ШИМ 100кГц (весьма мало для ИИП), 10бит разрешение ШИМ — тактовая для таймера нужна 102.4МГц, за 10мкс нужно измерить U(I) на выходе (АЦП), посчитать регулятор и обновить регистры ШИМ

А откуда связь между частотой ШИМ и периодом работы регулятора? Период регулирования выбирается же больше от характера нагрузки или тут есть какой-то нюанс?

Насколько я понял, модуль CCP PWM в PIC-е реализует такой режим аппаратно.

ОК, к вопросу о тактовой частоты вопросов нет ;-) 100++МГц это уже мк класса СМ3, СМ4 (сравним с реализацией на 8-и битнике с достаточной тактовой единиц МГц или ниже и корпусами 8-14-20pin).

Далее.
Конечно период регулирования зависит от нагрузки и изменений входного напряжения. Далее идем в начало, см. часть 1
Voltage Mode (VM) гистерезисный. Тут вообще частоту ШИМ и скважность не нужно менять. Да и МК не нужен — достаточно мультивибратора и компаратора. Но и точность регулирования самая плохая.
VM пропорциональный. Тут сложнее — на параметры контура регулирования оказывает влияние изменение входного напряжения.
Current Mode (CM) — имеет 2 контура. Внутренний (быстрый) осуществляет регулировку на каждом периоде ШИМ. Этот метод поддерживает заряд индуктивности одинаковой энергией (если не брать во внимание второй контур). За счет этого нет влияния изменения входного напряжения на параметры петли ОС.
как-то так.
например частота ШИМ 100кГц (весьма мало для ИИП), 10бит разрешение ШИМ — тактовая для таймера нужна 102.4МГц

А разве PIC не подчиняется тем же самым правилам? Частота упомянутого PIC16F1769 32МГц, соответственно максимальная частота ШИМ-а, которую он может при разрешении в 10 бит, ~30 Кгц.

так вы посмотрите на схемы (см. часть 1). Есть таймер, который задает период (Set триггера). Сбросом (Reset) триггера управляет компаратор (аналоговая вещь), т.е. завязки на тактовую частоту вообще нет. Да хоть ставьте тактовую 100кГц — обратная связь аналоговая и асинхронная от Ядра микроконтроллера (тема номера: ПНЯ — периферия независимая от Ядра).
так вы посмотрите на схемы (см. часть 1).

Почитал, стало понятно.

Немного недосказанно про управление ключами, нагрузочной способности COG в 50-100 мА явно недостаточно для более-менее низкоомный ключей: для них нужны токи затвора порядка 1-3 А. Это связано с большой (1...10 нФ) ёмкостью их затвора.
В этих целях на схеме 2.7 введены маленькие усилители между выходами COG и затворами транзисторов. Но, тогда уж не проще ли просто применить драйвер типа NCP3420, который и комплементарные сигналы сделает, и о dead time позаботится, и ток нужный вольёт в затворы транзисторов и стоит менее 50 центов?

это нарисованы драйвера MOSFET. NCP это двухканальный драйвер MOSFET, ШИМ контроллер не заменит

Это понятно. Мне было интересно, не дешевле ли вместо встроенного COG и двух внешних драйверов применить внешний двухканальный драйвер, который на вход принимает один сигнал, а на выходе выдаёт два комплементарных сигнала, сам заботясь о dead time. Но, всё же, пролистав digikey, я обнаружил что разницы в цене практически нет, а программно конфигурируемый COG даст дополнительные полезные плюшки, так что нет, не проще.

COG это не только dead-time и комплементарные сигналы. COG это еще бланкирование (будет рассмотрен пример в 3-й части), это несколько режимов выхода (в т.ч. push-pull), это различные источники Set и Reset (у показанной NCP один вход PWM), это shutdown c ручным или автоматическим разрешением на продолжение работы, это заданное(запрограммированное) состояние выходов при детектировании аварии.
Т.е. подобный 2-х канальный MOSFET-драйвер может быть полезен, но COG позволяет делать гораздо больше вариантов ШИМ контроллера.
Вообще это несколько разные функции, COG это «сердце ШИМ контроллера», а драйвер это выход ШИМ контроллера.
Спасибо за интересные статьи.
Беглый просмотр документации показал, что простого способа подключить полумостовой переключающий каскад нет. Или есть?
Есть
The COG module has the following features:
• Six modes of operation:
— Steered PWM mode
— Synchronous Steered PWM mode
— Forward Full-Bridge mode
— Reverse Full-Bridge mode
Half-Bridge mode
— Push-Pull mode
Только полноправные пользователи могут оставлять комментарии.
Войдите, пожалуйста.