ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
801578 Топик полностью
SciFi (12.12.2017 17:29, просмотров: 133) ответил VLLV на Пока DMA стартанет и прочухается, висят флаги окончания предыдущей передачи?
Пока возился, упростил это всё с учётом того, что чтение и запись делают одно и то же. Все необъяснимые задержки ушли: static void transfer(int len) { DMA1_Stream0->M0AR = (int)dmabuf; DMA1_Stream7->M0AR = (int)dmabuf; DMA1_Stream0->PAR = (int)&SPI3->DR; DMA1_Stream7->PAR = (int)&SPI3->DR; DMA1_Stream0->NDTR = len; DMA1_Stream7->NDTR = len; DMA1_Stream0->CR = (0 * DMA_SxCR_CHSEL_0) // select channel 0 | DMA_SxCR_MINC; // memory increment mode DMA1_Stream0->CR |= DMA_SxCR_EN; // enable stream DMA1_Stream7->CR = (0 * DMA_SxCR_CHSEL_0) // select channel 0 | DMA_SxCR_DIR_0 // memory to peripheral | DMA_SxCR_MINC; // memory increment mode DMA1_Stream7->CR |= DMA_SxCR_EN; // enable stream while ((DMA1->LISR & DMA_LISR_TCIF0) == 0) ; // wait for DMA TCIF DMA1_Stream0->CR = 0; DMA1_Stream7->CR = 0; while (DMA1_Stream0->CR || DMA1_Stream7->CR) ; // wait DMA1->LIFCR = DMA_LIFCR_CTCIF0 | DMA_LIFCR_CHTIF0 | DMA_LIFCR_CTEIF0; DMA1->HIFCR = DMA_HIFCR_CTCIF7 | DMA_HIFCR_CHTIF7 | DMA_HIFCR_CTEIF7; }
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้