STM32 новичку в ARM что к чему
- Сообщения: 125
- Зарегистрирован: Вс мар 01, 2009 20:41:19
Калокуб STM32Cube_FW_F4_V1.24.0 "Add support of HAL callback registration feature" ну наконец годную вещь завезли...
- Реклама
- Сообщения: 74
- Зарегистрирован: Пн янв 21, 2019 17:38:29
Здравствуйте! Подскажите пожалуйста, мне нужно подключить 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
Возможно вместо 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
Вообще-то, демоплата от ST, а именно - STM32F429I-DISCO имеет на борту и SDRAM, и дисплейчик 2.6". Камушек там, естественно, 429I, SDRAM 8M, и, на закуску, ST-Link...
Чтобы потренироваться - самое то!
Чтобы потренироваться - самое то!
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
- Сообщения: 24
- Зарегистрирован: Чт мар 28, 2019 23:41:10
Народ, подскажите, уже голову сломал. Начал изучение с 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
Sergeba , в большинстве F0 есть как и аппаратное управление DE так и аппаратная поддержка модбас.
калокуб и софтовое ногодрочерство попросту не нужны, нужно начать читать и думать.
калокуб и софтовое ногодрочерство попросту не нужны, нужно начать читать и думать.
- Реклама
- Сообщения: 24
- Зарегистрирован: Чт мар 28, 2019 23:41:10
[uquote="dosikus",url="/forum/viewtopic.php?p=3603922#p3603922"]Sergeba , в большинстве F0 есть как и аппаратное управление DE так и аппаратная поддержка модбас.[/uquote]
Я правильно понял, что даже в случае, если я софтово дёргаю ногу, на которой висит DE+RE и запрещаю передачу, "аппаратной поддержке" пофиг и она пропускает пакет?
А калокуб приходится использовать т.к. удобно для старта - накидал основу - и он всё нужное соберёт для инициализации и т.п.
Я правильно понял, что даже в случае, если я софтово дёргаю ногу, на которой висит DE+RE и запрещаю передачу, "аппаратной поддержке" пофиг и она пропускает пакет?
А калокуб приходится использовать т.к. удобно для старта - накидал основу - и он всё нужное соберёт для инициализации и т.п.
- Сообщения: 3388
- Зарегистрирован: Пн окт 11, 2010 19:00:08
А вы включили эту аппаратную поддержку? В кубе это "Hardware Flow Control (RS485)".Sergeba писал(а): "аппаратной поддержке" пофиг и она пропускает пакет?
Для этого МК я бы не стал использовать куб как кодогенератор. Если нужно упростить работу, лучше используйте SPL. Она требует меньше ресурсов и больше контроля над кодом.
- Сообщения: 24
- Зарегистрирован: Чт мар 28, 2019 23:41:10
[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 такого...
Да, в том то и дело, что включил. И теперь пакеты летят через порт несмотря на то, как я дёргаю ногу. Причём всё ещё хуже... У меня на плате разведен сигнал 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
[uquote="Sergeba",url="/forum/viewtopic.php?p=3604207#p3604207"]но что-то я не нашёл в RM такого...[/uquote]
Чип полностью озвучьте...
Чип полностью озвучьте...
- Сообщения: 791
- Зарегистрирован: Вт июн 17, 2014 00:34:26
Добрый день, у меня модуль SDIO и дисплей используют один вывод и подключены через мультиплексор. Так как они не работают одновременно предполагалось изменять конфигурацию этого вывода по необходимости. С AF на PP конфигурация изменяется и работает без проблем, а вот обратно конфигурация изменяется, а пакетов нет. Подскажите пожалуйста, можно ли вообще так делать?
Пробовал так же отключать тактирование SDIO пока оно не работает, не помогает.
Код: Выделить всё
#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;
Последний раз редактировалось baghear Чт апр 04, 2019 15:52:21, всего редактировалось 1 раз.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Можно, конечно. Только отключать тактирование сконфигурированному и включенному модулю нехорошо. Лучше в настройках самого модуля его отключать.
А вот над этим стоит хорошенько задуматься.
Впрочем, и над этим тоже
А вот над этим стоит хорошенько задуматься.
Код: Выделить всё
GPIOE->BSRR |= GPIO_BSRR_BR_5;Код: Выделить всё
GPIOD->MODER &= ~GPIO_MODER_MODE2;
GPIOD->MODER |= GPIO_MODER_MODE2_1;- Сообщения: 791
- Зарегистрирован: Вт июн 17, 2014 00:34:26
Опечатка, я не отключал тактирование модулю отключал сам модуль
Поясните пожалуйста, почему над кодом выше надо задуматься?
Код: Выделить всё
RCC->APB2ENR &= ~RCC_APB2ENR_SDIOEN;- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="baghear",url="/forum/viewtopic.php?p=3608772#p3608772"]Поясните пожалуйста, почему над кодом выше надо задуматься?[/uquote]Во-первых, все эти значки около операции присваивания что-то да значат. Во-вторых, как следствие первого, регистр BSRR только для чтения, зачем его читать?
VladislavS: А он его только пишет, не читая, если верить коду (исправленному?)
- Сообщения: 791
- Зарегистрирован: Вт июн 17, 2014 00:34:26
Ребята все заработало, проблема была в том, что по окончанию работы с дисплеем эта ножка устанавливается в низкое состояние. Установил в высокое и все заработало.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="baghear",url="/forum/viewtopic.php?p=3608772#p3608772"]Поясните пожалуйста, почему над кодом выше надо задуматься?[/uquote]Над BSRR, вижу, поработали. А дальше? По коду вижу задачу поменять значения битов GPIO_MODER_MODER2_0 и GPIO_MODER_MODER2_1 на противоположные. Давай сравнивать.
Последний вариант, правда, надо применять очень "строго" и я бы его не рекомендовал. Зато, если режим работы других ножек на GPIOD не меняется, то рекомендовал бы просто запись новой константы в MODER.
Код: Выделить всё
// 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]
- Сообщения: 791
- Зарегистрирован: Вт июн 17, 2014 00:34:26
VladislavS СПАСИБО!!!!Но армовский асм не мой конек да и кот должен быть читабельный)))
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
То есть, ты ничего не понял? Асм там только для демонстрации во что выливается С-ный код.
А разве не в этой теме недавно обсуждали эти конструкции, где не надо отдельно каждый бит выписывать, что лучше делать сразу все? И тоже ассемблер приводили.
Добавлено after 1 minute 26 seconds:
Я бы тоже написал в две строки... Может не совсем рационально, но зато понятнее. )))
Добавлено after 1 minute 26 seconds:
Я бы тоже написал в две строки... Может не совсем рационально, но зато понятнее. )))
Станислав
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3609441#p3609441"]А разве не в этой теме недавно обсуждали[/uquote]Да где только не обсуждали, а толку?
Вон в соседней теме пишет и сожалеет что приходится "выкручиваться" вот так
Вон в соседней теме пишет
Код: Выделить всё
I2C1->DR |= data;Код: Выделить всё
I2C1->DR = data;


