реклама на сайте
подробности

 
 
> STM32F1xx, UART на 10МБит - осуществимо?
AHTOXA
сообщение Oct 24 2012, 09:25
Сообщение #1


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Всем привет.
STM32F1xx, 72МГц, UART3 (тактируется от 36 МГц). Пытаюсь достичь высоких скоростей. И что-то не получается.
Отправляю блоки ~512 байт, через DMA.
Инициализация:
Код
    RCC->APB1ENR |= RCC_APB1ENR_USART3EN;
    USART3->BRR = 36000000 / BAUDRATE;
    USART3->CR1 =  USART_CR1_TE;      // transmit enable
    USART3->CR2 = 0;
    USART3->CR3 = USART_CR3_DMAT;   // no flow control, enable TX DMA
    USART3->CR1 |= USART_CR1_UE;      // enable USART

    // UART interrupt
    NVIC_SetPriority(USART3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 2, 2));
    NVIC_EnableIRQ(USART3_IRQn);

    // DMA
    RCC->AHBENR |= RCC_AHBENR_DMA1EN;
    DMA1_Channel2->CPAR = (uint32_t)&USARTx->DR;
    DMA1_Channel2->CCR = 0
            | DMA_CCR1_MINC             // Memory increment mode
            | DMA_CCR1_DIR               // Read from memory
            | DMA_CCR1_PL_0             // Channel Priority level
        ;

Отправка блока:
Код
void sendBuf(const void* buf, size_t size)
{
    // clear all interrupts on DMA TX channel
    DMA1_Channel2->IFCR = DMA_ISR_GIF2;
    // set memory address and size
    DMA1_Channel2->CMAR = (uint32_t)buf;
    DMA1_Channel2->CNDTR = size;

    // Clear USART transmission complete flag:
    USART3->SR &= ~USART_SR_TC;
    // enable DMA channel
    DMA1_Channel2->CCR |= DMA_CCR1_EN;;
    // enable UART TC interrupt
    USART3->CR1 |= USART_CR1_TCIE;

    // wait for transfer complete
    txDmaDone_.wait();
    // disable DMA channel
    DMA1_Channel2->CCR &= ~DMA_CCR1_EN;;
}

Ну и прерывание от UART:
Код
void USART3_IRQHandler()
{
    uint16_t status = USART3->SR;
    if (status & USART_SR_TC)
    {
        // clear interrupt
        USART3->SR &= ~USART_SR_TC;
        // disable it
        USART3->CR1 &= ~USART_CR1_TCIE;
        // and flag transmission done
        txDmaDone_.signal_isr();
    }
}

Вот. Всё весьма незамысловато. И до скоростей порядка 2МБит это замечательно работает. А вот после - начинается нечто странное. Чем больше скорость, тем больше время отправки блока. На скорости 3.6МБит отправка блока длится несколько (около 4х) секунд. При дальнейшем увеличении скорости отправка вообще перестаёт завершаться. biggrin.gif

