← All posts tagged stm32l-discovery

Kim

аппаратный lcd заработал (led экран на прошлой платке я обрабатывал руками софтверно по таймеру, сейчас использую родной lcd экран и работаю с ним через аппаратную поддержку lcd).

В принципе это тот код, которого в libopencm3 нет. Стоит ли заморочиться и дописать его в библиотеку?

Kim

В общем не осилил перевести эту железяку в low power run mode. Фигачу такой код:

#include <libopencm3/stm32/rcc.h> 
#include <libopencm3/stm32/pwr.h> 
#include <libopencm3/stm32/flash.h> 

int main()
{
  clock_scale_t myclock_config = {
    .hpre = RCC_CFGR_HPRE_SYSCLK_DIV2,
    .ppre1 = RCC_CFGR_PPRE1_HCLK_NODIV,
    .ppre2 = RCC_CFGR_PPRE2_HCLK_NODIV,
    .voltage_scale = RANGE2, // Документация требует Range2 для low power run mode
    .flash_config = FLASH_ACR_LATENCY_0WS,
    .apb1_frequency = 65536,
    .apb2_frequency = 65536,
    .msi_range = RCC_ICSCR_MSIRANGE_65KHZ, // Для работы требуется MSIRANGE не больше первого. Ставим нулевой.
  };
  rcc_clock_setup_msi(&myclock_config);
  rcc_peripheral_enable_clock(&RCC_APB1ENR, RCC_APB1ENR_PWREN);
  PWR_CR |= PWR_CR_LPSDSR;
  PWR_CR |= PWR_CR_LPRUN;
  while(1) {
      __asm__("nop");
    }
}

А в результате, хоть делай "PWR_CR |= PWR_CR_LPRUN;" хоть не делай -- жрёт оно под 1 милиампер, вместо ожидаемых 40 микроампер.

Kim

А какой русский термин используется для "solder bridge"?

Убрал с платки два этих моста оформленных резистрами на 0 Ом, припаял держатель для батарейки и впаял вилку для джампиков между, чтобы переключаться между внешним питанием и батарейкой.

Ну то есть теперь моя платка умеет работать от батарейки.

Kim

в общем-то всё работает и программируется, но ничего ценного пока не сделал. Разве что сломал ногу жк-дисплею когда вынимал его (28 ног это слишком много, свободных пинов не остаётся, так что вывод будет на 11 ног светодиодного экрана) и припаял вместо неё кусок проволоки, с которым жк-экран отлично заработал.