реклама на сайте
подробности

 
 
> STM32H743 SPI, Не работает
hd44780
сообщение Jul 18 2018, 13:34
Сообщение #1


Профессионал
*****

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



Привет всем.
Попал тут в руки проц STM32H743 в виде платы NUCLEO-H743I.

Разобрался, как запустить его на все 400 МГц, Systick завёл, светодиодиками помигал - все это заработало. Частоту систика проверил осциллом.
Перешёл к SPI (маленький дисплейчик ILI9163). Сам дисп рабочий, работал на Ф103. Драйвер диспа собственно оттуда же.
Драйвер разделён на 2 части - низкоуровневая (работа с SPI и ногами) и т.н. высокоуровневая (пуляние в дисп команд, отрисовка точек, знакогенератор и пр).
Соответственно в адаптации нуждается только низкоуровневая часть, т.к. высокоуровневая напрямую в ноги и SPI не лезет.
С ногами nCS, nRESET и пр. ногодрыгом я управился, они работают нормально, а с SPI затык - синхра идёт исправно, а из ноги MOSI упорно прёт ноль. Нога MISO в данном случае не нужна вообще, т.к. у дисплея её нет.

Пишу на помеси из регистров и кубового хала. М.б. это и нехорошо, но с ходу писать на регистрах на проце, которого раньше в глаза не видел как-то нехорошо.

Инит пинов:

CODE
// Configure PA5 - SPI1 SCK
GPIO_InitStruct.Pin = GPIO_PIN_5; // SCK
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
// GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/*
// Configure PA7 - SPI1 MOSI
// Configure PB5 - SPI1 MOSI
// Configure PD7 - SPI1 MOSI
GPIO_InitStruct.Pin = GPIO_PIN_7; // MOSI
// GPIO_InitStruct.Pin = GPIO_PIN_5; // MOSI
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
// GPIO_InitStruct.Pull = GPIO_PULLUP;
// GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
// HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
*/
// PA7 - SPI1 MOSI
// MODER - AF = 10
GPIOA->MODER |= GPIO_MODER_MODER5_1; // 10
// TYPER - PP = 0 - Push-pull
GPIOA->OTYPER |= GPIO_OTYPER_IDR_7; // 0
// SPEEDR - OSPEEDRy = 11
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7; // 11
// PUPD_R = 10 - Pull-down
GPIOA->PUPDR |= GPIO_PUPDR_PUPDR7_1; // 10


Нога PA5 (SCK) работает как угодно - хоть халом её инитить, хоть чем. PA7 (MOSI) - не работает никак. Инитил по-разному.

Инит SPI (в основном хал):
CODE
/*** Configure the SPI peripheral ***/
SPI_PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_SPI123;
SPI_PeriphClkInit.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL;
HAL_RCCEx_PeriphCLKConfig(&SPI_PeriphClkInit);

/* Enable SPI clock */
// __HAL_RCC_SPI1_CLK_ENABLE();
// SET_BIT (RCC->APB2ENR, RCC_APB2ENR_SPI1EN);
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;

// SPI Config
hnucleo_Spi.Instance = SPI_PORT;
// hnucleo_Spi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
hnucleo_Spi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
hnucleo_Spi.Init.Direction = SPI_DIRECTION_2LINES;
// hnucleo_Spi.Init.Direction = SPI_DIRECTION_2LINES_TXONLY;
hnucleo_Spi.Init.CLKPhase = SPI_PHASE_2EDGE;
hnucleo_Spi.Init.CLKPolarity = SPI_POLARITY_HIGH;
hnucleo_Spi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hnucleo_Spi.Init.CRCPolynomial = 7;
hnucleo_Spi.Init.DataSize = SPI_DATASIZE_8BIT;
hnucleo_Spi.Init.FirstBit = SPI_FIRSTBIT_MSB;
hnucleo_Spi.Init.NSS = SPI_NSS_SOFT;
hnucleo_Spi.Init.TIMode = SPI_TIMODE_DISABLE;
hnucleo_Spi.Init.Mode = SPI_MODE_MASTER;
hnucleo_Spi.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE; /* Recommended setting to avoid glitches */

