Перейти к содержанию

    
Да не заметил.

 

Я думаю под себя перепишите. Пример.

Спасибо. Попробую, отпишусь.

 

P.S. Да первый модуль который я разбираю и столько граблей, то ли нужно глубже вникать, то ли сыроват еще.

Родственные сомнения..

Рано ещё этот проц в какие-то серъёзные вещи ставить имхо ... Так, чисто поизучать, поиграться.

F1/F4, помню, с полпинка заводилось всё. С SDRAM и LTDC на F439, помню, года 4 назад промучился, но во всём оказалась виновата хреновая разводка платы. Сделали другую - все мгновенно заработало как надо.

Тут на форуме даже тема моя есть про "неработающий" LTDC :biggrin:

 

У меня есть свободная QSPI флэшка, думаю, следующими блоками на изучение будут QSPI и уарты :rolleyes:

Ну и USB c сетевухой, раз уж они есть на NUCLEO. Не пропадать же добру :biggrin: С сетью и lwIP на МК я вообще никогда не работал. Ну всякие там ESP8266 не в счёт конечно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня план ковыряний примерно такой же, QSPI давно хотел попробовать. Доделаю ДМА и начну USART (вроде как в F7 1 в 1, так что не сложно), с ДМА пришла в голову мысль (раз уж каналы стали полностью идентичные) динамически раздавать каналы по запросу периферии, все-равно запуск от полной инициализации отличаеться не сильно по размеру, но страдаю с общими регистрами (RCC, и общие ДМА, особенно с ДМА, совсем не красиво). Пока в голову пришли одни таблицы, зависимостей не видать совсем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MasterElectric, удачи. Мои эксприменты, похоже, откладываются - см. вложение. При простом подключении всё прекрасно читает. Ошибка только после Erase.

 

Atollic True Studio тож ругается "flash error". Хз, чё с ней стряслось. Пытался +5в со своего БП подавать, другой программатор подключал - без разницы.

Прошивается и работает не знаю с какого раза.

 

2 недели всего проработала :crying:

 

Если оно всё же будет работать, я тоже буду продолжать изучение всего вышесказанного.

post-7980-1532623433_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Печалька, а где вы ее кстати покупали, в китае? у нас поискал еще нет в продаже. Может полетел встроенный стабилизатор (на 400 тоже не стабильно подключался поэтому сижу на HSI, но я настраивал по мануалу режим стабилизатора установил, память настроил, делители, PLL и то стремно пока что), иногда во время экспериментов неудачных, проц попав видимо в исключение не реагирует на отладчик, помогает только ресет подключить от программатора. Попробуйте загнать его в заводской бут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Печалька, а где вы ее кстати покупали, в китае? у нас поискал еще нет в продаже. Может полетел встроенный стабилизатор (на 400 тоже не стабильно подключался поэтому сижу на HSI, но я настраивал по мануалу режим стабилизатора установил, память настроил, делители, PLL и то стремно пока что), иногда во время экспериментов неудачных, проц попав видимо в исключение не реагирует на отладчик, помогает только ресет подключить от программатора. Попробуйте загнать его в заводской бут.

 

Покупал не я, а знакомый. Говорил, вроде где-то в США... Кстати, мы с ним тоже подумали на хреновое питание +3.3в. Я ж подавал на неё 5 вольт, т.е. конечный 3в стабилизатор всё равно работал родной.

Стабилизатор завтра осциллом потыкаю, отпишусь.

Готовых внешних 3.3в у меня щас нету, спаять внешний стаб смогу только на выходных, т.к. у меня это хобби, в рабочее время я паять не шибко могу.

 

Атоллик после ругани на флэш всё-таки заходит в отладку, но ещё во время блужданий по стартовому коду попадает в DefaultHandler. Т.е. до активации PLL и HSE там дело не доходит.

 

