Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 новичку в ARM что к чему
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 13:55:27

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8459 ]     ... , , , 272, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт мар 29, 2019 12:11:32 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Sergeba писал(а):
"аппаратной поддержке" пофиг и она пропускает пакет?
А вы включили эту аппаратную поддержку? В кубе это "Hardware Flow Control (RS485)".

Для этого МК я бы не стал использовать куб как кодогенератор. Если нужно упростить работу, лучше используйте SPL. Она требует меньше ресурсов и больше контроля над кодом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт мар 29, 2019 19:21:39 
Первый раз сказал Мяу!

Зарегистрирован: Чт мар 28, 2019 23:41:10
Сообщений: 24
Рейтинг сообщения: 0
[/quote]А вы включили эту аппаратную поддержку? В кубе это "Hardware Flow Control (RS485)".


Да, в том то и дело, что включил. И теперь пакеты летят через порт несмотря на то, как я дёргаю ногу. Причём всё ещё хуже... У меня на плате разведен сигнал 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 такого...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 01, 2019 15:14:02 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
но что-то я не нашёл в RM такого...

Чип полностью озвучьте...


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт апр 04, 2019 14:41:49 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Добрый день, у меня модуль 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 раз.

Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт апр 04, 2019 14:58:05 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Можно, конечно. Только отключать тактирование сконфигурированному и включенному модулю нехорошо. Лучше в настройках самого модуля его отключать.

А вот над этим стоит хорошенько задуматься.
Код:
GPIOE->BSRR |= GPIO_BSRR_BR_5;

Впрочем, и над этим тоже
Код:
GPIOD->MODER &= ~GPIO_MODER_MODE2;
GPIOD->MODER |= GPIO_MODER_MODE2_1;


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт апр 04, 2019 15:16:18 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Опечатка, я не отключал тактирование модулю отключал сам модуль

Код:
RCC->APB2ENR &= ~RCC_APB2ENR_SDIOEN;


Поясните пожалуйста, почему над кодом выше надо задуматься?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт апр 04, 2019 16:25:38 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Поясните пожалуйста, почему над кодом выше надо задуматься?
Во-первых, все эти значки около операции присваивания что-то да значат. Во-вторых, как следствие первого, регистр BSRR только для чтения, зачем его читать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт апр 04, 2019 16:31:45 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
VladislavS: А он его только пишет, не читая, если верить коду (исправленному?)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт апр 04, 2019 18:32:44 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Ребята все заработало, проблема была в том, что по окончанию работы с дисплеем эта ножка устанавливается в низкое состояние. Установил в высокое и все заработало.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт апр 05, 2019 08:21:57 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Поясните пожалуйста, почему над кодом выше надо задуматься?
Над 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.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт апр 05, 2019 13:31:54 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
VladislavS СПАСИБО!!!!Но армовский асм не мой конек да и кот должен быть читабельный)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт апр 05, 2019 13:59:40 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
То есть, ты ничего не понял? Асм там только для демонстрации во что выливается С-ный код.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт апр 05, 2019 15:11:46 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 775
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4991
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А разве не в этой теме недавно обсуждали эти конструкции, где не надо отдельно каждый бит выписывать, что лучше делать сразу все? И тоже ассемблер приводили.

Добавлено after 1 minute 26 seconds:
Я бы тоже написал в две строки... Может не совсем рационально, но зато понятнее. )))

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт апр 05, 2019 15:36:03 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
А разве не в этой теме недавно обсуждали
Да где только не обсуждали, а толку?
Вон в соседней теме пишет
Код:
I2C1->DR |= data;
и сожалеет что приходится "выкручиваться" вот так
Код:
I2C1->DR = data;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 08, 2019 23:26:53 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 87
Зарегистрирован: Чт июл 24, 2014 23:09:23
Сообщений: 354
Откуда: Киев
Рейтинг сообщения: 0
Подскажите как более правильно писать volatile перед типом переменной
Переписываю чужой проект, меняю его структуру, избавляюсь от глобальных переменных.
И столкнулся с одним моментом, который не совсем понятен и в гугле не знаю как правильно найти интересующий вопрос.
Есть два варианта, оба работают, но хотелось бы выбрать более правильный.