hnucleo_Spi.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
hnucleo_Spi.Init.CRCLength = SPI_CRC_LENGTH_8BIT;
hnucleo_Spi.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
hnucleo_Spi.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
hnucleo_Spi.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
hnucleo_Spi.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
hnucleo_Spi.Init.MasterSSIdleness = 0x00000000;
hnucleo_Spi.Init.MasterInterDataIdleness = 0x00000000;
hnucleo_Spi.Init.MasterReceiverAutoSusp = 0x00000000;

HAL_SPI_Init(&hnucleo_Spi);

// Enable SPI peripheral
SET_BIT( SPI_PORT->CR1 , SPI_CR1_SPE);

SPI_PORT === SPI1.

Отправка байта в SPI1 (хал):
CODE
// Чтение/запись байта SPI
void ili9162_sendByte ( uint8_t data )
{
/*
// Длина передаваемых байт - 1
MODIFY_REG (SPI1->CR2, SPI_CR2_TSIZE, 1);
// Старт передачи
SET_BIT(SPI1->CR1, SPI_CR1_CSTART);

while ( !( SPI1 -> SR & SPI_SR_TXP ) );
SPI1 ->TXDR = data;

// Ждать завершения передачи
// while ( ! ( SPI1 -> SR & SPI_SR_TXC ) );
*/
uint8_t data_in;
HAL_StatusTypeDef status = HAL_OK;
status = HAL_SPI_TransmitReceive(&hnucleo_Spi, &data_in, &data, 1, 1000);
} // SPI_sendByte


Моя поделка на регистрах не пашет вообще, я пока бросил, оставил хал.
Проверяю всё это вызовом в вечном цикле ili9162_sendByte ( 0xAA );

В чём может быть дело? Если надо, выложу весь проект на 9 атоллике.

Спасибо.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Jul 21 2018, 17:47
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Да нормально все работет... перепишите АККУРАТНО из моего проекта по смыслу обмен. И DMA и программный обмен...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- hd44780   STM32H743 SPI   Jul 18 2018, 13:34
- - Genadi Zawidowski   Как ни странным может показаться, при передаче 8-b...   Jul 18 2018, 14:44
|- - hd44780   Судя по осциллу SPI и его ноги ожили. Долбаный хал...   Jul 18 2018, 15:46
- - Genadi Zawidowski   Разумеется, всегда надо (если иное не сказано). А ...   Jul 18 2018, 16:17
- - hd44780   С C/D и nCS всё в порядке: CODEvoid ILI9163writec...   Jul 18 2018, 16:32
- - MasterElectric   Если просто писать в TXDR данные пишуться в буфер,...   Jul 19 2018, 22:33
- - hd44780   Что-то я совсем запутался Некий прогресс есть, хо...   Jul 20 2018, 14:23
- - MasterElectric   Как разберусь сам помогу) делаю для NRF24. К коду ...   Jul 20 2018, 16:02
|- - hd44780   Цитата(MasterElectric @ Jul 20 2018, 19:0...   Jul 20 2018, 17:22
- - Tarbal   Пару лет назад я делал проект на похожем процессор...   Jul 20 2018, 17:23
- - MasterElectric   hd44780 Вроде бы все получилось. Особое внимание н...   Jul 21 2018, 07:57
- - MasterElectric   поправочка : Код SPI_NRF->SPI->CFG1 = SPI...   Jul 21 2018, 09:11
|- - hd44780   Цитата(MasterElectric @ Jul 21 2018, 12:1...   Jul 21 2018, 09:25
- - MasterElectric   Заработало!!! Причем особо ничего не м...   Jul 21 2018, 10:41
- - Arlleex   Че-то вы тут поникли все. Надо свою поделку допаят...   Jul 21 2018, 10:50
- - MasterElectric   В общем не получилось побороть SPI, когда количест...   Jul 21 2018, 12:08
- - hd44780   Я кое-как скрутил отправку одного байта ... SPI ди...   Jul 21 2018, 16:42
- - MasterElectric   Почему одного байта? Я пакеты нормально слал. Да н...   Jul 21 2018, 17:46
|- - hd44780   Цитата(MasterElectric @ Jul 21 2018, 20:4...   Jul 22 2018, 06:11
- - MasterElectric   О вы уже успели и ДМА изучить... это олично... нам...   Jul 21 2018, 17:49
- - Genadi Zawidowski   Файл hardware.c hardware_spi_master_initialize har...   Jul 21 2018, 17:58
- - MasterElectric   Genadi Zawidowski Спасибо, буду изучать.   Jul 21 2018, 18:18
- - Genadi Zawidowski   Цитата( SPI_PORT->SR & SPI_SR_RXP != 0 ...   Jul 22 2018, 06:46
- - hd44780   Genadi Zawidowski , да, чёт я тупанул, спасибо, по...   Jul 22 2018, 07:28
- - MasterElectric   Ситуация с передачей через ДМА совсем отвратительн...   Jul 22 2018, 15:19
- - Genadi Zawidowski   Цитатаподелитесь кодом А чем мой не устраивает-то?...   Jul 22 2018, 15:43
- - MasterElectric   Я смотрел Ваш код (частично взял оттуда), вроде бы...   Jul 22 2018, 16:24
- - Genadi Zawidowski   ЦитатаЕсли есть возможность попробуйте передать па...   Jul 22 2018, 16:37
- - MasterElectric   Удалось побороть как всегда благодаря RM: КодWhen ...   Jul 23 2018, 07:01
- - Genadi Zawidowski   Снять SPE бит в конце пробовали?   Jul 23 2018, 07:13
- - MasterElectric   Да, в обработчике прерывания EOT, отключаю.   Jul 23 2018, 07:28
- - Genadi Zawidowski   Тогда не знаю... В моем варианте connect/send_fram...   Jul 23 2018, 07:38
- - MasterElectric   Да вроде нормальный. https://drive.google.com/open...   Jul 23 2018, 08:06
- - MasterElectric   После отключения SPI (SPE), в регистре статуса поя...   Jul 23 2018, 11:19
- - hd44780   MasterElectric , у Вас приём через прерывание норм...   Jul 23 2018, 11:56
- - MasterElectric   может полярность или фаза не так настроена. пока п...   Jul 23 2018, 18:15
|- - hd44780   Цитата(MasterElectric @ Jul 23 2018, 21:1...   Jul 24 2018, 05:11
- - hd44780   Датчик заработал, всё гуд. Осталось его только на ...   Jul 24 2018, 16:40
- - MasterElectric   тут наверное ошибочка Код // Disable SPI SET_B...   Jul 24 2018, 17:51
- - Genadi Zawidowski   ЦитатаОно тупо виснет на первом цикле ожидания еди...   Jul 24 2018, 21:33
- - hd44780   Да, со SPE опечатка вышла при вставке кода в форум...   Jul 25 2018, 07:08
- - MasterElectric   Вы же не указываете кол-во передаваемых байт?   Jul 25 2018, 14:33
|- - hd44780   Цитата(MasterElectric @ Jul 25 2018, 17:3...   Jul 25 2018, 16:26
- - MasterElectric   Да не заметил. Я думаю под себя перепишите. Приме...   Jul 25 2018, 20:11
|- - hd44780   Цитата(MasterElectric @ Jul 25 2018, 23:1...   Jul 26 2018, 04:28
- - MasterElectric   У меня план ковыряний примерно такой же, QSPI давн...   Jul 26 2018, 15:23
- - hd44780   MasterElectric, удачи. Мои эксприменты, похоже, от...   Jul 26 2018, 16:43
- - MasterElectric   Печалька, а где вы ее кстати покупали, в китае? у ...   Jul 26 2018, 17:35
|- - hd44780   Цитата(MasterElectric @ Jul 26 2018, 20:3...   Jul 26 2018, 18:01
- - MasterElectric   ну скорее всего ошибка в коде и он уходит в стоп р...   Jul 26 2018, 18:06
- - hd44780   Осциллом 3.3 платы посмотрел - чисто. Может иголки...   Jul 27 2018, 13:33
|- - hd44780   Вот так нормально работает опросом: Код// Чтение/...   Jul 29 2018, 12:27
- - hd44780   Датчик успешно переехал на SPI3 .   Jul 29 2018, 15:27
- - hd44780   Небольшой оффтоп в теме про SPI: Покопался ещё на...   Aug 5 2018, 15:02
- - hd44780   Всё-таки это косяки в либах атоллика (я про sprint...   Aug 18 2018, 07:00
- - nanorobot   Цитата(hd44780 @ Aug 18 2018, 12:00) Всё-...   Aug 18 2018, 11:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 19:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016