|
работа UART процессора BF533 |
|
|
|
Aug 6 2007, 04:36
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 29-11-06
Из: Екатеринбург
Пользователь №: 22 890

|
Начинаю осваивать BF-533 по примерам, программы на С, использую ADSP-BF533 EZ-Kits (27MHz). Попробывал с простым примером из программ EZ-Kits - LED индикаторы, что то работает. Далее пытаюсь сделать работу процессора BF533 с последовательным портом RS232. Мне очень нужное дело. На входе GPS - раз в секунду выдаёт строку данных (GPS точно работает, со скоростью 9600). Пока просто пытаюсь убедиться, что работает UART, идут его прерывания. Для этого в прерывание UART изменение индикации LED индикаторов EZ-Kits (*pFlashA_PortB_Data), ноль имоций. Возможно неправильная инц-я UART и т.д. Навставлял где надо и ненадо (по другим примерам): ssync(); idle(); Собственно их значение мне почти не понятно
Мой пример далее - если есть возможность у опытных разработчиков?
#ifndef __Talkthrough_DEFINED #define __Talkthrough_DEFINED #include <sys\exception.h> #include <cdefBF533.h> #include <ccblkfn.h> #include <sysreg.h> void Init_Config(void); void Init_Interrupts(void); void Init_Flags(void); void Init_Flash(void);
// CLKIN frequency is 27MHz on the ADSP-BF533 EZ-Kits. #define CLKIN 27
#define BAUDRATE 9600 #define NEWLIGHT 200
// Neiaieuiua eiinoaiou // // Aa?ana aey Port B a Flash A #define pFlashA_PortB_Dir (volatile unsigned char *)0x20270007 #define pFlashA_PortB_Data (volatile unsigned char *)0x20270005
extern char aByte; extern short FlagLight; extern long int IntrId;
EX_INTERRUPT_HANDLER(UART_RX_ISR); #endif
//--------------------------------------------------------------------------//
#include "Talkthrough.h" #include "sysreg.h" #include "ccblkfn.h" #include <defBF533.h> #include <string.h> char aByte; short FlagLight=0; long int IntrId=0;
/////////////////////////////////////////////////////////////// //CLKIN is the input clock.The ADSP-BF533 EZ-Kit's CLKIN is 27MHz //This function will check what the system clock is based //on the MSEL, DF, and SSEL values in the PLL_CTL and PLL_DIV registers. /////////////////////////////////////////////////////////////// int GetSCLK() { unsigned short tempPLLCTL, tempPLLDIV; unsigned short MSEL, SSEL, DF, VCO, SCLK; unsigned short clkin = CLKIN;
tempPLLCTL = *pPLL_CTL; tempPLLDIV = *pPLL_DIV; //get MSEL, SSEL, DF MSEL = ((tempPLLCTL & 0x7E00) >> 9); SSEL = tempPLLDIV & 0x000f; DF = tempPLLCTL & 0x0001; if(DF == 1) clkin = clkin/2; VCO = MSEL * clkin; return ( VCO * 1000000 ) / SSEL; }
void main(void) { sysreg_write(reg_SYSCFG, 0x32); Init_Config(); Init_Flash(); Init_Interrupts(); while(1) {}; }
//--------------------------------------------------------------------------//
#include "Talkthrough.h"
void Init_Config(void) { unsigned long divisor=0;
*pPLL_CTL = 0x0200; // VCO = 27MHz ssync(); idle();
*pUART_LCR = 0x83; ssync(); divisor = GetSCLK() / ( 16 * BAUDRATE ); *pUART_DLL = divisor; ssync(); *pUART_DLH = divisor>>8; ssync(); *pUART_LCR = 0x03; ssync(); *pUART_GCTL = 0x01; ssync(); }
void Init_Interrupts(void) { *pUART_IER = 0x0007; *pUART_IIR = 0x0005; ssync(); *pSIC_IAR0 = 0xffffffff; *pSIC_IAR1 = 0xf3ffffff; *pSIC_IAR2 = 0xffff5fff; ssync(); register_handler(ik_ivg10, UART_RX_ISR); *pSIC_IMASK = 0x00084000; ssync(); }
void Init_Flash(void) { *pEBIU_AMBCTL0 = 0x7bb07bb0; *pEBIU_AMBCTL1 = 0x7bb07bb0; *pEBIU_AMGCTL = 0x000f; *pFlashA_PortB_Dir = 0x3f; *pFlashA_PortB_Data = 0x31; } //--------------------------------------------------------------------------//
#include "Talkthrough.h" EX_INTERRUPT_HANDLER(UART_RX_ISR) { aByte = *pUART_RBR; ssync(); if(FlagLight) { FlagLight = 0; if(IntrId > NEWLIGHT) { IntrId = 0; *pFlashA_PortB_Data = 0x10; } else IntrId++; } else { FlagLight = 1; if(IntrId > NEWLIGHT) { IntrId = 0; *pFlashA_PortB_Data = 0x21; } else IntrId++; } }
|
|
|
|
|
 |
Ответов
|
Aug 28 2007, 12:46
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 29-11-06
Из: Екатеринбург
Пользователь №: 22 890

|
Gps приемник встраиваемый (это просто чип). Мой Gps (как мне писали, покупал года 4 назад) TIM-LP Macro-Component http://www.u-blox.com/products/tim_lp.htmlВскрывал корпус (бокс) на чипе написано: u-blox TIMA-C0001-0 (по этому названию данных не нашёл). С PC GPS работает прекрасно, выдает 1 раз в секунду текущее положение по станд. протоколу NMEA. Cимвольная строка X,Y, время и т.д. - около сотни символов. НО почему не работает с ADSP-BF533 EZ-Kits (убивать за такие разработки мало) - та контора, делали бокс и для экономии запитали часть Gps из цепи RS232 - DB9 нога 6, а ADSP-BF533 EZ-Kits она весит в воздухе. Сколько времени потеряли пока нашли. Они сами уже давно забыли. Моя работа GPS - принимать строку X,Y, ... и сохранять (накапливать), решил пока в SDRAM (32Mb) ADSP-BF533 EZ-Kits. Сейчас разбираюсь с SDRAM, EBIU. Пока наворачивал SDRAM, сломался UART. Сейчас GPS импульсы посылает - прерывания есть, всё нормально. Но если в прерывании читаю *pUART_RBR всё замирает. Опять собрал тест Terminal v1.9b <-> ADSP-BF533 EZ-Kits. EZ-Kits принимает от Terminal символы и тут же посылае ему обратно. Когда делал первый раз (вы дали мне Terminal) всё быстро работало. В приёмной части Terminal моментом появлялсь теже символы. Сейчас дикое запаздывание, один символ появляется через секунду или больше. Как бы старался UART не задивать, что случилось - не знаю. С уважением badik
|
|
|
|
|
Sep 12 2007, 09:41
|
Частый гость
 
Группа: Участник
Сообщений: 106
Регистрация: 1-06-05
Из: Подольск
Пользователь №: 5 629

