Easyelectronics.ru

Электроника для всех
Текущее время: 05 июн 2020, 15:50

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 13:30 
Старожил

Зарегистрирован: 19 окт 2016, 13:57
Сообщения: 408
Помогите, пожалуйста. Намучился, начитался. Не выходит каменный цветок.
Не могу взвести SPI на stm32h743.
На логическом анализаторе тишина.
В интернете люди плачут от SPI H7 через одного.
Чего-то они там навернули, что не донастраивают. Особенно с тактированием. Но я уже все настройки перепробовал.
Камень завел на 400 МГц, судя по выводу DMA-UARTTX - работает инициация тактирования камня правильно.
Код:
void InitHSE() {
    // DIVM1 = 4, DIVN1 = 400, DIVP1 = 2, D1CPRE1 = 1, HPRE = 2, D1PPRE = 2, D2PPRE1 = 2; D2PPRE2 = 2, D3PPRE = 2
    FLASH->ACR = FLASH_ACR_LATENCY_5WS;
   RCC->CR |= RCC_CR_HSEON; // Enable HSE
   while((RCC->CR & RCC_CR_HSERDY) == 0);
    //RCC->CFGR |= RCC_CFGR_SW_HSE;
    //while (!(RCC->CFGR & RCC_CFGR_SWS_HSE)) __NOP();
   RCC->PLLCKSELR = 0b10000000100000000001000010;
   RCC->PLL1DIVR  |= 0b1000100010000001110001111; // DIVQ1=16 for SPI
   RCC->PLL1FRACR = 0;
   RCC->PLLCFGR = 0b1111111110000000000000001;
   //RCC->D2CCIP1R = 0b00000000000000000100000000000000; // Try per_ck for SPI
   RCC->CR |= RCC_CR_PLLON;
   while((RCC->CR & RCC_CR_PLL1RDY) == 0);
   RCC->D1CFGR = 0b1001000;
   RCC->D2CFGR = 0b10001000000;
   RCC->D3CFGR = 0b1000000;
   RCC->CFGR = 0b11;
   while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL1);
    return;
}


Но вот SPI не фурычит

Код:
void ili9486_InitTFT() {
    RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; // Enable SPI1 clock
    //Сброс
    RCC->APB2RSTR |= RCC_APB2RSTR_SPI1RST;
    for(uint32_t i=0; i<0x1000; i++){__NOP();}
    RCC->APB2RSTR &= ~RCC_APB2RSTR_SPI1RST;

    RCC->AHB4ENR |= RCC_AHB4ENR_GPIOAEN;
    GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER4)) | GPIO_MODER_MODER5_1; //Select AF mode on SPI1 NSS
    GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER5)) | GPIO_MODER_MODER5_1; //Select AF mode on SPI1 SCK
    GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER6)) | GPIO_MODER_MODER6_1; //Select AF mode on SPI1_MISO
    GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER7)) | GPIO_MODER_MODER7_1; //Select AF mode on SPI1_MOSI
   GPIOA->AFR[0] |= 0x05<<(4*4); // AF5 for SPI1 NSS on PA4
   GPIOA->AFR[0] |= 0x05<<(5*4); // AF5 for SPI1 SCK on PA5
   GPIOA->AFR[0] |= 0x05<<(6*4); // AF5 for SPI1 MISO on PA6
   GPIOA->AFR[0] |= 0x05<<(7*4); // AF5 for SPI1 MOSI on PA7

//    GPIOA->PUPDR |=  GPIO_PUPDR_PUPDR15;   // Ensure all pull up pull down resistors are enabled
//    GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR5;   // Ensure all pull up pull down resistors are disabled
//    GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR6;   // Ensure all pull up pull down resistors are disabled
//    GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR7;   // Ensure all pull up pull down resistors are disabled

    SPI1->CR1 = 0x00;
    SPI1->CFG1=(7u << SPI_CFG1_DSIZE_Pos);  // 8bit data size
    SPI1->CFG1 |= (4 << SPI_CFG1_MBR_Pos); // Master baud rate: master clock / 8
    SPI1->CFG2 |= SPI_CFG2_MASTER ;  // master mode
//    SPI1->CFG2 |= SPI_CFG2_CPOL;
//    SPI1->CFG2 |= SPI_CFG2_CPHA;
//    SPI1->CFG2 &= ~SPI_CFG2_AFCNTR; // Do not keep SS
    SPI1->CFG2 |=  SPI_CFG2_SSOE|\
                  SPI_CFG2_CPOL|\
                  SPI_CFG2_CPHA|\
                  SPI_CFG2_AFCNTR|\
                  SPI_CFG2_MASTER;

