Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: UART в LPC2000
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Harvester
Выбираю микроконтроллер для нового проекта. Нужен высокоскоростной UART (не менее 0.5 Мбит/с) + высокая производительность + минимально возможная цена.
Пока остановился на LPC2101.
В доках на LPC2000 пишут, что при Pclk=20 МГц можно получить ~0.5 Мбит/с. А будет ли блок UART работать на 60 МГц, что теоретически даст 1.5 Мбит/с? Кто-нибудь гонял его при такой частоте?
iit
Цитата(Harvester @ Feb 10 2006, 10:30) *
Выбираю микроконтроллер для нового проекта. Нужен высокоскоростной UART (не менее 0.5 Мбит/с) + высокая производительность + минимально возможная цена.
Пока остановился на LPC2101.
В доках на LPC2000 пишут, что при Pclk=20 МГц можно получить ~0.5 Мбит/с. А будет ли блок UART работать на 60 МГц, что теоретически даст 1.5 Мбит/с? Кто-нибудь гонял его при такой частоте?


У меня на LPC2106 при 60 МГц работал на скорости ~1.3 Мбит/сек.
nameless
В обоих постах очень странные цифры: в мануале LPC210X черным по-белому: Pclk делим на 16 и получаем верхнюю скорость... 20/16 = 1.25; 60/16 = 3.75. В подтверждение - кусок из РАБОЧЕГО (сам проверял) примера (идет с Rowley CW 1.5 for ARM):

static void UARTInitialize(unsigned int baud)
{
unsigned int divisor = peripheralClockFrequency() / (16 * baud);
U1LCR = 0x83; //8 bit,1stop bit,no parity,enable DLAB
U1DLL = divisor & 0xFF;
U1DLM = (divisor >> 8) & 0xFF;
U1LCR &= ~0x80; //Disable DLAB
PINSEL0 = PINSEL0 & ~(0xFFFF << 16) | (0x5555 << 16);
U1FCR = 1;
}

Именно так и пользую с 2106...Больше чем 230400 и не пытался.... драйвер/ресивер не позволяют...
defunct
Цитата(Harvester @ Feb 10 2006, 09:30) *
В доках на LPC2000 пишут, что при Pclk=20 МГц можно получить ~0.5 Мбит/с. А будет ли блок UART работать на 60 МГц, что теоретически даст 1.5 Мбит/с? Кто-нибудь гонял его при такой частоте?


На частоте ~60Mhz для получения 115200 - используется делитель ~30. т.е. остается 30-ти кратный запас по скорости.

инициализация UART'ов (keil)

Код
void init_serial (void)                  /* Initialize Serial Interface       */
{                     
  PINSEL0     = 0x00050005;             /* Enable both UARTS RxD and TxD   */
  U1LCR     = 0x83;                 /* 8 bits, no Parity, 1 Stop bit     */
  U1DLL     = 30;                   /* 115200 Baud Rate @ 11.059 with PLL-Multiplier 5(M=4, P=1) */
  U1DLM     = 0;
  U1LCR     = 0x03;                    /* DLAB = 0                          */
  U1IER     = 0x01;                 /* Rx interrupt                      */

  U0LCR     = 0x83;                 /* 8 bits, no Parity, 1 Stop bit     */
  U0DLL     = 30;                   /* 115200 Baud Rate @ 11.059 with PLL-Multiplier 5(M=4, P=1) */
  U0DLM     = 0;
  U0LCR     = 0x03;                    /* DLAB = 0                          */
  U0IER     = 0x03;                 /* Rx interrupt/Tx interrupt         */
}
yuri_t
В нескольких моих проектах UART от LPC21XX работает на скорости 921600 baud

//----------------------------------------------------------------------------
// UART0 init - FIFO enabled,IRQ enabled(later)
//----------------------------------------------------------------------------
void InitUART0(void)
{
//---- pinout -----
rPCB_PINSEL0 = (rPCB_PINSEL0 & ~0xF) | ( 1 | (1<<2)); //-- Pins P0.0 & P0.1 - for UART1

//-- enable access to divisor latch regs
rUART0_LCR = LCR_ENABLE_LATCH_ACCESS;
//-- set divisor for desired baud
rUART0_DLM = 0;
rUART0_DLL = 4; // (14746000*4)/(16*921600) = 4
//-- disable access to divisor latch regs (enable access to xmit/rcv fifos
//-- and int enable regs)
rUART0_LCR = LCR_DISABLE_LATCH_ACCESS;

//-- Enable UART0 rx interrupts
rUART0_IER = 3; //-- Enable RDA(Receive Data Available) int
rUART0_FCR = (0x3<<6) | 1; //-- Int Trigger - 4 bytes, Enable FIFO,Reset Tx FIFO & Rx FIFO

//-- setup line control reg - disable break transmittion, even parity,
//-- 1 stop bit, 8 bit chars
rUART0_LCR = 0x13;//-- 0b00010011
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.