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

Integro

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

2 Подписчика

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

  • Звание
    Местный
    Местный
  • День рождения 13.04.1988

Старые поля

  • LinkedIn
    Array

Контакты

  • Сайт
    Array
  • ICQ
    Array
  • Skype
    Array

Информация

  • Город
    Array

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

3 771 просмотр профиля
  1. Ответила техподдержка, не работает DMA во сне, предложили прерывание от периферии использовать что бы проц будить. А так хорошо все начиналось, уже начал думать что CH32F это лучший китайский производитель. 😀
  2. Коллеги спасибо за активное участие, WFE ситуацию не изменило... В отладчике вывел регистр DMA CNTR, которой инкриминируется по мере заполнения буфера, без режима сна активно меняются значения, в режиме сна "стоит" до тех пор пока не сработает прерывание таймера и ядро не проснется. Выходит что, 1. Либо DMA вместе с ядром засыпает 2. Либо шина не работает в этот момент, но в этот момент я бы какой нибудь BusFault словил, хотя не уверен в этом... 3. Либо DMA не получает request от периферии, повторюсь, DMA я пробовал запускать напрямую от I2S(SPI) и от таймера, результат одинаков. Кроме того, клок I2S фигачит даже во сне, значит периферия работает 4. Либо есть что-то о чем я не знаю...
  3. В прерывании логика переключения буфера, так как есть действующее прерывание по этому и WFI Ради теста попробую WFE но думаю врядли что то измениться
  4. Да, конечно, я тоже об этом сразу подумал, SCB_SCR_SLEEPDEEP, PWR_CTLR_PDDS и PWR_CTLR_PDDS установлены в нули, и повторюсь, паралельно работает таймер(простой таймер, не RTC), он то может разбудить MCU, плюс клоки на I2S есть во время сна, значит периферия работает, по какойто причине перестает работать DMA. Из Stop режима я могу выйти только через EXTI и RTC из Standby по RTC и одному пину, так что вариант что я заходу в другой режим сна я почти сразу отбросил... Здесь все похоже что это какой-то брак или баг в кристале(например ядро вешает шину и DMA не может работать), в чем я очень сомневаюсь, но не исключаю такой вариант, либо есть какаято особенность в клоках Там только одна SRAM
  5. На сколько я понял за основу был взят STM32F205 но туда был добавлен USB-PHY HIGH Speed, дерево клоков соответственно отличается DMA работает в режиме Normal, пинает его... я пробовал два варианта: 1 - I2S, причем клок на выводе CK есть всегда 2 - Таймером дергать DMA Оба варианта c WFI не работают, без WFI все OK Кoнфигурациия DMA: _dma_i2s_rx_params.DMA_PeripheralBaseAddr = (uint32_t)&RECORD_I2S_INSTANCE->DATAR; _dma_i2s_rx_params.DMA_DIR = DMA_DIR_PeripheralSRC; _dma_i2s_rx_params.DMA_PeripheralInc = DMA_PeripheralInc_Disable; _dma_i2s_rx_params.DMA_MemoryInc = DMA_MemoryInc_Enable; _dma_i2s_rx_params.DMA_Mode = DMA_Mode_Circular; _dma_i2s_rx_params.DMA_Priority = DMA_Priority_VeryHigh; _dma_i2s_rx_params.DMA_M2M = DMA_M2M_Disable; /* 32bit word will places as two 16bit, so need use only Half Words */ _dma_i2s_rx_params.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; _dma_i2s_rx_params.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; _dma_i2s_rx_params.DMA_MemoryBaseAddr = (uint32_t)&_dma_i2s_left_right_data_buffer; _dma_i2s_rx_params.DMA_BufferSize = sizeof(_dma_i2s_left_right_data_buffer) / 2; // two 16bit samples per channel, for two channels // _dma_mem2mem_params.DMA_PeripheralBaseAddr = ((uint32_t)&_dma_i2s_left_right_data_buffer) + 4; _dma_mem2mem_params.DMA_DIR = DMA_DIR_PeripheralSRC; _dma_mem2mem_params.DMA_PeripheralInc = DMA_PeripheralInc_Disable; _dma_mem2mem_params.DMA_MemoryInc = DMA_MemoryInc_Enable; _dma_mem2mem_params.DMA_Mode = DMA_Mode_Normal; _dma_mem2mem_params.DMA_Priority = DMA_Priority_VeryHigh; _dma_mem2mem_params.DMA_M2M = DMA_M2M_Disable; // M2M Disable because Timer5 Driven it _dma_mem2mem_params.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; _dma_mem2mem_params.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; Сейчас не отвечу, но скажу что я туда 0xFFFFFFFF от безнадёги записывал, Ну и видел одну тему в инете, с подобными симптомами, там человек клок SRAM'а включал, я тоже так делал, не помогло...
  6. CH32F2 Не работает DMA+Sleep

    Китайский CH32F205. Перестает работать DMA когда ухожу в Sleep режим(WFI) 😂, если WFI нет, то DMA работает, прерывания по Transfer Complete приходят, добавляю WFI, прерывания перестают генерироваться, но когда срабатывает другое прерывания, например от таймера, микроконтроллер просыпается и следом влетаю в прерывание DMA. Такое ощущение что DMA вместе с ядром спит... Написал китайцам, не знаю ответят ли, по этому задаю вопрос здесь, может кто-то встречался с подобном?
  7. Это выходит что нужно подождать "бесконечность + 1" а лучше "бесконечность + (бесконечность / 5)" чтобы понять что модуль не работоспособен?
  8. Вероятно нужно разкомментировать HAL_CAN_MODULE_ENABLED в файле stm32f3xx_hal_conf.h
  9. К сожалению не то что мне нужно :( С возрастом это пройдет Если знаешь как должна работать периферия то уже пофигу чей код дебажить, свой или "несвой". Да, глюки могут быть везде, но чем популярнее, старше и свежее библиотека тем меньше вероятность попасть на баг.
  10. Смотрел, там тоже нету, по этому и тему создал, иначе бы не создавал:). Если они и есть то не на видном месте. Очень похоже на то что нормальные люди работают с ATSAME70 в Atmel Studiо или MPLAB
  11. Из то что я вижу, DFP (Device Family Pack) мне добавил описание SAME70 камней, теперь KEIL знает про их структуру памяти и архитектуру, сам может сделать sct файл, может добавить startup в проект и есть "Programming algoritm" для загрузки прошивки. Да, для работы этого достаточно, но раньше еще был SAM-ESV7_SFP который сейчас не поддерживается, там просто работа с периферией: И вот я не могу понять, где взять такое же только свежее? Atmel studiо и MPLAB Harmony генерят работу с периферией своими wizard'ами, это конечно тоже выход, но люблю когда рядом в проекте лежат библиотеки от производителя хотя бы для того, чтобы посмотреть, как они работают с той или иной периферией.
  12. Так с DFP все ок, на моем скрине видно что он свежий(up to date) и установлен, проблема с SFP, с либками для периферии, если можно их так назвать, совсем хилые)
  13. Atmel Studio + ATSAME70 >>to>> Keil + ATSAME70

    Есть необходимость собрать проект для камня SAME70 в среде KEIL. С настройками компилятора и компоновщика все ОК, проблемы возникают с библиотеками периферии. Те либы, что идут от KEIL устарели и хотелось бы использовать что-то посвежее. Но не могу понять, где взять свежак? Есть вариант сгенерить проект в Atmel studio с его ASF и с последними либами и потом его перетащить в KEIL, но мне не нравится такой вариант :(
  14. На есть ESP32 такое можно сделать, https://github.com/espressif/esp-adf/tree/master/examples/player/pipeline_bt_source И была в сети sdk для какихто CSRxxx, точный номер сейчас не помню То что по ссылке это посути обычные "bluetooth наушнки", которые играют звук в aux или в простые наушник, просто переходничек такой Ну и в вашей задумке есть нюанс, наушники обычно являются ведомым устройством и для того чтобы передать на них звук, к им нужно подключиться а это как минимум нужно кудато вывести список доступных устройсв, как максимум пин-код ввести(это редкость)...
  15. Буквально все? от до A-H? Пример от STшников: void EnterSTOPMode(void) { LL_GPIO_InitTypeDef gpio_initstruct = {LL_GPIO_PIN_ALL, LL_GPIO_MODE_ANALOG, LL_GPIO_SPEED_FREQ_HIGH, LL_GPIO_OUTPUT_PUSHPULL, LL_GPIO_PULL_NO, LL_GPIO_AF_0}; /* Set all GPIO in analog state to reduce power consumption, */ /* Note: Debug using ST-Link is not possible during the execution of this */ /* example because communication between ST-link and the device */ /* under test is done through UART. All GPIO pins are disabled (set */ /* to analog input mode) including UART I/O pins. */ LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA | LL_IOP_GRP1_PERIPH_GPIOB | LL_IOP_GRP1_PERIPH_GPIOC | LL_IOP_GRP1_PERIPH_GPIOD | LL_IOP_GRP1_PERIPH_GPIOE | LL_IOP_GRP1_PERIPH_GPIOH); LL_GPIO_Init(GPIOA, &gpio_initstruct); LL_GPIO_Init(GPIOB, &gpio_initstruct); LL_GPIO_Init(GPIOC, &gpio_initstruct); LL_GPIO_Init(GPIOD, &gpio_initstruct); LL_GPIO_Init(GPIOE, &gpio_initstruct); LL_GPIO_Init(GPIOH, &gpio_initstruct); LL_IOP_GRP1_DisableClock(LL_IOP_GRP1_PERIPH_GPIOA | LL_IOP_GRP1_PERIPH_GPIOB | LL_IOP_GRP1_PERIPH_GPIOC | LL_IOP_GRP1_PERIPH_GPIOD | LL_IOP_GRP1_PERIPH_GPIOE | LL_IOP_GRP1_PERIPH_GPIOH); /** Request to enter STOP mode * Following procedure describe in STM32L0xx Reference Manual * See PWR part, section Low-power modes, STOP mode */ /* Enable ultra low power mode */ LL_PWR_EnableUltraLowPower(); /** Set the regulator to low power before setting MODE_STOP. * If the regulator remains in "main mode", * it consumes more power without providing any additional feature. */ LL_PWR_SetRegulModeLP(LL_PWR_REGU_LPMODES_LOW_POWER); /* Set STOP mode when CPU enters deepsleep */ LL_PWR_SetPowerMode(LL_PWR_MODE_STOP); /* Set SLEEPDEEP bit of Cortex System Control Register */ LL_LPM_EnableDeepSleep(); /* Request Wait For Interrupt */ __WFI(); } Похоже на проблемы с оборудованием или подключением. Во время измерения отключаете программатор (перемычки SWIO\SWCLK, SBx на NRST)?
×
×
  • Создать...