ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
73945
smartleds (13.11.2006 14:00, просмотров: 1257)
Господа, подскажите в чем может быть причины не работы UART0 Использую LPC2138 UART0 При различной конфигурации ФАПЧ UART то работает ,а то нет. Кварц использую 12МНz. Хотелось бы частоту процессора установить 48MHz, а UART сконфигурировать на 2400бод Процедура установки частоты процессорв и шины VPB Если частоту кварца умножаю на 4 т.е. коэффициент M=4, для шины VPB (от которой UART работает) потом делю на 4, чтобы остались по прежнему 12MHz, то UART не работает А если не увеличивать частоту процессора , и соответственно не уменьшать потом для шины VPB (M=0), то все работает. Вот процедура увеличения частоты void FrecInit(void) { unsigned char div; // M=Cclk/Fosc=48/12=4 //P -> 156Mhz<Cclk*2*P<320Mhz // PLLCFG_bit.MSEL = 4; //M - multiplier Cclk = freq external oscillator*M <60Mhz так не работает PLLCFG_bit.MSEL = 0; //M - multiplier Cclk = freq external oscillator*M <60Mhz так работет PLLCFG_bit.PSEL = 2; //P - devider 156Mhz<Cclk*2*P<320Mhz //set changes (require from architecture) PLLFEED_bit.FEED = 0xAA; PLLFEED_bit.FEED = 0x55; //enable or connect PLL //enable PLL PLLCON_bit.PLLE = 1; //set changes (require from architecture) PLLFEED_bit.FEED = 0xAA; PLLFEED_bit.FEED = 0x55; //wait for PLOK (correct freq) while(PLLSTAT_bit.PLOCK == 0); PLLCON_bit.PLLC = 1; //set changes (require from architecture) PLLFEED_bit.FEED = 0xAA; PLLFEED_bit.FEED = 0x55; // div=4; делю чтобы получить частоту VPB =12MHz div=1; делю на 1 поскольку частота VPB уже 12MHz VPBDIV=div; // frequence VPB-->Pclk Pclk=Cclk/div; div=1,2 or 4 // PLLFEED_bit.FEED = 0xAA; // PLLFEED_bit.FEED = 0x55; }