Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 новичку в ARM что к чему
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 12:48:50

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8459 ]     ... , , , 208, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн июн 18, 2018 21:42:29 
Грызет канифоль
Аватар пользователя

Карма: 6
Рейтинг сообщений: 202
Зарегистрирован: Пт ноя 13, 2009 10:39:32
Сообщений: 272
Откуда: Москва
Рейтинг сообщения: 0
Для 103 теперь понятно.

А в stm32f30x.h для флэша только два значения:
#define FLASH_ACR_LATENCY_0 ((uint8_t)0x01) /*!< Bit 0 */
#define FLASH_ACR_LATENCY_1 ((uint8_t)0x02) /*!< Bit 1 */
Надо поискать что для каких частот.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс июн 24, 2018 10:36:44 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Может, кто по опыту ткнёт меня носом, что я делаю не так. Пытаюсь "запустить" ЦАП (кристалл stm32f051). Сконфигурировал TIM6 делать прерывания и TRGO сигналы:
Код:
// DAC
   DAC->CR = DAC_CR_EN1;

// TIM6 - Тактовый сигнал для ЦАП
   TIM6->CR1 &= ~TIM_CR1_CEN; // disable
   TIM6->CR1 = TIM_CR1_ARPE | TIM_CR1_URS ;
   TIM6->CR2  = TIM_CR2_MMS_1;   // 010: Update - The update event is selected as a trigger output (TRGO).
   TIM6->PSC = 0;
   TIM6->ARR =  10000-1; // 8MHz / 1000 = 8 kHz
   TIM6->EGR |= TIM_EGR_UG; // Сформировать Update Event для загрузки регистров
   TIM6->DIER = TIM_DIER_UIE; // | TIM_DIER_UDE;
   TIM6->CR1  |= TIM_CR1_CEN   ; //enable timer



Поначалу планировал через ПДП, но пока решил упростить. Разрешил прерывание:
Код:
void TIM6_IRQHandler(void) {
   const uint8_t   sine_tab[] = {128, 218, 255, 218, 128, 38, 0, 38 };
   static const uint8_t *tab_ptr;
   
   TIM6->SR &= ~(TIM_SR_UIF);
   
   if (flag.beep) {
      DAC1->DHR8R1 = *tab_ptr++;
      if (tab_ptr >= sine_tab + sizeof(sine_tab)) tab_ptr = sine_tab;
   } else {
      tab_ptr = sine_tab;
      DAC1->DHR8R1 = *tab_ptr;
   }
}

Вроде, ничего сложного. выдаю 1кГц "синусоиду". Но, изредка на осциллограмме проскакивали "ошибки". Я даже снизил частоту в 10 раз, но ошибки врё равно проскакивают. И независимо, использую update event TIM6 как триггер или нет.
Изображение Изображение

Я бы понимал, что другое прерывание "тормозит" это. Но ведь видно что значения "перескакивают"

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс июн 24, 2018 16:30:51 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Может, кто по опыту ткнёт меня носом, что я делаю не так.

делал дтмф синусоиду на таком же мк - чисто было. Что-то с указателем похоже не то и sizeof массива так, наверное, не подсчитать - прогнал на пк в VS, немного по другому, - работает.
Изображение


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс июн 24, 2018 17:15:29 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
sizeof() работает "правильно", пока размер элементов равен байту. Впрочем, и во всех других случаях тоже должен. Я лоханулся в другом месте. Массив назвал константным, но не назвал статическим. Поэтому, он оказывался почему-то иногда в немного другом месте памяти. Наверное, надо указывать еще какой-то модификатор, если хочется его держать в памяти программ.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт июн 26, 2018 16:58:21 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
Кстати, кто-нибудь помнит навскидку, можно для DMA указать в качестве источника область во флеше? Работать оно будет? Типа, как в предыдущей задаче, массив const и гоним таблицу с синусом в DAC, только через DMA.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт июн 26, 2018 17:09:15 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Кстати, кто-нибудь помнит навскидку, можно для DMA указать в качестве источника область во флеше? Работать оно будет?

Конечно будет, главное CCM RAM ему не подсунуть, но для этого нужно как минимум иметь мк у которого она есть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт июн 26, 2018 17:37:07 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Собственно, это то, что я сейчас и пытаюсь сделать. ПДП сделал.
Код:
void start_sound(void) {
   static const uint8_t   sine_tab[] = {128, 218, 255, 218, 128, 38, 0, 38 };
   
   DMA1_Channel3->CPAR = (uint32_t) (&(DAC1->DHR8R1));
   DMA1_Channel3->CMAR = (uint32_t) sine_tab;
   DMA1_Channel3->CNDTR = sizeof(sine_tab);
   DMA1_Channel3->CCR = DMA_CCR_MINC | DMA_CCR_CIRC | DMA_CCR_DIR;
   DMA1_Channel3->CCR |= DMA_CCR_EN;
   
   DAC1->CR = DAC_CR_DMAEN1 | DAC_CR_TEN1 | DAC_CR_EN1;
}
Но вот у меня нет уверенности (больше), что этот массив находится в памяти программ.

И еще вопрос, если я хочу разместить в памяти большой массив данных - как это сделать, не перегоняя в текстовый вид? Как бы сделать так, чтобы линкер простой raw файл закинул в память и слинковал с моей функцией. Хм, с адресом проблем особых не вижу, а вот с размером как быть?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт июн 26, 2018 17:51:36 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Но вот у меня нет уверенности (больше), что этот массив находится в памяти программ.

Если знаешь адрес начала массива, значит знаешь и в какой области памяти этот массив обитает.

Цитата:
И еще вопрос, если я хочу разместить в памяти большой массив данных - как это сделать, не перегоняя в текстовый вид? Как бы сделать так, чтобы линкер простой raw файл закинул в память и слинковал с моей функцией. Хм, с адресом проблем особых не вижу, а вот с размером как быть?

У твоего F051 не настолько много флеша, что в него влезали большие массивы :) Конверть в текстовый вид, все остальное - это какие-то специфические фичи отдельных сред или компиляторов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт июн 26, 2018 18:56:01 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
Конечно будет,

Вопрос этот возник у меня не на пустом месте. Какое-то время назад ковырялся с армами другого производителя, так там указать можно, но работать оно не будет. Долго копался в референсе, пока в каком-то углу ни обнаружил приписочку, что источником для DMA может быть только область RAM или периферия.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт июн 26, 2018 20:52:25 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
что источником для DMA может быть только область RAM или периферия.

Логично. Контроллер DMA живет отдельной жизнью. Вы хотите чтобы программа шла из конвейера или что там вытаскивает данные из флеша на лету, потом внезапно вставала на паузу, потому что конвейеру надо обслужить канал DMA и отдать туда данные. Толку от такого DMA :))) :))) :))) :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср июн 27, 2018 02:38:38 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
Вообще DMA у STM32 в иных случаях может заставить подвинуться всех прочих, включая ядро, если потребуется. Но это в отношении ОЗУ. А вот что случается, если DMA начинает лезть к флешу, я себе плохо представляю и поверхностное гугление этот вопрос пока не проясняет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср июн 27, 2018 08:11:32 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
И еще вопрос, если я хочу разместить в памяти большой массив данных - как это сделать, не перегоняя в текстовый вид?

так делал - выделил основной программе 9К (хватило) далее 1К типа еепром, далее до конца звук сжатый адпсм
Код:
#define FLASH_USER_START_ADDR   ((uint32_t)0x08002800)   /* Start @ of user Flash area */

в хекс редакторе (HxD) разместил сначала основную прошивку, потом по адресу 0x2800 вставил звук в виде raw

Цитата:
У твоего F051 не настолько много флеша,

В нашем ларьке STM32F051C8 с 64К флэша стоит существенно дешевле чем STM32F051C6 с 32К, такое же и с F030

DMA с Flash вроде должен - из RM:
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср июн 27, 2018 08:58:59 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
В нашем ларьке STM32F051C8 с 64К флэша стоит существенно дешевле чем STM32F051C6 с 32К, такое же и с F030

Я на F4 насмотрелся на таблицы по 512КБ, потому если на F0 будет таковая на пару десяток КБ, то это совсем ни о чем :)

Цитата:
DMA с Flash вроде должен - из RM:

Я бы не писал, если бы у самого не работало.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср июн 27, 2018 09:43:21 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Я на F4 насмотрелся на таблицы по 512КБ
А ради чего, если линкер может подцепить файл? Вот, в IAR, например:
Изображение
Вложение:
bf.png [39.06 KiB]
Скачиваний: 667


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср июн 27, 2018 10:28:42 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
А ради чего, если линкер может подцепить файл? Вот, в IAR, например:

Некоторые как-то так и делали, причем шили в конец флеша один раз, т.к. каждый раз заливать такие объемы не так и быстро, а я просто написал программу которая ужала эту таблицу в 7.3 раза и успокоился :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср июн 27, 2018 19:53:13 
Встал на лапы

Зарегистрирован: Вс мар 01, 2009 20:41:19
Сообщений: 125
Рейтинг сообщения: 0
Кто ковырял USB => VCP есть функция
Код:
static int8_t CDC_Receive_HS(uint8_t* Buf, uint32_t *Len)
{
  /* USER CODE BEGIN 11 */
  USBD_CDC_SetRxBuffer(&hUsbDeviceHS, &Buf[0]);
  USBD_CDC_ReceivePacket(&hUsbDeviceHS);
  return (USBD_OK);
  /* USER CODE END 11 */
}

можем мы узнать в ней размер посылаемого пакета данных?
например из оси посылаем 1024 байт, тк размер принимаемыех данных конечной точкой при работе в full speed 64 байт, получаем 16 вызовов функции выше, есть ли какая возможность определить кол-во вызовов или определить перед началом посылки и самому собрать 1024 байт в буфере.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср июн 27, 2018 23:19:45 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
В нашем ларьке STM32F051C8 с 64К флэша стоит существенно дешевле чем STM32F051C6 с 32К, такое же и с F030

То, что тот ларек хлебосолен, известно далеко за пределами ваших краев. Но перебивает ли он китайцев ?

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Чт июн 28, 2018 06:02:21 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Кто ковырял USB => VCP есть функция
...
можем мы узнать в ней размер посылаемого пакета данных?
например из оси посылаем 1024 байт, тк размер принимаемыех данных конечной точкой при работе в full speed 64 байт, получаем 16 вызовов функции выше, есть ли какая возможность определить кол-во вызовов или определить перед началом посылки и самому собрать 1024 байт в буфере.

Откуда в VCP пакеты взялись? Это же просто труба - есть данные пишем, нет - молчим. В любой момент вы можете получить от одного байта до максимального размера конечной точки. Если внутри потока приложение какие-то пакеты формирует, то VCP об этом ничего не знает, это не его уровень.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт июн 29, 2018 05:29:58 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Читаю даташит на 32F103-й кристалл про RTC и не понимаю, когда считывать регистр RTC_CNT. Из картинки я понял, что прерывание секундное происходит за 1 такт RTCCLK до обновления? Выходит, если я получил прерывание, то мне нужно еще ждать 30 микросекунд, пока я смогу считать обновлённый RTC_CNT.

Я смотрю на картинки 180 и 181.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт июн 29, 2018 09:01:08 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
https://www.youtube.com/watch?v=eUA2TRX1NTc


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8459 ]     ... , , , 208, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y