Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: stm32f103 Dual mode ADC+DMA по таймеру4

Вс дек 04, 2022 17:42:43

куда именно

:shock:
Стесняюсь спросить - а вы вообще рефмануал открывали?
В ДМА совсем немного регистров.
Например в F0 для второго канала DMA это будет DMA1_Channel2->CNDTR.
Например в F4 для первого потока второго контроллера DMA это будет DMA2_Stream1->NDTR.

Re: stm32f103 Dual mode ADC+DMA по таймеру4

Вс дек 04, 2022 17:58:21

Стесняюсь спросить - а вы вообще рефмануал открывали?
В ДМА совсем немного регистров.
Например в F0 для второго канала DMA это будет DMA1_Channel2->CNDTR.
Например в F4 для первого потока второго контроллера DMA это будет DMA2_Stream1->NDTR.

Нет, но понял к чему вы ведете, эти регистры хрянят число, и оно по кругу изменяется до переполнения и опять обнуляется. Читал где то, уже не помню. Будет читать по DMA что к чему)

Re: stm32f103 Dual mode ADC+DMA по таймеру4

Вс дек 04, 2022 18:23:15

оно по кругу изменяется до переполнения

Нет, оно ДЕКРЕМЕНТИРУЕТСЯ до нуля. Для однократного режима. В непрерывном режиме оно автоматически восстанавливается одновременно с автоматическим перезапуском ДМА.
Рефмануал надо читать полностью, а не только про ДМА. Значительная часть сопряженной информации находится в других модулях. Так при работе АЦП с ДМА нужно в модуле АЦП включить реквесты от АЦП, например... Помимо выбора канала или стрима работающего с реквестами АЦП в модуле ДМА.

Re: stm32f103 Dual mode ADC+DMA по таймеру4

Вт янв 10, 2023 12:47:30

Продолжаю ковыряться, плюнул я CUBE IDE... решил сразу с CMSIS начать, т.к. в кубе много не понятного для меня... и вообще держать в голове байду от куба не хочется... Вообщем поизучал и настроил через CMSIS - RCC, системный таймер, таймер 4 с тем же конфигом, порты ввода/вывода, а вот с ацп+дма у меня проблемы начались.... Точнее с ацп2, при отладке я не вижу в регистрах CR2 установок которые я задал((( Ставлю 0110: Dual regular simultaneous mode only по факту вижу 0000. Гляньте профессиональным взглядом что не так делаю или я может чего не дочитал в референс мануале? Вообщем пытяюсь запустить парный режим преобразования ацп + дма по таймеру 4.

Re: stm32f103 Dual mode ADC+DMA по таймеру4

Ср янв 11, 2023 19:26:49

kote52, я не силен в этом, может быть и можно посадить ADC1 на T4_CC4, но как выходит из моих экспериментов с f030, нужен бит Tx_TRGO, а он только у TIM3.

То есть в ADC1 в External Trigger Conversion нужно поставить Timer 3 Trigger Out event,
а в TIM3 в Trigger Event Selection нужно поставить Update Event.

или в регитрах ADC1 ищите бит ADC_ExternalTrigConv_T3_TRGO, а в TIM3->CR2 бит TIM_TRGOSource_Update.

Re: stm32f103 Dual mode ADC+DMA по таймеру4

Ср янв 11, 2023 20:25:46

kote52, я не силен в этом, может быть и можно посадить ADC1 на T4_CC4, но как выходит из моих экспериментов с f030, нужен бит Tx_TRGO, а он только у TIM3.

То есть в ADC1 в External Trigger Conversion нужно поставить Timer 3 Trigger Out event,
а в TIM3 в Trigger Event Selection нужно поставить Update Event.

или в регитрах ADC1 ищите бит ADC_ExternalTrigConv_T3_TRGO, а в TIM3->CR2 бит TIM_TRGOSource_Update.

Приветствую Dimon456! Я понял о вашем подходе. Это один из методов как можно прицепиться к таймеру. Свой пытаю как запуск в режиме сравнения на определённом канале таймера 4. Таймер будет переполнятся, а сравнение будет происходить в момент обнуления и «толкать» АЦП.

и там есть регистры:
ADC->CR2
EXTSEL[2:0]: выбор внешнего события для срабатывания триггера запуска оцифровки обычных каналов. Для ADC1,2:
000: Timer1 CC1
001: Timer1 CC2
010: Timer1 CC3
011: Timer2 CC2
100: Timer3 TRGO
101: Timer4 CC4 //выбран
110: EXTI line11/TIM8_TRGO
111: бит SWSTART регистра ADC_CR2

Вот кое что почитав нашел - что, хоть сэмплирования и по таймеру, но первый старт вручную... т.е.
Код:
ADC1->CR2 |=ADC_CR2_SWSTART;
SET_BIT(ADC1->CR2, ADC_CR2_EXTTRIG);
ADC2->CR2 |=ADC_CR2_SWSTART;
SET_BIT(ADC2->CR2, ADC_CR2_EXTTRIG);

так по кирпичику можеи и дойду :))
Ответить