В первом варианте я пишу volatile перед названием структуры,
во втором пишу volatile перед типом каждой переменной в самой структуре
Абстрактный пример кода набросал, который передает суть
Код:
// Вариант 1
// file *.h
typedef struct
{
  uint16_t current_temperature;
  uint16_t round_temperature;
  uint16_t voltage;
  uint16_t power;
} parameter_st;

void func(volatile parameter_st *param);

// file *.c
volatile parameter_st parameter = {10, 20, 30, 40};

void func(volatile parameter_st *param)
{
   if(param->voltage > 1000) param->power = 80;
   else param->power = 0;
   
   if(param->voltage < 0xFFFF) param->voltage++;
   else param->voltage = 0;
}
void ***_IRQHandler(void)
{
   func(&parameter);
}



// Вариант 2
// file *.h
typedef struct
{
  volatile uint16_t current_temperature;
  volatile uint16_t round_temperature;
  volatile uint16_t voltage;
  volatile uint16_t power;
} parameter_st;

void func(parameter_st *param);

// file *.c
parameter_st parameter = {10, 20, 30, 40};

void func(parameter_st *param)
{
   if(param->voltage > 1000) param->power = 80;
   else param->power = 0;
   
   if(param->voltage < 0xFFFF) param->voltage++;
   else param->voltage = 0;
}

void ***_IRQHandler(void)
{
   func(&parameter);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 09, 2019 05:36:43 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
hosturik, а нет никакого "как правильно", есть как надо вам в вашей программе. Что вы хотите от этой структуры?
1. Все структуры данного типа будут volatile как, например, регистры периферии в CMSIS.
2. Только конкретный экземпляр структуры будет volatile и возможно обычное её применение.
Нам то откуда знать? Ваша программа, вам и решать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 09, 2019 07:03:37 
Потрогал лапой паяльник
Аватар пользователя

Карма: 3
Рейтинг сообщений: 87
Зарегистрирован: Чт июл 24, 2014 23:09:23
Сообщений: 354
Откуда: Киев
Рейтинг сообщения: 0
VladislavS, Поскольку почти все элементы структуры будут изменятся в прерывании, важно чтобы программа работала правильно.
Структуры в моем случае нужны чтобы не плодить глобальные переменные. Я создаю переменную типа структуры в одном сишном файле и все нужные функции вызываю в нем, передавая в них указатель на структуру.
Итог - с более чем 30 глобальных переменных, их не стало вообще. И код стал намного чище. Под глобальными имею ввиду когда в хедере пишется extern uint8_t val; а в си файле то же самое но без extern.
И эта переменная будет видна везде где подключается этот хедер.
Такой стиль написания мне не понравился решил все переписать, чтобы было красиво.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 09, 2019 07:13:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 2
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
typedef volatile struct {} my_struct_type; определит тип my_struct_type, который будет соответствовать вашей структуре с префиксом volatile.
все экземпляры структур этого типа будут исключены из оптимизации компилятора, т.е. доступ к ним и всем их полям будет, как к volatile-переменным.
можно создавать указатели на этот тип (в параметрах функций, например) и т.п.

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

поэтому лучше (имхо) определять алиас типа структуры, а префикс volatile указывать при определении конкретного экземпляра - если надо, конечно.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 09, 2019 07:33:41 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 6
hosturik, вы практически пришли к первому постулату ООП - инкапсуляция. Если ещё вспомнить, что в С++ struct и class это практически одно и то же, то можете смело перемещать функции в структуры, обзывать их методами и вместо структур создавать объекты.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт апр 09, 2019 21:22:57 
Первый раз сказал Мяу!

Зарегистрирован: Сб янв 24, 2015 21:07:59
Сообщений: 21
Рейтинг сообщения: 0
Пытаюсь освоить stm32f100. Что значат эти цифры?
Program Size: Code=612 RO-data=304 RW-data=0 ZI-data=1632
На пустом проекте реально занято 1632 байт озу? Может я, по не знанию, что то не то подключил? Или это не ОЗУ?


Вложения:
keil.png [51.3 KiB]
Скачиваний: 399
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8459 ]     ... , , , 272, , , ...  

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


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 27


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y