STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Встал на лапы
Сообщения: 125
Зарегистрирован: Вс мар 01, 2009 20:41:19

Сообщение xVekx »

Калокуб STM32Cube_FW_F4_V1.24.0 "Add support of HAL callback registration feature" ну наконец годную вещь завезли...
Реклама
Открыл глаза
Сообщения: 74
Зарегистрирован: Пн янв 21, 2019 17:38:29

Сообщение DrobyshevAlex »

Здравствуйте! Подскажите пожалуйста, мне нужно подключить SDRAM и дисплей 2.4 дюйма, вроде бы на SPFD5408, если верить описанию к покупке)
Возможно вместо SDRAM остановлюсь на SRAM. Хочу заказать МК, но не могу понять какой лучше.
Допустим серия 429 имеет како то механизм LCD-TFT. Это поможет для работы с данным дисплеем?
Прочел, что поможет FSMC, но для SRAM тоже нужно FSMC, на 407 серии он есть, сколько там можно устройств подключить? Там речь про какие то bank1 и 2 это омжно два независимых устройства подключать?
Но для SDRAM нужно FMC которое в 427, 429 моделях. Но там я не вижу FSMC который подходит для дисплея)) Но есть, как я писал выше LCD-TFT.

Вообщем запутался, уже заказал 405 а там вообще не фига нет, хочу заказать новый, но теперь хочу посоветоваться))

Вообщем мне бы иметь возможность подключить одновременно LCD и SRAM/SDRAM. но не супер дорого)) Какой МК можно взять?

Добавлено after 1 minute:
Если кому интересно, то это в продолжение https://radiokot.ru/forum/viewtopic.php?f=59&t=161489
Реклама
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Вообще-то, демоплата от ST, а именно - STM32F429I-DISCO имеет на борту и SDRAM, и дисплейчик 2.6". Камушек там, естественно, 429I, SDRAM 8M, и, на закуску, ST-Link...

Чтобы потренироваться - самое то!
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт мар 28, 2019 23:41:10

Сообщение Sergeba »

Народ, подскажите, уже голову сломал. Начал изучение с STM32F0P30. Попалась китайская девайсина с этим МК, реле, входом и светодиодом. Устройство с Модбас интерфейсом. Не понравилась логика работы, решил написать свой код. Использую Cube. Закопался c RS485. В устройстве используется преобразователь UART-RS485 с переключателем DE. Всё вроде бы оформил как надо, пытаюсь отправлять наружу текст. Всё получилось, вижу его на компе в гипртерминале. Решил проверить работу переключателя DE и тут непонятка. Использую HAL_GPIO_WritePin (GPIOA, GPIO_PIN_0, GPIO_PIN_SET), текст проходит, меняю на GPIO_PIN_RESET и всё равно вижу в Гипертерминале мой текст. По идее DE должен включать/отключать передачу... Разве нет?
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Sergeba , в большинстве F0 есть как и аппаратное управление DE так и аппаратная поддержка модбас.
калокуб и софтовое ногодрочерство попросту не нужны, нужно начать читать и думать.
Реклама
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт мар 28, 2019 23:41:10

Сообщение Sergeba »

[uquote="dosikus",url="/forum/viewtopic.php?p=3603922#p3603922"]Sergeba , в большинстве F0 есть как и аппаратное управление DE так и аппаратная поддержка модбас.[/uquote]

Я правильно понял, что даже в случае, если я софтово дёргаю ногу, на которой висит DE+RE и запрещаю передачу, "аппаратной поддержке" пофиг и она пропускает пакет?

А калокуб приходится использовать т.к. удобно для старта - накидал основу - и он всё нужное соберёт для инициализации и т.п.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3388
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Sergeba писал(а): "аппаратной поддержке" пофиг и она пропускает пакет?
А вы включили эту аппаратную поддержку? В кубе это "Hardware Flow Control (RS485)".

Для этого МК я бы не стал использовать куб как кодогенератор. Если нужно упростить работу, лучше используйте SPL. Она требует меньше ресурсов и больше контроля над кодом.
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт мар 28, 2019 23:41:10

Сообщение Sergeba »

[uquote="Мурик",url="/forum/viewtopic.php?p=3604135#p3604135"][/quote]А вы включили эту аппаратную поддержку? В кубе это "Hardware Flow Control (RS485)".[/uquote]

Да, в том то и дело, что включил. И теперь пакеты летят через порт несмотря на то, как я дёргаю ногу. Причём всё ещё хуже... У меня на плате разведен сигнал DE+RE на ногу PA0, хотя по умолчанию в Кубе DE резервирует ногу PA1. После генерации кода, я вручную меняю на PA0 - пакеты идут - я их вижу, далее становиться вообще грустно (т.к. не втыкаю почему...) - один раз забыл поправить, в тексте остался PA1 и пакеты продолжили проходить не взирая на какие-то там сигналы и ноги... Такое впечатление, что я подключился не через "адаптер" RS485, а напрямую, через UART... Где же пропало управление потоком?

Добавлено after 5 hours 19 minutes 58 seconds:
Попробовал разные варианты. Получилось так:

1. Включаю аппаратную поддержку. Пакеты идут невзирая на дрыганье сигналом DE+RE
2. Выключаю аппаратную поддержку. Выход для DE не назначаю. Пакеты продолжают проходить. Предполагаю из-за того, что соответствующий выход имеет неопределённое значение.
3. Выключаю аппаратную поддержку. Назначаю выход для DE. Теперь всё в порядке - работает софтовое управление потоком.

