|
STM32F1xx, UART на 10МБит - осуществимо? |
|
|
|
Oct 24 2012, 09:25
|

фанат дивана
     
Группа: Свой
Сообщений: 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х) секунд. При дальнейшем увеличении скорости отправка вообще перестаёт завершаться.  Такое впечатление, что обмен по DMA становится слишком интенсивным, и полностью забивает шину. Поэтому у меня вопрос: это я натолкнулся на ограничения железа? Или я что-то делаю не так? Кто-нибудь имел дело с такими скоростями UART, и насколько успешно?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
 |
Ответов
|
Oct 24 2012, 09:48
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Я конечно давно не использовал STM32. Но практически везде максимальную скорость можно при кинуть по формуле Freq/16. Т.е. при 36 MHZ выше 2.25 мбита не получить. Да и в даташите указано что уарт максимум на 4.5 мбита, как раз при 72 mhz и получается (но это на старые STM32, с новыми я не работал) А эта запись: Код USART3->BRR = 36000000 / BAUDRATE; вообще странна! потому что в этом регистре же не только целая часть делителя но и дробная! примерная формула должна быть такая (36000000*16) / (BAUDRATE*16)
|
|
|
|
|
Oct 24 2012, 10:07
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(scifi @ Oct 24 2012, 14:00)  Забавная формула, учитывая, что 16 в числителе и знаменателе сокращаются :-) Это уже обсуждалось. что то я туплю там действительно все сокращается. но есть ограничения. Цитата(AHTOXA @ Oct 24 2012, 14:04)  Про единичку в BRR - не понял, при скорости 3 600 000 в BRR будет 10. BRR не может быть меньше 16 там фиксед поинт. но число не может быть меньше 1.0 а 10 это 10/16
|
|
|
|
Сообщений в этой теме
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   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    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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|