Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Модуль UART в ADUC7026
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Paragon
Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Сергей Борщ
Цитата(Paragon @ Sep 8 2006, 07:51) *
Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример.
Paragon
Цитата(Сергей Борщ @ Sep 8 2006, 16:42) *
Цитата(Paragon @ Sep 8 2006, 07:51) *

Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример.

Интересно ли мне? Интересно - не то слово. Вопрос жизни и смерти!:)
Можно послать примеры на paragon@rez.ru или сообщить, где они лежат. Заранее признателен.
Snusmumrik
Цитата(Paragon @ Sep 11 2006, 04:29) *


Более подробное - не попадалось. Но тоже заставил его работать smile.gif Замеченные особенности работы:
для загрузки программы использовать - только пины 1.0 и 1.1, а не 0.7 и 2.0 - я на это попался, т.к. в документации разница между ними не оговаривалась, а техсаппорт ADI мне ответил, что,мол, сорри, забыли описать, в след. версии даташита... А у меня на тестовом образце девайса пришлось проводки сверху к пинам припаивать smile.gif Это для загрузки только, потом 0.7 и 2.0 можно использовать как RXD и TXD
IEC
Цитата(Сергей Борщ @ Sep 8 2006, 13:42) *
Цитата(Paragon @ Sep 8 2006, 07:51) *

Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример.


Если возможно, перешлите пример на gsv@iec-ua.com, а то никак не могу завести. Прерывания по приему идут, а ответ не передается. Кстати вот код, может кто что-нибудь подскажет:

/*--------------------------------------------------------------------------*/
void UART_IRQ(void)
{
unsigned char comiid0 = COMIID0&0x06;

if( comiid0==0x02 ) { // Орбаботка прерывания по передаче
if ( buf[0]<=len ) COMTX = buf[len++];
else {
COMIEN0 |= (1<<ELSI); // разрешение обработки прерываний
len = 0x00;
}
}
else {
if( comiid0==0x04 ) { // Обработка прерывания по приему
buf[len] = COMRX;
if ( (buf[0]&0x0f)==len ) { // завершение приема команды
COMIEN0 &=~ (1<<ELSI); // запрет обработки прерываний
clocUart = 0x00; // запрет обработки тайм-аута обмена
// FullUART = 0x55; // установка флага приема посылки

ActiveTX();
}
else {
len++;
clocUart = 10;
}
}
else { // сброс необрабатываемых прерываний
comiid0 = COMSTA0;
comiid0 = COMSTA1;
}
}
}
/*--------------------------------------------------------------------------*/
void UART_Init(void)
{
unsigned short baund = 0x92;
//Инициализация COM-порта
COMCON0 = (1<<DLAB);
COMDIV1 = (baund>>8);
COMDIV0 = baund&0xff;
COMCON0 = (1<<STOP)|(3<<WLS); // 8-бит + 2 стоповых
COMIEN0 = (1<<ELSI)|(1<<ETBEI);//Радрешение прерываний по приему и передаче

baund = COMIID0; // контрольный сброс прерываний
len = 0x00;
}
//--------------------------------------------------------------------------
void ActiveTX(void)
{
COMTX = buf[len=0];
len++;
}
/*--------------------------------------------------------------------------*/

в UART_IRQ попадает при анализе флага
(IRQSIG&UART_BIT) в обработке прерывания.
Сергей Борщ
Цитата(IEC @ Oct 10 2006, 16:05) *
Цитата(Сергей Борщ @ Sep 8 2006, 13:42) *

Цитата(Paragon @ Sep 8 2006, 07:51) *

Подскажите, пожалуйста, есть ли более подробное описание UART ADUC702x, чем приведённое в даташите?
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример.


Если возможно, перешлите пример на gsv@iec-ua.com, а то никак не могу завести. Прерывания по приему идут, а ответ не передается.

Где может быть проблема: первые образцы кристаллов имели коэфф. умножения PLL 1376 и частоту около 45МГц, в последних даташитах указано 1275 и 41.7МГц. Я на этом довольно много времени потерял. Свой код прилагаю. Код выдернут из проекта и в "обкоцаном" виде не проверялся.

P.S. Поборол природную лень и проверил/подправил приложенный код. Теперь компилится и работает.
IEC
С частотой я уже разобрался: действительно частота ядра ниже! Синхронизировал длительность одного бита с помощью осциллографа (пришлось применить дробный делитель).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.