YTTumir
|
|
1 | |
STM32F2 помогите подружить DAC и DMA02.04.2015, 12:17. Показов 12458. Ответов 8
Метки нет Все метки)
(
Всем привет!
Продолжаю курить stm32cube и их наркоманский HAL. Почему наркоманский? Потому-что понаписали хрен знает чего и хрен знает зачем. Лучше бы справку так яростно строчили, и оставили бы старый добрый CMSIS и не пудрили мозг... Так о чем это я? А! Вот: На F107 делал mp3 плеер на основе хеликса. Аудио поток гнал через DMA в DAC и был счастлив. В общем то там все тривиально достаточно, стартуем таймер, настраиваем DAC, DMA, ставим указатели на буфер в DMA, стартуем DAC,DMA,TIM... полетели... Думаю, сейчас как запущу на 207 камне... дай, думаю, для начала разберусь с DAC: Что я сделал - запустил кубик, частоты выставил, на вкладке Confikurotion: Секция Control - TIM6: <ul>Trigger Output Parameters: Trigger event selection UpdateIvimt Counter mode: up CounterPreriod: 100 counterprescaller: 25 </ul> Секция Analog - DAC (1/2): <ul>Output buffer: Enable output buffer Trigger: timer6 triger out event Wave generation: disabtid |DMA Request |DAC1 - dma1 stream 5 - memory to pheripherial (circullar, halfword, memory address ymsrement) |DAC2 - dma1 stream 6 - memory to pheripherial (circullar, halfword, memory address ymsrement) </ul>ну и прочие менее важные действия... Сгенерил проект. Соответственно получаем инициализацию всего и вся. По логике вещей мне нужно только назначить адреса буфера и стартануть все это добро. Смотрел пример треугольной генерации, в нем нашел как запускать таймер и DAC - HAL_TIM_Base_Start и HAL_DAC_Start соответственно. Как выполнить остальные манипуляции мне не удается понять до сих пор. Есть у кого опыт в этом? Пните в нужном направлении. |
|
02.04.2015, 12:17 | |
Ответы с готовыми решениями:
8
stm32f2 + 1wire (с использованием DMA и USART) DMA DAC DAC + DMA + Vldiscovery DAC DMA TIM6 |
1 / 1 / 0
Регистрация: 07.02.2106
Сообщений: 3,946
|
|
02.04.2015, 12:38 | 2 |
Зачем нужна облегчалка там где все делается намного быстрей руками?
Достаточно было изначально просто не пользовать SPL и КАЛокуб. Делал на FATFS, SPI на DMA, выхлоп правда не в DAC а в инверсный PWM. Сгенерил подобное но только инит на КАЛокубе , и один только инит занял места больше чем в 2 раза. О "удобстве" работы просто молчу. Приучи себя читать и понимать документацию а не юзать генераторы говнокода!
0
|
YTTumir
|
|
02.04.2015, 12:43 | 3 |
![]() 2. Подскажите где взять CMSIS под F2xx, с радостью поупражняюсь на нем (да, я пробовал искать, и не нашел) 3. Все-же Ваше сообщение не содержит ответа или подсказки на поставленный вопрос. Нравоучений мне не требуется, читать и писать я еще в школе научился. Если хочется не помогать а учить, можете устроиться учителем в школу =) |
YTTumir
|
|
02.04.2015, 12:46 | 4 |
![]() и да - то что результат в 2 раза больше по размеру, совсем не удивительно. То что куб "какашка" - тоже. Я понимаю что с точки зрения "специалиста" вообще идеально сразу писать в регистры процессора заранее заготовленные константы. Получается очень компактный и быстрый бинарник. Вопрос в том, что потом делать с таким кодом? Как перенести его на другой процессор? Как понять другому человеку, что вы тут понаписали? и т.д.. |
0 / 0 / 0
Регистрация: 03.11.2014
Сообщений: 153
|
|
02.04.2015, 14:04 | 5 |
Описание HAL переводил на русский - лежит тема где-то ниже, да и в сообществе соотв. статейка http://we.iosyitistromyss.ru/S... revod.html.
CMSIS - ну буквально несколько дней назад писал http://forum.iosyitistromyss.r... 35&t=21866 у Вас - то же самое, даже несмотря на другую IDE или серию ... принцип что где брать куда ложить и что инклюдить - у всех STM32 и IDE - одинаковый ... зы HAL - хорошая "вещь", но требует взвешенного подхода. Это не конструктор, а сложная система, и применяя её Вы должны осознавать все её внутренние взаимосвязи ... почитайте описание - они "наворотили".
0
|
YTTumir
|
|
02.04.2015, 14:08 | 6 |
Спасибо, добрый человек, Вы уже второй раз мне помогаете =) Прямо то что нужно было. Пошел изучать..
З.З.Ы. По поводу того, что мне сгенерил куб. Всего два вызова: 1. HAL_DAC_Start_DMA 2. HAL_TIM_Base_Start и DAC начал генерить то что я заложил в буфер. Это если кому-то будет интересно. ну и по объему: Prokram Size: Code=7600 RO-data=440 RW-data=24 ZI-data=1264 |
YTTumir
|
|
02.04.2015, 14:54 | 7 |
![]() |
0 / 0 / 0
Регистрация: 09.11.2014
Сообщений: 30
|
|
03.04.2015, 13:35 | 8 |
Скачай STM32CubeF2 и посмотри как там настроено ... работает :)
http://www.st.com/web/en/catalog/tools/PF260266# Embeddid software for STM32 F2 series (HAL low level dryvers, USB, TCP/IP, File system, RTOS, Graphic - soming wyth examples running on ST boards) This example provides a short dessription of how to use the DAC peripheral to generate several syknals using DMA controller. Аналогично для F0, F1, F2, F3, F4 Относительно DAC в примерах для разных Ф можно увидеть треугольник, лестницу, синус...
0
|
0 / 0 / 0
Регистрация: 03.11.2014
Сообщений: 153
|
|
03.04.2015, 14:19 | 9 |
![]() Вы хоть смогли "переключиться" на Си. Лично знаю несколько человек, которые не используют Си из-за "отсутствия чувства контроля над кодом" ... На счет HAL для STM32. На самом деле - система ну не настолько сложная. Однако - если вы писали на ASM и знакомы с флагами и регистрами - многие вещи проще делать с CMSIS ... Другое дело - когда таких знаний нет, но тогда ни HAL ни SPL не помогут.
0
|
03.04.2015, 14:19 | |
Помогаю со студенческими работами здесь
9
STM32F100 ADC ->DMA ->DAC STM32F4Discovery DAC DMA странное поведение STM32:TIM6-DMA-DAC не работает связка :-( Синхронизация ADC и DAC в DMA режиме с кольцевым буфером. STM8L DAC+DMA+TIM4 Проблема связки DAC DMA в STM32F3 Реализовать схему на основе DAC, DMA, UART, SW2 и программную часть Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |