Перейти к содержанию
    

Mty

Свой
  • Постов

    204
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Mty

  • Звание
    Местный
    Местный

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

2 124 просмотра профиля
  1. Да, спасибо, конечно так сделаю. А для проверки ошибок DMA можно просто опрашивать флаг DMA high interrupt status register (DMA_HISR) TEIF5 без прерывания, верно?
  2. Решено! Спасибо всем. HAL_DMA_Init(&hdma_tim1_up); HAL_DMA_Start(&hdma_tim1_up, (uint32_t)&DMAbuff, (uint32_t)&GPIOB->ODR, MAX_TICKS); HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); TIM1->DIER |= (1 << 8); Одна из основных проблем была в том, что потерялся & перед &DMAbuff Кроме того переписал все попутно в регистрах. И думаю - дальше работать с регистрами, или остаться в HAL? Привожу ниже - может кому пригодится DMA2_Stream5->PAR = (uint32_t)&(GPIOB->ODR); // Set peripheral address DMA2_Stream5->M0AR = (uint32_t)&DMAbuff; // Set memory address DMA2_Stream5->NDTR = MAX_TICKS; // set number of bytes to transfer DMA2_Stream5->CR |= (6 << DMA_SxCR_CHSEL_Pos); // enable channel 6 (TIM1_UP) DMA2_Stream5->CR |= (2 << DMA_SxCR_PL_Pos); // set to high priority // FIFO should be disabled by default DMA2_Stream5->CR |= (1 << DMA_SxCR_DIR_Pos); //set memory-to-peripheral DMA2_Stream5->CR |= (1 << DMA_SxCR_MINC_Pos); //Incremement memory address // Assume PINC is 0 //Assume burst is set to single transfer DMA2_Stream5->CR |= (0 << DMA_SxCR_MSIZE_Pos); // Set memory data width to a byte DMA2_Stream5->CR |= (0 << DMA_SxCR_PSIZE_Pos); // Set peripheral data width to a byte DMA2_Stream5->CR |= (1 << DMA_SxCR_CIRC_Pos); // Set to circular mode // Assume DBM is zero DMA2_Stream5->CR |= (1 << DMA_SxCR_EN_Pos); //enable DMA TIM1->DIER |= (1 << 8); // set UDE bit (update dma request enable) HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
  3. Да, программно работает. Спасибо за идею с регистрами - посмотрю. А где то есть дока на функции типа HAL_DMA_Start() и макросы __HAL_TIM_ENABLE_DMA() - в какой последовательности их запускать, с примерами итд? А то вслепую тащу их из интернета, а нормальной доки нет. По исходникам смотрю - но там совсем не ясно в какой последовательности их использовать и какие из них нужны?
  4. Приветствую! Не работает DMA. Пересылка Memory->GPIO по таймеру. Идея в том, что Timer1 Channel1 по событию UpdateEvent запускает DMA передачу в порт B. Побайтно, в циклическом режиме. Таймер работает (видно по выходу осциллографом), а в порту B тишина - все пины 0 Подскажите - как запустить DMA передачу? PS: За основу брал статью https://istarik.ru/blog/stm32/139.html MX_GPIO_Init(); MX_DMA_Init(); MX_TIM1_Init(); /* USER CODE BEGIN 2 */ PrepareDMAbuffer(); // Здесь в буфер заливаются данные буфер 12900байт HAL_DMA_Start(htim1.hdma[TIM_DMA_ID_UPDATE], (uint32_t)DMAbuff, (uint32_t)&GPIOB->ODR, BUFFSIZE); HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); /* Enable the TIM Update DMA request */ __HAL_TIM_ENABLE_DMA(&htim1, TIM_DMA_UPDATE); /* Enable the Peripheral */ __HAL_TIM_ENABLE(&htim1);
  5. Для тех кто ищет тему гуглом - Проблема решилась, диод не звонится тестером, но ток от 3х вольтового акк через 10к пропускает только в одном направлении, все норм. Если расположить рядом с волноводом в 1см - модулированный сигнал детектит
  6. Лазер лазеру рознь. Тут квантово каскадный лазер в жидком гелии. Там своя специфика. А как считается? Ток в N раз больше, напряжение в N раз меньше R=(U/10)/I*10 Так?
  7. Средний ток по импульсу. В схеме 10 ом для теста, это тестовая отладочная нагрузка. Вместо него будет лазер, причем с нелинейными характеристиками. Хм, интересная мысль, спасибо, буду ее думать. А если 100 витков и 20 ом, тоже выходит 0.2 ом?
  8. Это источник питания импульсного лазера. 15-70в до 10а Время импульса 100мкс-100нс. Нужно мерить ток через нагрузку 2х тактного каскада. Нагрузка на землю другим концом. Шунт в верхнем плече ставить как то не сильно удобно.
  9. Спасибо, кажется понял. Нашел статью с эквивалентной схемой, ток уходит на намагничивание сердечника, обозначено это паразитной индуктивностью Lm2. В идеале токоизмерительный резистор в моей схеме должен быть нулевой, и тогда на паразитная индуктивность влиять не будет.
  10. О, спасибо, здорово. А какова физика процесса, хочу понять? UPD: А если нагрузить те же 10 витков на делитель 1:10 = 18 ом :2 jv и снимать сигнал с 2х ом - не будет того же эффекта?
  11. Буду признателен если порекомендуете учебник. Вы считаете, что падение на плато обусловлено постоянной составляющей магнитного потока через сердечник, т.к. импульс однополярный? Правильно я понял? PS: Погуглил англоязычный инет, там это явление называют droop (свисание) и объясняют тем, что транс не передает постоянную составляющую, отсюда релаксирующий спад. Для меня в первую очередь интересно, как этот спад сделать минимальным. Увеличивать сечение, добавлять витков во вторичку итп.
  12. Вот этот момент не понимаю. Можно подробнее? По идее в классическом Трансформаторе Тока (TT) вторичная обмотка шунтирована амперметром с околонулевым сопротивлением. При подаче тока на первичную обмотку, во вторичной возникает индукционный ток, который вызывает противоположный магнитный поток в сердечнике, он компенсирует магнитный поток в сердечнике от первички, как следствие - ококлонулевой падение в первичке. Верно? Откуда берется падающий во времени магнитный поток в моем случае? Падающий в течении импульса?
  13. Приветствую, Помогите разобраться - токовый трансформатор искажает форму импульса тока. Почему вершина не плоская а линейно ниспадающая линия? С полумостового формирователя импульс 10мкс 30в подается через токовый трансформатор на 10 ом резистор нагрузки. Токовый трансформатор - первичка 1 виток, вторичка 10 витков, нагружена на 2ома (на кольце 2000нм1 17.5х8.2х5).
  14. Т.е. выходит штатный трассировщик не может трассировать плату зная что вот тут у него полигон на нижнем слое? Он может только трассировать дорожки, или заливать готовые дорожки полигоном?
×
×
  • Создать...