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

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

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

Сообщение VladislavS »

Где указана разрядность? Я не вижу.
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Разрядность шины APB1 ? Вы точно нуждаетесь в моей помощи?
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

Разрядность шин к периферии.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

А бывает и не к периферии? Предпочтете углубиться в маразм?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

То ли лыжи не едут...
Ковыряюсь с STM32F072.
В общем, забыл PA0 и PA1 настроить в режим аналогового входа (т.е. они по умолчанию были как 00 - input), завожу АЦП и… Внезапно, получаю данные!
Это как? Специально погрепал исходники (вдруг где-то таки установил регистр в нужное значение) - ничего подобного!!!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

А почему бы и нет? Ко входу АЦП вывод всё равно подключён.

Просто конфигурация в аналоговом режиме ещё и входной триггер шмидта отключает (иначе на полупитании "сквозить" может немного) ну и резисторы pullup/pulldown отключает гарантировано.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=4055770#p4055770"]А бывает и не к периферии?[/uquote]Конкретное периферийное устройство может использовать не все разряды шины.

[uquote="a5021",url="/forum/viewtopic.php?p=4055770#p4055770"]Предпочтете углубиться в маразм?[/uquote]Опять хамство? Зарекался ведь уже обходить стороной...
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

[uquote="WiseLord",url="/forum/viewtopic.php?p=4055844#p4055844"]А почему бы и нет?[/uquote]
И действительно!
Вот жаль, что я девборду развел и спаял до того, как почитал документацию на touch sensor: оказывается, в каждой группе один канал должен быть подключен к опорному кондеру! Но разводка пинов такая кривая, что невозможно без ущерба остальной периферии хотя бы 2 канала одной группы вывести в LQFP48.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

Eddy_Em, занимаетесь сейчас тачсенсором? Не знаете насколько он отличается от L151?
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

COKPOWEHEU, пока не занимаюсь. Может, когда-нибудь с ним попробую... В сниппетах же готовый код есть.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

Где именно? Можно ссылку?
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

STM32F0xx_Snippets_Package_V1.2.0/Projects/TSC/01_Acquisition
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

Едва нашел место, где не требуют регистрации. На случай если кому понадобится: ссылка внизу https://www.compel.ru/lib/58942
Правда, мне эта штука бесполезна, поскольку используется аппаратный модуль TSC, которого в моем L151 нет, там только заготовка на аналоговых ключах.
ougen
Родился
Сообщения: 1
Зарегистрирован: Вт июл 06, 2021 19:44:45

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

Сообщение ougen »

Здравствуйте, никак не могу побороть таймер TIM1 в STM32F4. Вроде делаю по мануалам, а ШИМ нет. Подскажите, пожалуйста, что не так.

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

void init_3ph_pwm_1(void)
{
	RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOEEN;     //включаем тактирование порта E
	GPIOE -> MODER |= MODE_AF;                 //режим альтернативных функций
	GPIOE -> OTYPER |= MODE_PP;                //настраиваем выход, как Push-Pull 
	GPIOE -> OSPEEDR = GPIO_SPEED_FREQ_MEDIUM; //скорость порта - до 20 мгц
	RCC -> APB2ENR |= RCC_APB2ENR_TIM1EN;      //включаем тактирование TIM1
        TIM1 -> CCER = 0;                          //обнуляем CCER (выключаем каналы)
	TIM1->PSC = 0x0;    //TIM prescaler
        TIM1->ARR = 0x220;  //TIM auto-reload register
	
        TIM1->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1;     // ШИМ режим 1 (OC1M = 110) | TIM_CCMR1_OC1M_0
        TIM1->CCMR1 |= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1;     // ШИМ режим 1 (OC1M = 110) | TIM_CCMR1_OC2M_0
        TIM1->CCMR2 |= TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1;     // ШИМ режим 1 (OC1M = 110) | TIM_CCMR2_OC3M_0
	TIM1->CR1 |= TIM_CR1_ARPE;//Включен режим предварительной записи регистра автоперезагрузки
        TIM1->CCMR1 |= TIM_CCMR1_OC1PE; // Включаем регистр предварительной загрузки компатратора канала 1
        TIM1->CCMR1 |= TIM_CCMR1_OC2PE; // Включаем регистр предварительной загрузки компатратора канала 2
        TIM1->CCMR2 |= TIM_CCMR2_OC3PE; // Включаем регистр предварительной загрузки компатратора канала 3
        TIM1->CR1 |= TIM_CR1_DIR; // Если установить, будет считать вниз
        TIM1->CR1 |= TIM_CR1_CMS_0 | TIM_CR1_CMS_1; // Режим 3 выравнивания по центру
	TIM1->CCER |= TIM_CCER_CC1E | TIM_CCER_CC1NE;
        TIM1->CCER |= TIM_CCER_CC2E | TIM_CCER_CC2NE;
        TIM1->CCER |= TIM_CCER_CC3E | TIM_CCER_CC3NE;
	TIM1 -> BDTR |= TIM_BDTR_MOE;              //разрешаем вывод сигнала на выводы
	TIM1 -> CR1 |= TIM_CR1_CEN;                //счетчик разрешен
}
Этой функцией выставляю скважность

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

