|
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, и насколько успешно?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
 |
Ответов
|
Jun 30 2014, 03:21
|
Знающий
   
Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375

|
Цитата может тогда просто взять езернет PHY 10мбитный. в режиме SNI будет выглядеть почти как просто SPI со стороны контроллера. RTL8201 или DP83848. ну или поставить любую самую мелкую cpld и на ней енкодер/декодер манчестера сделать для SPI от контроллера и потом его поверх 485 по одной паре. Возникла похожая задача. Хочу протянуть через коаксиал питание и данные. Данных 115200 кбит/с. Датчиков до 256 шт., каждому свой кабель 5-20 м. В идеале подошел бы TTCAN или Ethernet с протоколом синхронизации времени. Если есть мелкое решение (корпус-жор) для UART, то будет хорошо. Вроде посмотрел все модемы, и декодеры манчестера. Все старое в PLCC. CPLD лепить сбоку не особо хочется, вдруг пропустил все в одном флаконе. Может есть готовые решения? Пока думаю 10BASE-T half duplex через трансформатор загонять в коаксиал (все согласую сам). С езернетом смущает свитч на 256 портов и потребление phy. UART (RS-485) как-то получше смотрится, его можно сделать на МК и заводить через 100BASE.
|
|
|
|
Сообщений в этой теме
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 _pv Цитата(Major @ Jun 30 2014, 10:21) Возник... Jun 30 2014, 08:32 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
|
|
|