Вот теперь вопрос. Как мне портировать Modbus? Тут, немного выше писали, что F0 имеет аппаратную поддержку Modbus, но что-то я не нашёл в RM такого...
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="Sergeba",url="/forum/viewtopic.php?p=3604207#p3604207"]но что-то я не нашёл в RM такого...[/uquote]
Чип полностью озвучьте...
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

Добрый день, у меня модуль SDIO и дисплей используют один вывод и подключены через мультиплексор. Так как они не работают одновременно предполагалось изменять конфигурацию этого вывода по необходимости. С AF на PP конфигурация изменяется и работает без проблем, а вот обратно конфигурация изменяется, а пакетов нет. Подскажите пожалуйста, можно ли вообще так делать?

Код: Выделить всё

#define 	PD2_TFT_ON		GPIOE->BSRR = GPIO_BSRR_BR_5;\
						GPIOD->MODER &= ~GPIO_MODER_MODE2;\
						GPIOD->MODER |= GPIO_MODER_MODE2_0;
												 
#define   PD2_SDIO_ON		GPIOE->BSRR = GPIO_BSRR_BS_5;\
						GPIOD->MODER &= ~GPIO_MODER_MODE2;\
						GPIOD->MODER |= GPIO_MODER_MODE2_1;
Пробовал так же отключать тактирование SDIO пока оно не работает, не помогает.
Последний раз редактировалось baghear Чт апр 04, 2019 15:52:21, всего редактировалось 1 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Можно, конечно. Только отключать тактирование сконфигурированному и включенному модулю нехорошо. Лучше в настройках самого модуля его отключать.

А вот над этим стоит хорошенько задуматься.

Код: Выделить всё

GPIOE->BSRR |= GPIO_BSRR_BR_5;
Впрочем, и над этим тоже

Код: Выделить всё

GPIOD->MODER &= ~GPIO_MODER_MODE2;
GPIOD->MODER |= GPIO_MODER_MODE2_1;
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

Опечатка, я не отключал тактирование модулю отключал сам модуль

Код: Выделить всё

RCC->APB2ENR &= ~RCC_APB2ENR_SDIOEN;
Поясните пожалуйста, почему над кодом выше надо задуматься?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="baghear",url="/forum/viewtopic.php?p=3608772#p3608772"]Поясните пожалуйста, почему над кодом выше надо задуматься?[/uquote]Во-первых, все эти значки около операции присваивания что-то да значат. Во-вторых, как следствие первого, регистр BSRR только для чтения, зачем его читать?
Друг Кота
Аватара пользователя
Сообщения: 4906
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

VladislavS: А он его только пишет, не читая, если верить коду (исправленному?)
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

Ребята все заработало, проблема была в том, что по окончанию работы с дисплеем эта ножка устанавливается в низкое состояние. Установил в высокое и все заработало.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="baghear",url="/forum/viewtopic.php?p=3608772#p3608772"]Поясните пожалуйста, почему над кодом выше надо задуматься?[/uquote]Над BSRR, вижу, поработали. А дальше? По коду вижу задачу поменять значения битов GPIO_MODER_MODER2_0 и GPIO_MODER_MODER2_1 на противоположные. Давай сравнивать.

Код: Выделить всё

//  GPIOD->MODER &= ~GPIO_MODER_MODER2;
        MOVS     R0,#+48
        MVNS     R0,R0            ;; #-49
        LDR      R1,??main_0      ;; 0x48000c00
        LDR      R2,[R1, #+0]
        ANDS     R2,R2,R0
        STR      R2,[R1, #+0]
//  GPIOD->MODER |= GPIO_MODER_MODER2_1;
        MOVS     R2,#+32
        LDR      R3,[R1, #+0]
        ORRS     R3,R3,R2
        STR      R3,[R1, #+0]

Код: Выделить всё

//  GPIOD->MODER = GPIOD->MODER & ~GPIO_MODER_MODER2 | GPIO_MODER_MODER2_1;
        LDR      R0,??main_0      ;; 0x48000c00
        LDR      R1,[R0, #+0]
        MOVS     R2,#+48
        BICS     R1,R1,R2
        MOVS     R2,#+32
        ORRS     R2,R2,R1
        STR      R2,[R0, #+0]

Код: Выделить всё

//  GPIOD->MODER ^= GPIO_MODER_MODER2;
        LDR      R0,??main_0      ;; 0x48000c00
        LDR      R1,[R0, #+0]
        MOVS     R2,#+48
        EORS     R2,R2,R1
        STR      R2,[R0, #+0]
Последний вариант, правда, надо применять очень "строго" и я бы его не рекомендовал. Зато, если режим работы других ножек на GPIOD не меняется, то рекомендовал бы просто запись новой константы в MODER.
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

VladislavS СПАСИБО!!!!Но армовский асм не мой конек да и кот должен быть читабельный)))
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

То есть, ты ничего не понял? Асм там только для демонстрации во что выливается С-ный код.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

А разве не в этой теме недавно обсуждали эти конструкции, где не надо отдельно каждый бит выписывать, что лучше делать сразу все? И тоже ассемблер приводили.

Добавлено after 1 minute 26 seconds:
Я бы тоже написал в две строки... Может не совсем рационально, но зато понятнее. )))
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3609441#p3609441"]А разве не в этой теме недавно обсуждали[/uquote]Да где только не обсуждали, а толку?
Вон в соседней теме пишет

Код: Выделить всё

I2C1->DR |= data;
и сожалеет что приходится "выкручиваться" вот так

Код: Выделить всё

I2C1->DR = data;
Ответить

Вернуться в «ARM»