SparkFun RP2040 и MicroPython

Я инженер-программист, работаю над микроконтроллерной системой для побочного проекта. Я использую микроконтроллер SparkFun ProMicro (на базе платы RP2040). Я пытаюсь прошить плату, чтобы записать данные во встроенную флеш-память.

Все учебные пособия, которые я нашел в Интернете, предлагают начать в режиме загрузки, перетащить файл UF2 и готово!

Когда я это делаю, микроконтроллер вылетает из моего компьютера. Это должно произойти? Он просто перезагружается, а затем не перезагружается в загрузчике?

После установки MicroPython я перешел к написанию и прошивке кода на плату.

Я использую Thonny IDE, которая определила правильную плату (хотя и PICO), а затем сохранила следующий файл как main.py (взятый из фонда RPI). Он печатает переключатель, и я считаю, что вывод показывает, что он печатается с платы, но индикатор на плате не мигает. (код и вывод ниже)

Я считал, что распиновка может отличаться от этой платы и PICO, но некоторые исследования показывают, что они оба используют контакт 25 для управления светодиодами.

Все это заставляет меня думать, что я на правильном пути, но я думаю, что мне не хватает чего-то, что считается само собой разумеющимся в обучающих материалах. Моя конечная цель - записать произвольные текстовые данные во флеш-хранилище, но я понимаю, что это может занять всего около 8000-10000 записей, прежде чем они станут ненадежными, поэтому я хочу проверить, могу ли я писать рабочий код, прежде чем использовать некоторые из них.

Что-то мне не хватает, или я неправильно об этом думаю?

4 ответа

Когда я это делаю, микроконтроллер вылетает из моего компьютера. Это должно произойти? Он просто перезагружается, а затем не перезагружается в загрузчике?

Ага.

но лампочка на плате не мигает.

Возможно, ваш светодиод перегорел, потому что ваш код правильный.

Моя конечная цель - записать произвольные текстовые данные во флеш-память.

Это ужасная идея, если только вам не нравится сжигать доски без уважительной причины. Получите устройство чтения SD-карт или создайте его из решения, подобного этому, и используйте эту библиотеку SD-карт, которая даже смонтирует вашу карту, и добавьте ее в syspath. Затем вы можете записать все произвольные текстовые данные, которые вам нравятся, не сжигая RP2040.

Мигать этим светодиодом оказалось сложнее, чем я ожидал. В итоге я нашел этот образец кода на AdaFruit и использовал закомментированный код неопикселя. Яркая сторона заключалась в том, что я осознавал, что над этим сигналом был гораздо больший контроль.

Не забывайте, что вам нужно добавить neopixel.mpy из комплекта на вашу доску.

Это не простой светодиод, подключенный к контакту 25 на Pro Micro RP2040 — это RGB-светодиод WS2812, иногда называемый NeoPixel. Есть однопроводной протокол для управления этими устройствами.

MicroPython поддерживает встроенный в NeoPixel:

      from machine import Pin
from neopixel import NeoPixel

pin = Pin(25, Pin.OUT)  # set Pin 25 to output to drive a NeoPixel
np = NeoPixel(pin, 1)   # create NeoPixel driver on Pin 25 for a single pixel
np[0] = (255, 0, 0)     # set the first pixel to red (R, G, B)
np.write()   

См. краткий обзор rp2 для более подробной информации.

С RPi Pico W теперь вы можете идентифицировать контакт светодиода с помощью «LED» вместо контакта 25 (или другого контакта). Это изменение связано с тем, что контакт 25 используется для чипа Wi-Fi на Pico W. Это работает на Pico W, как показано ниже.

      from machine import Pin
import time

led = Pin("LED", Pin.OUT)

while True:
   led.toggle()
   time.sleep(0.5)

Я проверил, как это работает на RPi Pico W с MicroPython — используя нестабильную версию Python —rp2-pico-w-20220719-unstable-v1.19.1-181-gc947c2529.uf2.

Я считаю, что это предназначено для того, чтобы стать стандартным способом доступа к светодиоду на плате, поскольку порт можно изменить для разных плат без изменения исходного кода.

Другие вопросы по тегам