|
Цитата(badik @ Aug 28 2007, 15:46)  Gps приемник встраиваемый (это просто чип). Мой Gps (как мне писали, покупал года 4 назад) TIM-LP Macro-Component http://www.u-blox.com/products/tim_lp.htmlВскрывал корпус (бокс) на чипе написано: u-blox TIMA-C0001-0 (по этому названию данных не нашёл). С PC GPS работает прекрасно, выдает 1 раз в секунду текущее положение по станд. протоколу NMEA. Cимвольная строка X,Y, время и т.д. - около сотни символов. НО почему не работает с ADSP-BF533 EZ-Kits (убивать за такие разработки мало) - та контора, делали бокс и для экономии запитали часть Gps из цепи RS232 - DB9 нога 6, а ADSP-BF533 EZ-Kits она весит в воздухе. Сколько времени потеряли пока нашли. Они сами уже давно забыли. Моя работа GPS - принимать строку X,Y, ... и сохранять (накапливать), решил пока в SDRAM (32Mb) ADSP-BF533 EZ-Kits. Сейчас разбираюсь с SDRAM, EBIU. Пока наворачивал SDRAM, сломался UART. Сейчас GPS импульсы посылает - прерывания есть, всё нормально. Но если в прерывании читаю *pUART_RBR всё замирает. Опять собрал тест Terminal v1.9b <-> ADSP-BF533 EZ-Kits. EZ-Kits принимает от Terminal символы и тут же посылае ему обратно. Когда делал первый раз (вы дали мне Terminal) всё быстро работало. В приёмной части Terminal моментом появлялсь теже символы. Сейчас дикое запаздывание, один символ появляется через секунду или больше. Как бы старался UART не задивать, что случилось - не знаю. С уважением badik простите за столь поздний ответ. - забегался. не реагирует на прерывание по RBR - проверяйте флаг наличия данных во входном регистре. просто "покачайтесь" в while на проверку этого флага. - у меня была та же проблема. тоесть - проверте установку флага DR - если он установлен - читайте данные из регистра приема. будут проблемы - пишите вышлю свои исходники. по поводу запаздывания - скорости работы проверяли , они совпадают ?
|
|
|
|
|
Sep 14 2007, 09:11
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 29-11-06
Из: Екатеринбург
Пользователь №: 22 890

|
Благодарю за помощь. Всётаки мой UART ADSP-BF533 EZ-Kits работает. Как то сам устранился эффект задержки данных от EZ-Kits к Terminal. В плане скоростей всё тоже. Чудеса. Наложились различные особенности: 1. Terminal v1.9b - символ "$" служебный Для GPS все данные вида $GPRMC,082519.998,V,5646.9429,N,06033.3812,E,0.00,,050907,,*07 (в конце CR+LF {\n\r}). В ADSP-BF533 EZ-Kits при вводе искал строку "$GPRMC". Долго разбирался. Terminal использовал как модель GPS, через него можно отправить данные EZ-Kits и получить-увидеть ответ на экране. 2. GPS имеет свои... Нехватает здорово графического ЖКИ (LCD), всё выводить на экран в самом EZ-Kits - резко упростит отладку. А так в слепую. У меня есть PG320240D-P5 (Powertip), как я понял LCD можно подключить к EZ-Kits через плату расширения (Blackfin EZ-Extender, разъём P8), она у меня есть. С графическими ЖКИ я не работал.
Думал - выручит ли пока память SDRAM в EZ-Kits, нужно выключать питание? В память сохрнять всё с GPS. Ну а проблема LCD в прнципе важна, я занимаюсь автономной аппаратурой. Большая просьба помочь с LCD. С уважением badik
|
|
|
|
Сообщений в этой теме
badik работа UART процессора BF533 Aug 6 2007, 04:36 bychkov_vladimir Цитата(badik @ Aug 6 2007, 07:36) Начинаю... Aug 6 2007, 09:25 badik Цитата(bychkov_vladimir @ Aug 6 2007, 12... Aug 6 2007, 10:25 bychkov_vladimir предлагаю попробывать Вам работу с прерыванием и ч... Aug 6 2007, 12:20 andrews Цитата(bychkov_vladimir @ Aug 6 2007, 16... Aug 7 2007, 08:46 badik Благодарю за помощь.
Я видел Ваши сообщения по RS2... Aug 7 2007, 11:18 bychkov_vladimir Давайте по порядку
кабель нужен не нуль модемный ... Aug 7 2007, 13:31 badik Ещё раз Благодарю за помощь.
Ценой усилий целого д... Aug 8 2007, 13:50 bychkov_vladimir это особенность платы .
просто там так распаяна ви... Aug 8 2007, 14:40 andrews Я при отладке моего проекта спаял кабель самостоят... Aug 9 2007, 09:17 badik Огромное Вам спасибо!
Пообщался успешно с Ter... Aug 18 2007, 11:51 andrews Что касается статей цикла, то в КиТ уже опубликова... Aug 19 2007, 14:02 badik По поводу курсов Blackfin-ов: в Питере университет... Aug 21 2007, 08:15
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|