Там действительно что-то странное. Добавил в ту же тестовую прошивку с SPI мигание светодиодиком, залил ST-Link utility - замигал нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осциллом 3.3 платы посмотрел - чисто. Может иголки какие, хз, моим хилым UT-81B их фиг найдёшь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот так нормально работает опросом:

 

// Чтение/запись байта SPI
uint8_t spi1_sendByte ( uint8_t data_out )
{
    uint8_t data_in = 0;

    // старт передаем неопределенное кол-во байт
    // Disable SPI
    SPI_PORT->CR1 &= ~SPI_CR1_SPE;
    SPI_PORT->CR2 = 0;
    // Enable SPI
    SPI_PORT->CR1 |= SPI_CR1_SPE;
    SPI_PORT->CR1 |= SPI_CR1_CSTART;

    while (!(SPI_PORT->SR & SPI_SR_TXP));
    *((__IO uint8_t *)&SPI_PORT->TXDR) = data_out;

    // Ждать завершения приёма
    while(!(SPI_PORT->SR & SPI_SR_RXP));
    data_in = *(volatile uint8_t *) &(SPI_PORT->RXDR);
    return data_in;
} // SPI_sendByte

 

Попробую ещё перенести это на другой SPI.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Датчик успешно переехал на SPI3 :) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Небольшой оффтоп в теме про SPI:

 

Покопался ещё на предмет флэша.

Пустышка вида

 

char sBuffer[256];

int main(void)
{
  float temp = 656.89F;
  int i = 78;

  sprintf ( sBuffer, "%d; %.02fv", i, temp );
  while ( 1 )
  {
  } // while
} // main

 

При использовании newlib standard даёт размер кода:

 

Print size information
   text      data       bss       dec       hex   filename
  17644      1660     10772     30076      757c   STM32H7_ILI9163.elf

 

Ошибка записи во флэш есть.

Если эту же программу перекомпилить с newlib nano, то получаю:

Print size information
   text      data       bss       dec       hex   filename
   5180       112     10720     16012      3e8c   STM32H7_ILI9163.elf

 

Ошибки флэша нет, всё гуд. Но в sBuffer я вижу: "78; v", т.е. видно, что sprintf не поддерживает плавающую точку, что меня лично меня категорически не устраивает.

 

Чтобы отсечь вопрос о "битости" некоторых участков флэша проца приведу следующий пример:

Прошивка размером

 

Print size information
   text      data       bss       dec       hex   filename
  18480        36     10876     29392      72d0   STM32H7_ILI9163.elf

 

 

без sprintf шьётся, отлаживается и работает совершенно нормально.

 

Стек в обоих случаях одинаковый:

 

/* 0x2800 == 10K */
_Min_Stack_Size = 0x2800;

 

 

 

Какие соображения, товарищи? И чем можно заменить sprintf? Я нашёл только это - https://github.com/torvalds/linux/blob/master/lib/vsprintf.c , но пока не пытался затащить её в проц.

Увеличение размера прошивки меня совершенно не волнует. Кто-то делал что-либо подобное?

 

Штуки типа itoa, ltoa я знаю, они нормально работают, но результирующие строки надо дополнительно склеивать, но самое главное, чего-то родственного для плавающей точки я не знаю.

Писать самому?

 

Что касается периферии - запустил UART - отправка опросом, приём прерыванием в буфер. Перешёл к USB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё-таки это косяки в либах атоллика (я про sprintf).

 

Та же самая пустышка в STM32 SystemWorkbench завелась с полпинка.

Правда пришлось разобраться, как включить в нём поддержку float output в spintf. По умолчанию она отключена, %f полностью игнорится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Всё-таки это косяки в либах атоллика (я про sprintf).

 

Та же самая пустышка в STM32 SystemWorkbench завелась с полпинка.

Правда пришлось разобраться, как включить в нём поддержку float output в spintf. По умолчанию она отключена, %f полностью игнорится.

 

никогда не использую sprintf() , использую набор минимальных самописных функций, отдельно для числовых данных, отдельно для строк etc...

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти