Top.Mail.Ru
Уведомления
Очистить все

[Закреплено] STM32 для начинающих

Страница 8 / 17
(@aleksej-6)
Level 3

@eduard 

Хорошая статья !

Я у себя обратил внимания (сейчас, на Н7), что "чип селект" сигнал отключает ведомого раньше чем все данные приняты микроконтроллером ) 

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

Чего делать, надо дальше думать ) 

// Приём
while (!(SPI1->SR & SPI_SR_RXP)); // Ждать завершения приёма

rf_data = *(volatile uint8_t *) &(SPI1->RXDR);
rf_data = *(volatile uint8_t *) &(SPI1->RXDR);

 

На Н7 RXP - это флаг состояния буфера RX. Надо да, проверять именно факт отправки данных. И совершенно не могу понять как выстроить взаимосвязь между размерами буфера, форматом отправленных (принятых) данных (размером отправляемых пакетов)...  

У меня два раза считываю данные по 8 бит. Если считать один раз 16 бит, в данных будет полная ерунда... Хотя вроде как должно быть выравнивание данных. Или буфер как то сдвинуть надо... 

ОтветитьЦитата
Размещено : 05.05.2023 09:14
(@eduard)
Level 4 Moderator

@aleksej-6 Я тут написал тактирование для H7xx. Пока для кварца на 25. У меня такой стоит.

Весь материал здесь https://disk.yandex.ru/d/ymB60PAjT5rjTw

Пример в каталоге MTWorkDevel\Developer\Tests MK\H7xx\

После праздников буду разбираться с SPI

 

ОтветитьЦитата
Размещено : 05.05.2023 19:04
(@aleksej-6)
Level 3

@eduard 

Хорошо, спасибо

 

ОтветитьЦитата
Размещено : 06.05.2023 02:15
(@aleksej-6)
Level 3

Доброго времени !

По поводу SPI на H7 серии, там интересная особенность есть с выводом sck. У себя для нормального тактирования выставил в настройках пина PULUP. Иначе от любой наводки (даже если руку поднести) идёт сбой (может cube неверно выставляет настройки, пока не разбирался).

Дисплей с контроллером  ST7789 работает нормально. Сейчас получил дисплей с ST7789V, запустить не могу. Эдуард, заведомо рабочего файла инициализации у вас нету случайно ?)

ОтветитьЦитата
Размещено : 10.05.2023 09:56
Aveal
(@aveal)
Top level Admin

@aleksej-6 Доброго! На github'е можно поискать, сто процентов будут варианты, вот например, я по-быстрому пролистал - ссылка.

ОтветитьЦитата
Создатель темы Размещено : 10.05.2023 11:05
(@aleksej-6)
Level 3

@aveal Спасибо, попробую дальше по разбираться )

ОтветитьЦитата
Размещено : 10.05.2023 12:16
(@eduard)
Level 4 Moderator

На такой нет.

ОтветитьЦитата
Размещено : 10.05.2023 19:56
(@aleksej-6)
Level 3

Попробовал и так и этак вновь полученный экранчик запустить. Решил, что его проще "выкинуть", слишком много не известных. Или режим цветности не тот (18 бит) или он вообще только по параллельному интерфейсу может работать, или просто попался бракованный. В той документации что идёт на него вроде как всё понятно, но это же китай (хотя конечно же это я чего то не так делаю, но разбираться время терять не хочу). Чего они там могли нового на придумать, да и в документе на экран есть противоречия в информации.

Заказал новые, сразу три разных, с отзывами о работе )  Какой ни будь то заработает )     

ОтветитьЦитата
Размещено : 12.05.2023 10:09
(@aleksej-6)
Level 3

Да, покупал экранчик на алиэкспрессе, продавцу написал - тишина в ответ. Да и ладно.

Прочитал на одном из форуме, идея про то что переключать spi с 8 бит в режиме передачи команд на 32 бит (например) в режиме передачи данных. Вопрос, верная ли эта идея ?

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

(маленький экранчик не хочу пока "переводить" на параллельный интерфейс, он и выводы "пожрёт" на МК, и разводку городить на плате, да и сам пока не начал делать на параллельном интерфейсе, пока не знаю чего там и как)   

ОтветитьЦитата
Размещено : 12.05.2023 10:49
(@eduard)
Level 4 Moderator

@aleksej-6 Перезакачайте библиотеку на STM. Я там ошибку в тактировании нашёл.

ОтветитьЦитата
Размещено : 12.05.2023 19:55
(@aleksej-6)
Level 3

@eduard Хорошо )

ОтветитьЦитата
Размещено : 13.05.2023 10:56
(@eduard)
Level 4 Moderator

@aleksej-6 Начал пробовать SPI. Не могу тактирование найти как включается. Как к шине тактирования подключаться знаю, а как источник выбрать, не нашёл.

ОтветитьЦитата
Размещено : 13.05.2023 15:34
(@aleksej-6)
Level 3

Эдуард, я только кубом всё настраиваю..

https://github.com/rogerkupari/STM32H7/blob/master/SPI/main.c - вот такая ссылка есть, может она поможет. 

И заметил такую особенность, все выводы spi я у себя pul-up подключаю, иначе руку не поднести. Сбивается и периодическая ерунда получается с данными, соответственно.  

SPI1->CR2 = 0; // количество данных

// Enable SPI
SPI1->CR1 |= SPI_CR1_SPE;    
SPI1->CR1 |= SPI_CR1_CSTART;
ОтветитьЦитата
Размещено : 14.05.2023 03:23
(@eduard)
Level 4 Moderator

@aleksej-6 Спасибо. Завтра глянем.

Глянул сегодня. У него инициализация тактирования по умолчанию, а меня интересует вот эта часть.

изображение

 

ОтветитьЦитата
Размещено : 14.05.2023 08:01
(@aleksej-6)
Level 3

На такой вопрос у меня нет ответа (

Через настройку куба, spi Н7. У меня задействованы spi1 и spi2, попробовал перенастроить 2spi, после изменения у него настроек (cpha 1), 1spi заработал по другому. Экран на нём висел - перестал работать. Перепроверил пару раз - экран стабильно переставал работать...

И при считывание буфера (при приёме) первый результат у меня всегда ложный, вторые и последующие данные всегда верные. Думал это из-за фазы или полярности sck. 

Наверное вручную лучше настраивать...

(толку от меня немного, но некоторое время буду отсутствовать))     

ОтветитьЦитата
Размещено : 15.05.2023 12:57
Страница 8 / 17
Поделиться: