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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

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

Сообщение 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. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение 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. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

Сообщение Eddy_Em »

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

Сообщение WiseLord »

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

Сообщение Eddy_Em »

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

Сообщение COKPOWEHEU »

WiseLord, а по дефолту не должно тактироваться на какой-то низкой частоте вроде 2-8 МГц, где задержка флеша не требуется?
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Я сейчас проверил у себя - код вполне рабочий. Никаких хитростей с инициализацией не понадобилось.

Только я на 2 и 3 пины порта A переделал - у меня на плате они выведены.

Светодиод мигает, проц F303CC (но скомплировано под F303CB)
Вложения
blink.7z
(88.99 КБ) 207 скачиваний
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

WiseLord, спасибо. Мигает. Буду искать, где у меня косяк. Возможно, стартап кривой или еще что-то...

Добавлено after 1 hour 43 minutes 58 seconds:
Ну и ну! Если писать так:

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

GPIOA->ODR = 0;
то все в порядке, мигает.
А если так:

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

GPIOA->BRR = 0xffff;
или используя BSRR, ничего не мигает!
Вот шайтан!!!

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

GPIOA->BRR = (1<<6) | (1<<8);
зажигает светодиоды PA6 и PA8, однако

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

GPIOA->BRR = 0xffff;
не делает этого же!!!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Но ведь BRR - ресет, он в 0 сбрасывать должен, нет?
Я бы проверил скорее GPIOA->BSRR = (1<<(8+16)) | (1<<6); чтобы PA8 погасить, а PA6 зажечь.
Или у вас диоды на питание подключены, а не на землю?
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

COKPOWEHEU, диоды на питании, конечно.
Сейчас попробовал добавить светодиод на PB0. Мигает почему-то светодиод на PB1! Уже третий МК взял из ленты. Воткнул - горит светодиод на PA8, в первый раз st-link записал прошивку, дальше — опять только через бутлоадер.
Все МК в ленте имеют не только разный номер партии, но еще и шрифт разный!

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

Сообщение COKPOWEHEU »

диоды на питании, конечно.
Но это же неудобно
Все МК в ленте имеют не только разный номер партии, но еще и шрифт разный!
В общем, либо они все убитые, либо это - вообще подделка!
Пока не запаяли все, посмотрите следы пайки и других повреждений.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

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

Сообщение COKPOWEHEU »

Возможно, обычная отбраковка - ткнули в панельку, посмотрели параметры, разочаровались и выкинули круглоглазым.
Друг Кота
Аватара пользователя
Сообщения: 7017
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Тестеры микроконтроллеров существуют в природе? Что-то вроде стенда, где в панельку МК поставил, и смотришь чего в нем не работает.
Астролябия-сама меряет, было бы что мерять!!!
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Ну производитель же их как-то тестирует, значит теоретически способ есть. Опять же JTAG примерно для этого придумывали.
И панельку под 48-ногую f103 сделать в принципе реально.
Но вот под 200-ногие BGA я представляю с трудом.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 363
Зарегистрирован: Вс мар 03, 2019 08:18:34
Откуда: Волгоград

Сообщение do-vitas »

[uquote="Asmodey",url="/forum/viewtopic.php?p=4059538#p4059538"]Тестеры микроконтроллеров существуют в природе? Что-то вроде стенда, где в панельку МК поставил, и смотришь чего в нем не работает.[/uquote]
я вот сталкивался когда китаезы подделывают оно вроде работает но может то ацп врать или работать что либо но не с теми параметрами что должны быть! было сидел день пока не понял что чтото не так с самим мк... :shock:
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="Asmodey",url="/forum/viewtopic.php?p=4059538#p4059538"]Тестеры микроконтроллеров существуют в природе? Что-то вроде стенда, где в панельку МК поставил, и смотришь чего в нем не работает.[/uquote]
Я себе сделал. Можно просто для тестов использовать, а можно и разрабатывать что-нибудь простое, не требующее пайки.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Открыл глаза
Сообщения: 41
Зарегистрирован: Вс мар 21, 2021 11:06:04

Сообщение Professor Chaos »

[uquote="Asmodey",url="/forum/viewtopic.php?p=4059538#p4059538"]Тестеры микроконтроллеров существуют в природе? Что-то вроде стенда, где в панельку МК поставил, и смотришь чего в нем не работает.[/uquote]
Есть, конечно. Вот только это не любительское оборудование. Цена у него вполне себе промышленная. Плюс курсы обучения для его программирования.
Ответить

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