//    SPI1->CFG1 &= ~SPI_CFG1_FTHLV;
//   SPI1->CFG1 |= SPI_CFG1_FTHLV_0 | SPI_CFG1_FTHLV_1;
    SPI1->CR1 |= SPI_CR1_SPE;           // spi enable
    //Сброс флага окончания предыдущей передачи
    //Включение SPI
    SPI1->CR1 |= SPI_CR1_CSTART;


    while((SPI1->SR & SPI_SR_TXP) == 0){__NOP();};
    SPI1->TXDR = 0x55;
    while((SPI1->SR & SPI_SR_RXP) == 0){__NOP();};
}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 14:08 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1182
Jaguar_showjumping писал(а):
В интернете люди плачут от SPI H7 через одного.

У тебя в 2017 не работал SPI на L0, в 2018 - на L4, в 2020 не работает на H7, тенденцию улавливаешь? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 15:34 
Старожил

Зарегистрирован: 19 окт 2016, 13:57
Сообщения: 408
Reflector писал(а):
Jaguar_showjumping писал(а):
В интернете люди плачут от SPI H7 через одного.

У тебя в 2017 не работал SPI на L0, в 2018 - на L4, в 2020 не работает на H7, тенденцию улавливаешь? :)

1. В 2021 буду настраивать SPI в stm32mp1?
2. SPI - это не мое?

:))))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 16:59 
Старожил

Зарегистрирован: 19 окт 2016, 13:57
Сообщения: 408
Не хватало
SPI1->CFG2 |= SPI_CFG2_SSM;
SPI1->CR1 |= SPI_CR1_SSI;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 17:14 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1182
Jaguar_showjumping писал(а):
Не хватало
SPI1->CFG2 |= SPI_CFG2_SSM;
SPI1->CR1 |= SPI_CR1_SSI;

Это и на старых SPI нужно, просто там эти биты в одном регистре.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 17:31 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4787
Откуда: Кемеровская область, Киселевск
Jaguar_showjumping изучать референс не пробывал? Практикуешь ардуино подход? И копирование тырнета?

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 17:41 
Старожил

Зарегистрирован: 19 окт 2016, 13:57
Сообщения: 408
Oxford писал(а):
Jaguar_showjumping изучать референс не пробывал? Практикуешь ардуино подход? И копирование тырнета?

референс - моя любимая книжка :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 20:12 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 520
Откуда: Киев
Я в ваш код не вчитывался кернел тоже частоту настроили?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 28 мар 2020, 20:27 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2008
Если сделать через CubeMX, то тоже попадаете в плачущую половину любителей SPI?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 29 мар 2020, 23:59 
Старожил

Зарегистрирован: 19 окт 2016, 13:57
Сообщения: 408
MasterElectric писал(а):
Я в ваш код не вчитывался кернел тоже частоту настроили?


Дада, спасибо большое! Все настроил! Все режимы тактирования попробовал, все режимы работают, любые скорости получал, все хорошо.
Просто не хватало SSM и SSI
SPI1->CFG2 |= SPI_CFG2_SSM;
SPI1->CR1 |= SPI_CR1_SSI;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 30 мар 2020, 00:52 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4787
Откуда: Кемеровская область, Киселевск
надо не пробывать и гадать, а читать мануал и вникать

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 30 мар 2020, 01:58 
Старожил

Зарегистрирован: 19 окт 2016, 13:57
Сообщения: 408
Oxford писал(а):
надо не пробывать и гадать, а читать мануал и вникать

lделал строго по референсу в связке с кубом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 30 мар 2020, 22:13 
Заглядывает иногда

Зарегистрирован: 02 янв 2016, 06:47
Сообщения: 132
попробуйте CubeMX + HAL -))
работает сразу , без проблем, и с дма -)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 30 мар 2020, 22:47 
Старожил

Зарегистрирован: 13 июл 2016, 11:05
Сообщения: 457
vasiliuz писал(а):
попробуйте CubeMX + HAL -))
работает сразу , без проблем, и с дма -)


:-))))))))))))))

А ежели мазохизм?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 31 мар 2020, 00:15 
Заглядывает иногда

Зарегистрирован: 02 янв 2016, 06:47
Сообщения: 132
serglg писал(а):
vasiliuz писал(а):
попробуйте CubeMX + HAL -))
работает сразу , без проблем, и с дма -)


:-))))))))))))))

А ежели мазохизм?


Сейчас на меня налетят...
Но настройка перефирии руками это просто пустая трата времени....
она делается единожды при старте...
какая разница, кто заполнит структуры -) Зачем заниматься ерундой, лучше потратить время на то, что должно делаться по этому spi, чем тратить время на его настройку...
Тем более, что с куба, оно работает с коробки... Другое дело, что мануал надо читать и так и так... но настроить в кубе достаточно

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 31 мар 2020, 11:31 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4787
Откуда: Кемеровская область, Киселевск
vasiliuz детектед абдуриностайл

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 31 мар 2020, 23:29 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2008
Oxford писал(а):
vasiliuz детектед абдуриностайл

Все так много об этом стиле, но как бы увидеть несколько коротких примеров ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 01 апр 2020, 10:31 
Старожил

Зарегистрирован: 13 июл 2016, 11:05
Сообщения: 457
x893 писал(а):
Oxford писал(а):
vasiliuz детектед абдуриностайл

Все так много об этом стиле, но как бы увидеть несколько коротких примеров ?


ЗДЕСЬ про это все знают, есть синоним - "калокуб".
:-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 01 апр 2020, 12:19 
Заглядывает иногда

Зарегистрирован: 04 окт 2017, 22:23
Сообщения: 168
[/quote] ну или от обратного - настроить в кубе, и посмотреть как он это делает, если у самого не получается... тоже элемент развития...[/quote]
НЕЕЕТ!!! НЕ НАДО!!! НЕ СМОТРИТЕ ТУДА!!!!!!
Пытаться что-то подглядеть в калокубе займет больше времени чем изучение референса, это в SPL можно было подсмотреть, а в калокубе сплошной треш, угар и содомия...


Последний раз редактировалось radioslon 01 апр 2020, 14:39, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 01 апр 2020, 12:42 
Старожил

Зарегистрирован: 01 фев 2013, 02:21
Сообщения: 329
vasiliuz писал(а):
serglg писал(а):
vasiliuz писал(а):
попробуйте CubeMX + HAL -))
работает сразу , без проблем, и с дма -)


:-))))))))))))))

А ежели мазохизм?


Сейчас на меня налетят...
Но настройка перефирии руками это просто пустая трата времени....
она делается единожды при старте...
какая разница, кто заполнит структуры -) Зачем заниматься ерундой, лучше потратить время на то, что должно делаться по этому spi, чем тратить время на его настройку...
Тем более, что с куба, оно работает с коробки... Другое дело, что мануал надо читать и так и так... но настроить в кубе достаточно

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


ну..... например как бы кубом реализуете динамическое изменение тактовой частоты всего камня? Сразу до кучи, на SPI шине у вас может быть дофига устройств с разными максимальными скоростями ( и возможно другими параметрами).. В кубе такое не накликаешь)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 01 апр 2020, 15:40 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2008
besitzeruf писал(а):
ну..... например как бы кубом реализуете динамическое изменение тактовой частоты всего камня? Сразу до кучи, на SPI шине у вас может быть дофига устройств с разными максимальными скоростями ( и возможно другими параметрами).. В кубе такое не накликаешь)

Это зависит от уровня развития мозга.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 01 апр 2020, 17:05 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2008
serglg писал(а):
ЗДЕСЬ про это все знают, есть синоним - "калокуб".
:-)

Все знают, но молчат.
А меня терзают смутные сомнения.
И про ардуиостайл - такая же полная тайна.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 01 апр 2020, 19:21 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 520
Откуда: Киев
строить проект на готовых сторонних либах, без глубокого понимания процессов, наверное это и есть абдуриностиль (+ на разных готовых модулях). Ну или тыкать в калокубе наугад настройки, а потом плодить на форумах темы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 01 апр 2020, 19:59 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2008
MasterElectric писал(а):
строить проект на готовых сторонних либах, без глубокого понимания процессов, наверное это и есть абдуриностиль (+ на разных готовых модулях). Ну или тыкать в калокубе наугад настройки, а потом плодить на форумах темы.

То есть - если есть понимамние процессов или тыкать не наугад, то всё нормально ?
Видно, что вопросов больше с кодом на обращениях с регистрами.
То есть нет понимания.
Вопросов по конфигурации черз Куб нет. От слова - совсем.
Вопросов по работе через класс SPI тоже не наблюдается.

То есть абдуриностиль не от слова ардуино, а от отсутствия понимания.
А что там конкретно openstm, mbed и т.д. уже не важно.

То есть проблема не в библиотеках/средствах, а в головах.
Пока любители программирования не займутся своим прямым делом - чисткой сараев, ничего не получится.

https://www.youtube.com/watch?v=0mJ4W2R_MMo


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу взвести SPI на stm32h743
СообщениеДобавлено: 02 апр 2020, 06:40 
Заглядывает иногда

Зарегистрирован: 02 янв 2016, 06:47
Сообщения: 132
любители регистров.... и хардкора...
почему тогда не получается настроить руками?

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

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

в кубе нужно настроить пины, порты, выбрать скорость, выбрать ДМА, указать размеры и режим работы ДМА, если нужно поменять настройки GPIO,
настроить MPU, в проекте настроить скатер, прописать буферы, запустить\запускать ДМА передачу\прием
всё...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB