v3.8.0

v3.8.0 atualiza o núcleo para o MicroPython 1.13, congela um grande conjunto de bibliotecas auxiliares no firmware, adiciona suporte a Ethernet no Portenta (com exemplos de rede), HDMI CEC no módulo lcd, configuração de baudrate/ponto-de-amostragem em pyb.CAN, e uma série de correções de baixo consumo e HAL no H7. Os módulos time / utime foram fundidos e o DMA do pyb.DAC no F4 foi desativado — leia as alterações incompatíveis abaixo.

Destaques

  • MicroPython 1.13 — o núcleo MicroPython incluído foi atualizado.

  • Bibliotecas congeladasuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306, e mais estão agora congelados no firmware.

  • Ethernet no Portenta — suporte a Ethernet mais exemplos de HTTP / SSL / ponto a ponto.

  • HDMI CEC — nova API CEC no módulo lcd (Pure Thermal).

  • pyb.CAN — temporização de bits através das palavras-chave baudrate / sampling_point.

  • Incompatível: os módulos time / utime foram fundidos e as funções DMA do pyb.DAC no F4 foram desativadas — consulte as alterações incompatíveis.

Novas funcionalidades

  • Manifesto congeladouasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612, e vl53l1x estão agora congelados no firmware do OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta.

  • Ethernet no Portenta — Ethernet ativada com exemplos http_client, http_client_ssl e peer_to_peer.

  • HDMI CEC — adicionada uma API HDMI CEC ao módulo lcd (Pure Thermal).

  • pyb.CAN — o construtor / init() deriva agora a temporização de bits a partir das palavras-chave baudrate e sampling_point (a forma manual com prescaler continua a funcionar); exemplos CAN atualizados em conformidade.

Outras alterações e melhorias

  • O banner do REPL inclui agora a string de versão do HAL; o exemplo de FFT de áudio foi atualizado para a API mais recente do ulab.

Correções de erros

Câmara e sensores:

  • Corrigido o relógio do sensor OV2640 e o escalonamento de frequência PCLK do OV5640 em dispositivos STM32H7 rev Y; recuperação do barramento I2C FIR de um estado de arbitragem perdida ao pulsar o SCL, e nova tentativa de inicialização do AMG8833 num soft-reset do F7.

Energia e temporizadores:

  • Corrigida a entrada em baixo consumo do H7 (stop/standby) — escalonamento de tensão para a rev V, reativação do oscilador/PLL ao acordar, baixo consumo da SDRAM com retenção de DRAM, desativação do Systick na entrada em stop, e ativação do DBGMCU apenas em compilações de depuração. Corrigido o estado HAL do machine.Timer após a atualização do HAL do H7 e revertida a alteração de prioridade de IRQ de leitura/escrita no SD.

Ecrã e conetividade:

  • Corrigida a configuração do tamanho de dados 8/16 bits do LCD SPI no F4 (define MCU_SERIES errado), retornado um erro na falha de inicialização do barramento SPI do WINC1500 em vez de continuar silenciosamente, e utilizado um handle SPI estático para evitar conflitos de barramento SPI no WINC1500. Corrigido um erro de GC-collect no MicroPython.

Sistema:

  • unittests.py já não marca a suíte como falhada quando um teste está desativado ou indisponível; removidos os exemplos camera_lcd do escudo Thermopile defeituosos.

Hardware e suporte a placas

  • OpenMV Pure Thermal — placa atualizada e renomeada (OPENMVPURETHERMALOPENMVPT), com HDMI CEC.

  • OpenMV 2 — driver da câmara OV2640 ativado.

  • Arduino Portenta H7 — suporte a Ethernet.

Alterações incompatíveis na API

Alterações visíveis na API entre v3.7.0 e v3.8.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada alteração está marcada com o seu impacto:

  • menor — API restrita; afeta apenas scripts que a utilizavam.

  • comportamento — mesma API, resultados diferentes; rever scripts ajustados.

As alterações estão agrupadas por impacto nessa ordem. Se pretende apenas portar o seu código, salte para a lista de verificação de migração no final. Cada hash de commit tem uma ligação para o seu diff no GitHub.

Módulos time / utime fundidos (menor)

Os módulos time e utime foram fundidos e a classe clock do OpenMV foi movida para utime. Todos os exemplos incluídos foram atualizados para import utime / clock = utime.clock(). Scripts que dependiam de import time para a classe clock devem importar utime em vez disso.

Commits: 20587f308

Funções DMA do pyb.DAC no F4 desativadas (menor)

Nas placas baseadas em F4, as funções do pyb.DAC que requerem DMA foram desativadas porque o heap do F4 reside na CCM, que não é acessível por DMA. Scripts F4 que utilizavam escritas em buffer DMA do DAC devem evitar essas funções.

Commits: d61f236f2

MicroPython atualizado para 1.13 (comportamento)

O núcleo MicroPython incluído foi atualizado para 1.13. O comportamento da biblioteca padrão e da linguagem segue o MicroPython 1.13 upstream; rever scripts que dependem do comportamento específico de versão do micropython / módulos padrão.

Commits: fb0a5e26d

Frequências suportadas pelo cpufreq dependem da revisão (comportamento)

Foram adicionadas mais frequências de CPU com consciência da revisão de silício: cpufreq.get_supported_frequencies() devolve agora uma lista dependente da revisão no H7 (50/100/200/400 MHz nas rev X/Y, 60/120/240/480 MHz na rev V). Scripts que codificavam diretamente uma frequência da antiga lista fixa devem consultar a lista de frequências suportadas em tempo de execução.

Commits: 825dd0742

Lista de verificação de migração

Para uma migração limpa para v3.8.0, o trabalho típico é:

  1. Altere import time para import utime onde utilizar a classe clock (a fusão time/utime).

  2. Nas placas F4, deixe de usar as funções de buffer DMA do pyb.DAC (a alteração do DAC F4).

  3. Re-valide scripts que dependem do comportamento específico de versão do MicroPython contra a versão 1.13 (a atualização do MicroPython) e consulte cpufreq.get_supported_frequencies() em tempo de execução em vez de usar valores fixos (a alteração do cpufreq).

Todos os outros scripts funcionam sem alterações.