STM32 новичку в ARM что к чему
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Где указана разрядность? Я не вижу.
- Реклама
Re: STM32 новичку в ARM что к чему
Разрядность шины APB1 ? Вы точно нуждаетесь в моей помощи?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Разрядность шин к периферии.
Re: STM32 новичку в ARM что к чему
А бывает и не к периферии? Предпочтете углубиться в маразм?
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
То ли лыжи не едут...
Ковыряюсь с STM32F072.
В общем, забыл PA0 и PA1 настроить в режим аналогового входа (т.е. они по умолчанию были как 00 - input), завожу АЦП и… Внезапно, получаю данные!
Это как? Специально погрепал исходники (вдруг где-то таки установил регистр в нужное значение) - ничего подобного!!!
Ковыряюсь с STM32F072.
В общем, забыл PA0 и PA1 настроить в режим аналогового входа (т.е. они по умолчанию были как 00 - input), завожу АЦП и… Внезапно, получаю данные!
Это как? Специально погрепал исходники (вдруг где-то таки установил регистр в нужное значение) - ничего подобного!!!
- Реклама
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
А почему бы и нет? Ко входу АЦП вывод всё равно подключён.
Просто конфигурация в аналоговом режиме ещё и входной триггер шмидта отключает (иначе на полупитании "сквозить" может немного) ну и резисторы pullup/pulldown отключает гарантировано.
Просто конфигурация в аналоговом режиме ещё и входной триггер шмидта отключает (иначе на полупитании "сквозить" может немного) ну и резисторы pullup/pulldown отключает гарантировано.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="a5021",url="/forum/viewtopic.php?p=4055770#p4055770"]А бывает и не к периферии?[/uquote]Конкретное периферийное устройство может использовать не все разряды шины.
[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 что к чему
[uquote="WiseLord",url="/forum/viewtopic.php?p=4055844#p4055844"]А почему бы и нет?[/uquote]
И действительно!
Вот жаль, что я девборду развел и спаял до того, как почитал документацию на touch sensor: оказывается, в каждой группе один канал должен быть подключен к опорному кондеру! Но разводка пинов такая кривая, что невозможно без ущерба остальной периферии хотя бы 2 канала одной группы вывести в LQFP48.
И действительно!
Вот жаль, что я девборду развел и спаял до того, как почитал документацию на touch sensor: оказывается, в каждой группе один канал должен быть подключен к опорному кондеру! Но разводка пинов такая кривая, что невозможно без ущерба остальной периферии хотя бы 2 канала одной группы вывести в LQFP48.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: STM32 новичку в ARM что к чему
Eddy_Em, занимаетесь сейчас тачсенсором? Не знаете насколько он отличается от L151?
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
COKPOWEHEU, пока не занимаюсь. Может, когда-нибудь с ним попробую... В сниппетах же готовый код есть.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: STM32 новичку в ARM что к чему
Где именно? Можно ссылку?
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
STM32F0xx_Snippets_Package_V1.2.0/Projects/TSC/01_Acquisition
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: STM32 новичку в ARM что к чему
Едва нашел место, где не требуют регистрации. На случай если кому понадобится: ссылка внизу https://www.compel.ru/lib/58942
Правда, мне эта штука бесполезна, поскольку используется аппаратный модуль TSC, которого в моем L151 нет, там только заготовка на аналоговых ключах.
Правда, мне эта штука бесполезна, поскольку используется аппаратный модуль TSC, которого в моем L151 нет, там только заготовка на аналоговых ключах.
Re: STM32 новичку в ARM что к чему
Здравствуйте, никак не могу побороть таймер 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;
}Re: STM32 новичку в ARM что к чему
[uquote="ougen",url="/forum/viewtopic.php?p=4057646#p4057646"]Здравствуйте, никак не могу побороть таймер TIM1 в STM32F4.[/uquote]
Номера AF для пинов задай в GPIOx-AFR[]. Хотя там вообще ерунда в ините пинов, остальное тоже нужно полностью переписать...
Номера AF для пинов задай в GPIOx-AFR[]. Хотя там вообще ерунда в ините пинов, остальное тоже нужно полностью переписать...
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Сделал "беспаечную" девборду для 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 работает без прерываний. Интересненько...
Похоже, это никакие не зависоны, а глюки моего терминала!!! Надо будет смотреть, где я там накосячил.
Но вот, что непонятно: 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 работает без прерываний. Интересненько...
Похоже, это никакие не зависоны, а глюки моего терминала!!! Надо будет смотреть, где я там накосячил.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Продолжаю мучиться с STM32F303, десяток которых недавно был куплен на али. Пока что вообще ноль реакции!
Беру минимальный код:
И… ноль реакции! Светодиоды не загораются.
Уже второй МК из партии дрючу. Упакованы были в ленту. Но у обоих один и тот же косяк: "из коробки" они залочены на чтение FLASH! Такое впечатление, что подсунули вообще какую-то НËХ!
Вот выхлоп stm32flash при разблокировке флеша:
А вот, что пишет st-flash при прошивке:
Вроде бы, никакого криминала. Но почему оно не работает?
Считал прошивку с МК — то же самое, что и в оригинале...
Беру минимальный код:
Код: Выделить всё
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.Код: Выделить всё
/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!Считал прошивку с МК — то же самое, что и в оригинале...
Re: STM32 новичку в ARM что к чему
Отладчик вам в помощь!Eddy_Em писал(а):Но почему оно не работает?
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Я принципиально не пользуюсь GDB!
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Eddy_Em, а системное тактирование, настройка flash latency - это где-то за кадром, но подразумевается, что тоже сделано?


