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

 
 
> UART в LPC2000
Harvester
сообщение Feb 10 2006, 07:30
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Выбираю микроконтроллер для нового проекта. Нужен высокоскоростной UART (не менее 0.5 Мбит/с) + высокая производительность + минимально возможная цена.
Пока остановился на LPC2101.
В доках на LPC2000 пишут, что при Pclk=20 МГц можно получить ~0.5 Мбит/с. А будет ли блок UART работать на 60 МГц, что теоретически даст 1.5 Мбит/с? Кто-нибудь гонял его при такой частоте?


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
iit
сообщение Feb 10 2006, 08:28
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 8-11-04
Из: Томск
Пользователь №: 1 070



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


У меня на LPC2106 при 60 МГц работал на скорости ~1.3 Мбит/сек.
Go to the top of the page
 
+Quote Post
nameless
сообщение Feb 10 2006, 18:55
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 9-07-04
Пользователь №: 305



В обоих постах очень странные цифры: в мануале 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 и не пытался.... драйвер/ресивер не позволяют...
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 11 2006, 08:09
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(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         */
}
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Feb 11 2006, 09:39
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



В нескольких моих проектах 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
}
Go to the top of the page
 
+Quote Post

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

 


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


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