|
|
  |
STM32H743 SPI, Не работает |
|
|
|
Jul 26 2018, 04:28
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(MasterElectric @ Jul 25 2018, 23:11)  Да не заметил.
Я думаю под себя перепишите. Пример. Спасибо. Попробую, отпишусь. Цитата(MasterElectric @ Jul 25 2018, 23:11)  P.S. Да первый модуль который я разбираю и столько граблей, то ли нужно глубже вникать, то ли сыроват еще. Родственные сомнения.. Рано ещё этот проц в какие-то серъёзные вещи ставить имхо ... Так, чисто поизучать, поиграться. F1/F4, помню, с полпинка заводилось всё. С SDRAM и LTDC на F439, помню, года 4 назад промучился, но во всём оказалась виновата хреновая разводка платы. Сделали другую - все мгновенно заработало как надо. Тут на форуме даже тема моя есть про "неработающий" LTDC У меня есть свободная QSPI флэшка, думаю, следующими блоками на изучение будут QSPI и уарты  Ну и USB c сетевухой, раз уж они есть на NUCLEO. Не пропадать же добру  С сетью и lwIP на МК я вообще никогда не работал. Ну всякие там ESP8266 не в счёт конечно.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Jul 26 2018, 15:23
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-07-18
Пользователь №: 106 151

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

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
MasterElectric, удачи. Мои эксприменты, похоже, откладываются - см. вложение. При простом подключении всё прекрасно читает. Ошибка только после Erase. Atollic True Studio тож ругается "flash error". Хз, чё с ней стряслось. Пытался +5в со своего БП подавать, другой программатор подключал - без разницы. Прошивается и работает не знаю с какого раза. 2 недели всего проработала  Если оно всё же будет работать, я тоже буду продолжать изучение всего вышесказанного.
Эскизы прикрепленных изображений
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Jul 26 2018, 17:35
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-07-18
Пользователь №: 106 151

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

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(MasterElectric @ Jul 26 2018, 20:35)  Печалька, а где вы ее кстати покупали, в китае? у нас поискал еще нет в продаже. Может полетел встроенный стабилизатор (на 400 тоже не стабильно подключался поэтому сижу на HSI, но я настраивал по мануалу режим стабилизатора установил, память настроил, делители, PLL и то стремно пока что), иногда во время экспериментов неудачных, проц попав видимо в исключение не реагирует на отладчик, помогает только ресет подключить от программатора. Попробуйте загнать его в заводской бут. Покупал не я, а знакомый. Говорил, вроде где-то в США... Кстати, мы с ним тоже подумали на хреновое питание +3.3в. Я ж подавал на неё 5 вольт, т.е. конечный 3в стабилизатор всё равно работал родной. Стабилизатор завтра осциллом потыкаю, отпишусь. Готовых внешних 3.3в у меня щас нету, спаять внешний стаб смогу только на выходных, т.к. у меня это хобби, в рабочее время я паять не шибко могу. Атоллик после ругани на флэш всё-таки заходит в отладку, но ещё во время блужданий по стартовому коду попадает в DefaultHandler. Т.е. до активации PLL и HSE там дело не доходит. Там действительно что-то странное. Добавил в ту же тестовую прошивку с SPI мигание светодиодиком, залил ST-Link utility - замигал нормально.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Jul 26 2018, 18:06
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-07-18
Пользователь №: 106 151

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

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Вот так нормально работает опросом: Код // Чтение/запись байта 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.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Aug 5 2018, 15:02
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Небольшой оффтоп в теме про SPI: Покопался ещё на предмет флэша. Пустышка вида CODE 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.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Aug 18 2018, 11:04
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(hd44780 @ Aug 18 2018, 12:00)  Всё-таки это косяки в либах атоллика (я про sprintf).
Та же самая пустышка в STM32 SystemWorkbench завелась с полпинка. Правда пришлось разобраться, как включить в нём поддержку float output в spintf. По умолчанию она отключена, %f полностью игнорится. никогда не использую sprintf() , использую набор минимальных самописных функций, отдельно для числовых данных, отдельно для строк etc...
Сообщение отредактировал nanorobot - Aug 18 2018, 11:04
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|