void set_sin_freq(void)
{ 
  TIM1->CCR1 = 50;
  TIM1->CCR2 = 100;
  TIM1->CCR3 = 150;
  
}
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="ougen",url="/forum/viewtopic.php?p=4057646#p4057646"]Здравствуйте, никак не могу побороть таймер TIM1 в STM32F4.[/uquote]
Номера AF для пинов задай в GPIOx-AFR[]. Хотя там вообще ерунда в ините пинов, остальное тоже нужно полностью переписать...
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

Сделал "беспаечную" девборду для STM32F0x2, F103 и F303 в LQFP48. Пишу код под STM32F072. Маленько сел в лужу с разводкой (оказалось, что для touch sensors обязательно в каждой группе должен быть 1 канал с опорным кондером) + из-за недостатка каналов ПДП одновременно тестировать все три USART'а и оба SPI не выйдет (либо то, либо другое).
Но вот, что непонятно: SPI1 у меня сконфигурирован в режиме мастера, а SPI2 — в режиме слейва. Прием-передача - целиком через ПДП. Однако, а) нет-нет, а МК зависает (видимо, уходит в хардфолт?), даже когда передаю меньше байт, чем влезает в 32-байтный буфер, куда складывает данные ПДП; б) если мастер пишет больше, чем хочет передать слейв, то последними байтами является непонятный мусор. Например, слейв ожидает передачи байт 0,1,2,3,4,5,6, мастер передает ему 0,9,8,7,6,5,4,3,2,1. В итоге слейв видит: 0,9,8,7,6,5,4,3,2,1, а вот мастер: 1,2,3,4,5,6,3,3,3,3.
Похоже, берется мусор из младшего байта буфера Tx.

Вопросы:
1) как, не передавая данных слейвом и не реинициализируя SPI, установить определенные (скажем, нули) значения в Tx FIFO слейва?
2) какие могут быть причины внезапных "зависонов"? Оно может много раз подряд нормально работать, а потом вдруг при подготовке к отправке данных слейвом или мастером - зависнуть.
UPD по поводу п.2: оказывается, "зависоны" возникают только для USB!!! Хотя у меня USB работает без прерываний. Интересненько...
Похоже, это никакие не зависоны, а глюки моего терминала!!! Надо будет смотреть, где я там накосячил.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

Продолжаю мучиться с STM32F303, десяток которых недавно был куплен на али. Пока что вообще ноль реакции!
Беру минимальный код:

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

static void gpio_setup(void){
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
    GPIOA->MODER = GPIO_MODER_MODER8_O | GPIO_MODER_MODER6_O;
    GPIOA->ODR = 0;
}
int main(void){
    gpio_setup();
    while (1){
        nop();
    }
}
И… ноль реакции! Светодиоды не загораются.
Уже второй МК из партии дрючу. Упакованы были в ленту. Но у обоих один и тот же косяк: "из коробки" они залочены на чтение FLASH! Такое впечатление, что подсунули вообще какую-то НËХ!
Вот выхлоп stm32flash при разблокировке флеша:

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

stm32flash -b115200 /dev/ttyUSB0 -k 
stm32flash 0.5

http://stm32flash.sourceforge.net/

Interface serial_posix: 115200 8E1
Version      : 0x31
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0422 (STM32F302xB(C)/F303xB(C)/F358xx)
- RAM        : 40KiB  (5120b reserved by bootloader)
- Flash      : 256KiB (size first sector: 2x2048)
- Option RAM : 16b
- System RAM : 8KiB
Read-UnProtecting flash
Done.
А вот, что пишет st-flash при прошивке:

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

/usr/bin/st-flash write blink.bin 0x8000000
st-flash 1.6.0
2021-07-10T18:35:38 INFO common.c: Loading device parameters....
2021-07-10T18:35:38 INFO common.c: Device connected is: F3 device, id 0x10036422
2021-07-10T18:35:38 INFO common.c: SRAM size: 0xa000 bytes (40 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 2048 bytes
2021-07-10T18:35:38 INFO common.c: Attempting to write 32 (0x20) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08000000 erased
2021-07-10T18:35:38 INFO common.c: Finished erasing 1 pages of 2048 (0x800) bytes
2021-07-10T18:35:38 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core id
2021-07-10T18:35:38 INFO flash_loader.c: Successfully loaded flash loader in sram
  1/1 pages written
2021-07-10T18:35:38 INFO common.c: Starting verification of write complete
2021-07-10T18:35:38 INFO common.c: Flash written and verified! jolly good!
Вроде бы, никакого криминала. Но почему оно не работает?

Считал прошивку с МК — то же самое, что и в оригинале...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3384
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

Eddy_Em писал(а):Но почему оно не работает?
Отладчик вам в помощь!
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

Я принципиально не пользуюсь GDB!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Eddy_Em, а системное тактирование, настройка flash latency - это где-то за кадром, но подразумевается, что тоже сделано?
Ответить

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