v3.8.0

v3.8.0 оновлює ядро до MicroPython 1.13, заморожує великий набір допоміжних бібліотек у мікропрограмі, додає Portenta Ethernet (з прикладами мережевої роботи), підтримку HDMI CEC у модулі lcd, конфігурацію швидкості передачі / точки вибірки pyb.CAN, а також низку виправлень для H7 з низьким споживанням та HAL. Модулі time / utime були об’єднані, а DMA pyb.DAC для F4 вимкнено — ознайомтеся зі змінами, що порушують сумісність, нижче.

Основні нововведення

  • MicroPython 1.13 — оновлено вбудоване ядро MicroPython.

  • Заморожені бібліотекиuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 та інші тепер заморожені у мікропрограмі.

  • Portenta Ethernet — підтримка Ethernet з прикладами HTTP / SSL / peer-to-peer.

  • HDMI CEC — новий CEC API у модулі lcd (Pure Thermal).

  • pyb.CAN — часові параметри передачі з ключовими словами baudrate / sampling_point.

  • Порушення сумісності: модулі time / utime були об’єднані, а функції DMA pyb.DAC для F4 вимкнено — дивіться зміни, що порушують сумісність.

Нові функції

  • Заморожений маніфестuasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 та vl53l1x тепер заморожені у мікропрограмі для OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.

  • Portenta Ethernet — увімкнено Ethernet з прикладами http_client, http_client_ssl та peer_to_peer.

  • HDMI CEC — додано HDMI CEC API до модуля lcd (Pure Thermal).

  • pyb.CAN — конструктор / init() тепер виводить часові параметри з ключових слів baudrate та sampling_point (ручна форма з prescaler також працює); приклади CAN оновлено відповідно.

Інші зміни та покращення

  • Банер REPL тепер включає рядок версії HAL; приклад Audio FFT оновлено для нового API ulab.

Виправлення помилок

Камера та датчики:

  • Виправлено масштабування тактового сигналу OV2640 та PCLK-частоти OV5640 на пристроях STM32H7 версії Y; відновлення шини FIR I2C після стану втрати арбітражу шляхом імпульсного подачі SCL, а також повторна ініціалізація AMG8833 при м’якому скиданні F7.

Живлення та таймери:

  • Виправлено вхід у режим низького споживання H7 (зупинка/резервний режим) — масштабування напруги для версії V, повторне вмикання генератора/PLL при пробудженні, низьке споживання SDRAM із збереженням даних DRAM, вимкнення Systick при переході в режим зупинки та вмикання DBGMCU лише у відлагоджувальних збірках. Виправлено стан HAL machine.Timer після оновлення H7 HAL та повернено зміну пріоритету переривань читання/запису SD.

Дисплей та підключення:

  • Виправлено конфігурацію розміру даних 8/16 біт F4 SPI LCD (неправильне визначення MCU_SERIES), повернення помилки при невдалій ініціалізації шини SPI WINC1500 замість тихого продовження, а також використання статичного дескриптора SPI для уникнення конфліктів шини SPI WINC1500. Виправлено помилку GC-collect у MicroPython.

Система:

  • unittests.py більше не позначає набір тестів як невдалий, якщо тест вимкнено або недоступний; видалено несправні приклади camera_lcd для Thermopile-shield.

Апаратне забезпечення та підтримка плат

  • OpenMV Pure Thermal — плату оновлено та перейменовано (OPENMVPURETHERMALOPENMVPT), з HDMI CEC.

  • OpenMV 2 — увімкнено драйвер камери OV2640.

  • Arduino Portenta H7 — підтримка Ethernet.

Зміни API, що порушують сумісність

Видимі користувачу зміни API між v3.7.0 та v3.8.0. Область: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.

Кожна зміна позначена рівнем впливу:

  • незначний — вузький API; стосується лише скриптів, що його використовували.

  • поведінковий — той самий API, інші результати; перевірте налаштовані скрипти.

Зміни згруповані за рівнем впливу у такому порядку. Якщо ви просто хочете портувати код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту веде до його різниці на GitHub.

Модулі time / utime об’єднано (незначний)

Модулі time та utime були об’єднані, а клас OpenMV clock переміщено до utime. Усі вбудовані приклади оновлено до import utime / clock = utime.clock(). Скрипти, що використовували import time для класу clock, повинні використовувати utime натомість.

Коміти: 20587f308

Функції DMA pyb.DAC для F4 вимкнено (незначний)

На платах на базі F4 функції pyb.DAC, що потребують DMA, були вимкнені, оскільки купа F4 знаходиться в CCM, який недоступний для DMA. Скрипти F4, що використовували запис у буфер DMA DAC, повинні уникати цих функцій.

Коміти: d61f236f2

MicroPython оновлено до 1.13 (поведінковий)

Вбудоване ядро MicroPython оновлено до 1.13. Поведінка стандартної бібліотеки та мови відповідає upstream MicroPython 1.13; перевірте скрипти, що залежать від специфічної для версії поведінки micropython / стандартних модулів.

Коміти: fb0a5e26d

Підтримувані частоти cpufreq залежать від версії (поведінковий)

Додано більше частот CPU та враховано версію кристала: cpufreq.get_supported_frequencies() тепер повертає список, що залежить від версії, на H7 (50/100/200/400 МГц для версій X/Y, 60/120/240/480 МГц для версії V). Скрипти, які жорстко кодували частоту зі старого фіксованого списку, повинні запитувати список підтримуваних частот під час виконання.

Коміти: 825dd0742

Контрольний список міграції

Для чистого порту до v3.8.0 типова робота полягає в:

  1. Змінити import time на import utime там, де використовується клас clock (об’єднання time/utime).

  2. На платах F4 припинити використання функцій DMA-буфера pyb.DAC (зміна F4 DAC).

  3. Повторно перевірити скрипти, що залежать від специфічної для версії поведінки MicroPython, відносно 1.13 (оновлення MicroPython) та запитувати cpufreq.get_supported_frequencies() під час виконання замість жорсткого кодування (зміна cpufreq).

Усі інші скрипти працюють без змін.