Такое впечатление, что обмен по DMA становится слишком интенсивным, и полностью забивает шину.
Поэтому у меня вопрос: это я натолкнулся на ограничения железа? Или я что-то делаю не так?
Кто-нибудь имел дело с такими скоростями UART, и насколько успешно?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AHTOXA   STM32F1xx, UART на 10МБит - осуществимо?   Oct 24 2012, 09:25
- - Flexz   Дык у F1 у UART1 потолок 4.5Мбит, у 2 и 3 - 2.25МБ...   Oct 24 2012, 09:44
|- - AHTOXA   Цитата(Flexz @ Oct 24 2012, 15:44) Дык у ...   Oct 24 2012, 10:04
- - KRS   Я конечно давно не использовал STM32. Но практичес...   Oct 24 2012, 09:48
|- - scifi   Цитата(KRS @ Oct 24 2012, 13:48) примерна...   Oct 24 2012, 10:00
|- - KRS   Цитата(scifi @ Oct 24 2012, 14:00) Забавн...   Oct 24 2012, 10:07
|- - scifi   Цитата(KRS @ Oct 24 2012, 14:07) да один ...   Oct 24 2012, 10:15
||- - KRS   Цитата(scifi @ Oct 24 2012, 14:15) Кстати...   Oct 24 2012, 10:18
||- - AHTOXA   Цитата(scifi @ Oct 24 2012, 16:15) Кстати...   Oct 24 2012, 10:18
||- - scifi   Цитата(AHTOXA @ Oct 24 2012, 14:18) О, во...   Oct 24 2012, 10:26
|- - AHTOXA   Цитата(KRS @ Oct 24 2012, 16:07) BRR не м...   Oct 24 2012, 10:16
|- - KRS   Цитата(AHTOXA @ Oct 24 2012, 14:16) Насчё...   Oct 24 2012, 10:22
|- - AHTOXA   Цитата(KRS @ Oct 24 2012, 16:22) Это реал...   Oct 24 2012, 10:27
|- - scifi   Цитата(AHTOXA @ Oct 24 2012, 14:27) Или в...   Oct 24 2012, 10:35
|- - KRS   Цитата(AHTOXA @ Oct 24 2012, 14:27) Или в...   Oct 24 2012, 10:36
- - Flexz   Вообще-то "дробные" частоты получить оче...   Oct 24 2012, 10:53
|- - KRS   Цитата(Flexz @ Oct 24 2012, 14:53) А если...   Oct 24 2012, 10:56
- - Flexz   Кто ж ему помешает-то? 16 клоков нужны только для ...   Oct 24 2012, 11:01
- - AHTOXA   Цитата(scifi @ Oct 24 2012, 16:26) К сожа...   Oct 24 2012, 13:24
|- - _pv   Цитата(AHTOXA @ Oct 24 2012, 20:24) То ес...   Oct 24 2012, 19:30
|- - AHTOXA   Цитата(_pv @ Oct 25 2012, 01:30) максимум...   Oct 24 2012, 20:06
|- - _pv   Цитата(AHTOXA @ Oct 25 2012, 02:06) Ну ка...   Oct 24 2012, 20:35
|- - AHTOXA   Цитата(_pv @ Oct 25 2012, 02:35) ну меньш...   Oct 24 2012, 21:12
|- - Aner   QUOTE (AHTOXA @ Oct 25 2012, 00:12) Ну да...   Oct 24 2012, 21:48
|- - AHTOXA   Мне надо быстро сливать большой объём данных с одн...   Oct 24 2012, 22:07
|- - ViKo   Цитата(AHTOXA @ Oct 25 2012, 01:07) Мне н...   Oct 25 2012, 04:50
|- - AHTOXA   Цитата(ViKo @ Oct 25 2012, 10:50) Но сейч...   Oct 25 2012, 05:20
|- - scifi   Цитата(AHTOXA @ Oct 25 2012, 09:20) Да не...   Oct 25 2012, 05:25
|- - Allregia   Цитата(AHTOXA @ Oct 25 2012, 07:20) Цитат...   Oct 25 2012, 06:07
|- - ViKo   Цитата(AHTOXA @ Oct 25 2012, 08:20) Скоро...   Oct 25 2012, 06:14
- - ViKo   А ножки на 50 MHz настроили?   Oct 24 2012, 13:52
|- - AHTOXA   Да, конечно. Не стал приводить для краткости.   Oct 24 2012, 16:43
- - MrAlex   ЦитатаДробные - сильно сомневаюсь. (Нечто похожее ...   Oct 24 2012, 18:27
- - Aner   Однозначно, без проблем - Ethernet 100M.   Oct 24 2012, 22:22
- - AHTOXA   Цитата(Allregia @ Oct 25 2012, 12:07) RJ4...   Oct 25 2012, 08:16
|- - _pv   Цитата(AHTOXA @ Oct 25 2012, 15:16) Я не ...   Oct 25 2012, 09:26
- - Major   Цитатаможет тогда просто взять езернет PHY 10мбитн...   Jun 30 2014, 03:21
|- - _pv   Цитата(Major @ Jun 30 2014, 10:21) Возник...   Jun 30 2014, 08:32
|- - Aner   QUOTE (Major @ Jun 30 2014, 06:21) Возник...   Jun 30 2014, 11:21
- - Major   У меня проблема комплексная, и цена кабеля вторичн...   Jun 30 2014, 09:39
- - Major   ЦитатаSX1276 технология Lora, манчестер аппаратный...   Jun 30 2014, 12:02
- - Aner   http://www.aliexpress.com/item/Sfm-1-l-sx1...16987...   Jun 30 2014, 12:12


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016