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

 
 
> работа UART процессора BF533
badik
сообщение Aug 6 2007, 04:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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++;
}
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrews
сообщение Aug 9 2007, 09:17
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 25-08-05
Пользователь №: 7 959



Я при отладке моего проекта спаял кабель самостоятельно. Для его проверки можно использовать программу из примеров Visual DSP++. Вообще весь процесс отладки очень подробно описан в моей статье "Погружение с "черными плавниками" часть 2. Привожу нужный фрагмент текста.
---
"Для отладки нашего драйвера мы, конечно же, должны использовать дополнительный компьютер с установленной на нем терминальной программой. Ситуация весьма распространенная, когда требуется точка опоры, чтобы повернуть Землю. Ни на одну программу нельзя полагаться априори, какими бы гениальными программистами она не была создана. Убедиться в работоспособности выбранной терминальной программы можно с помощью “петли”, то есть, соединения выхода последовательного COM порта с его входом. Как это сделать физически не суть важно. В простейшем случае достаточно в 9-контактном разъеме DB9M соединить между собой 2 и 3 контакты. Результат тестирования использованной нами программы Terminal v1.9b вы видите на рис.1

Поясним, что изображено на рисунке в нескольких словах, поскольку и далее мы будем пользоваться для иллюстрации именно этой программой. Серое окно в средней части с четырьмя скроллбарами является консолью приемника, нижнее – передатчика последовательного порта. Однострочное окно с белым фоном отображает, набираемые на клавиатуре данные для передачи. Чтобы осуществить ввод и редактирование в этой строке, необходимо позиционировать курсор в нужное место. Подробное описание возможностей данной программы можно получить при нажатии на виртуальную клавишу “Help”, скачать ее можно с сайта http://bray.velenje.cx/avr/terminal
Вспомогательный компьютер, на котором запущена терминальная программа далее по тексту будем называть терминальным. На основном же компьютере, к которому присоединена плата ADSP-BF533 EZ-KIT Lite, в это время выполняется программа VisualDSP++. На следующем шаге нам понадобится соединительный кабель между терминальным компьютером и ADSP-BF533 EZ-KIT Lite. В комплект поставки он обычно не входит, и его придется изготовить самостоятельно.
Посмотрите, пожалуйста, в Приложении B Schematics Sheet 9 [1] в правой нижней части под надписью UART изображено соединение цепей платы ADSP-BF533 EZ-KIT Lite со стандартным 9-pin разъемом DB9M. Только будьте внимательны: не следует соединять выводы “перекрестно” как в схеме “нуль-модема”! Из-за этого может произойти путаница, и собранный кабель окажется непригодным для работы. К счастью, изготовители нашей “мини-субмарины” и здесь предусмотрели “аварийный выход”. В поставке программного обеспечения имеются заведомо рабочие примеры для работы с COM- портом, с помощью которых можно протестировать собранный кабель. Авторы обнаружили два демонстрационных проекта пригодных для этой цели. Первый реализован на ассемблере Blackfin. Он как раз работает по прерываниям и содержит много ценных подсказок. Но чтобы ими воспользоваться, нужно прежде овладеть ассемблером. Так как предмет наших статей быстрое введение в проблематику, этот путь, очевидно, не для нас. Хотя, если возникнут непреодолимые препятствия, держим этот вариант в уме “про запас”.
Располагается этот проект в директории
<Путь установки>\Blackfin\EZ-KITs\ADSP-BF533\Examples\UART RS-232 HyperTerminal session.
Вы еще помните, как открывать проекты в IDE Visual DSP++? Об этом подробно рассказывалось в части 1 нашей статьи. На всякий случай, напомним - в меню File -> Open -> Project выбираем нужный проект (файл с расширением .dpj)
К счастью для нас, имеется и проект, пригодный для тестирования собранного кабеля, на языке С. Только он, в полном согласии с законами Мерфи, не работает по прерываниям. С другой стороны именно это обстоятельство дает нам возможность внести свою скромную лепту в копилку кода Examples.
Проект STDIO UART можно найти в директории
<Путь установки>\Blackfin\EZ-KITs\ADSP-BF533\Examples\STDIO UART. Первое, что мы обнаруживаем в комментариях к main.c
//Special Connections:
// - EIA-232 Serial Cable (1:1)
// - Terminal Program (i.e. Hyperterminal for Windows)
// - 2400 bits per second (default)
// - 8-bit, no parity, 1 stop bit
// - no handshake
// - echo off
Отсюда понятно, из-за чего не следует применять “нуль-модемный” перекрестный кабель. Видны также необходимые параметры соединения для терминальной программы. Впрочем, вы можете изменять их по своему усмотрению, но только одновременно и в данном проекте, и в вашей терминальной программе. Код этого примера ( в отличие от рассмотренных нами прежде в части 1 статьи), выполнен в хорошем стиле.
Если ваш кабель работоспособен хотя бы на вывод из ADSP-BF533 EZ-KIT Lite, на экране монитора появится:

“Type in something, press <Enter>, and I'll repeat it backwards!”
И программа действительно делает это! Конечно при условии, что вы правильно спаяли кабель и еще не успели вывести из строя свои com-порты. Словом, наступает момент истины, и мы пожелаем вам удачи! Надеемся, что у вас, как и у нас, испытание прошло благополучно."

Поскольку ссылка на сайт автора программы перестала работать выложил эту терминальную программу на свой сайт.
http://avisv.narod.ru/Terminal.exe
или, если у вас заблокирована загрузка exe-шников как в нашей фирме
http://avisv.narod.ru/Terminal.rar

Сообщение отредактировал andrews - Aug 9 2007, 09:28
Go to the top of the page
 
+Quote Post
badik
сообщение Aug 18 2007, 11:51
Сообщение #3


Участник
*

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



Огромное Вам спасибо!
Пообщался успешно с Terminal v1.9b - всё работает, теперь что-то получается с ADSP-BF533.
Вопрос где найти Вашу статью "Погружение с "черными плавниками" часть 2, в ЭЛТЕХ не нашёл.
Вообще у меня как пользователя к Вам (как я понял Вы представляете ЭЛТЕХ) просьба по ADSP-BF533 - эти бы части по всей переферии как можно скорее выпустить. Раз литературы нет. На форуме одни и теже вопросы на 70% как начать .., как работает COM и т.д. Все идут в слепую и через одни и те же грабли, причём из года в год. Курсы так же проблема, с России группу 5 человек собрать проблема. Сейчас уже так изучать - жалко время. Меня очень интересует ADSP-BF533 <-> символьныe ЖКИ.
По теме порт RS232 остался вопрос подключить GPS к UART ADSP-BF533 EZ-Kits.
GPS со всеми прогаммами работает: HypTerminal Windows, Terminal v1.9b, мои на Delphi и т.д. Выдаёт коорднаты раз в секунду. Как подключаю к ADSP-BF533 EZ-Kits с ним какойто ступор. Я уж на осцилографе всё просмотрел не раз. С GPS импульсы не идут ни какие (поэтому нет прерываний). На других прогаммамах 2 нога DB9M есть GPS импульсы, но заметил для Terminal делаю отключение COM - GPS сразу замолкает не выдаёт импульсы. Возможно с EZ-Kits такая ситуация? У EZ-Kits 3 нога DB9M вход, я уж пробывал перебрасывать 2 и 3 - ничего не помогает - GPS молчит.
Для примера с Terminal v1.9b передача на ADSP-BF533 EZ-Kits - делаю останов прогаммы на ADSP-BF533 - Terminal как ни в чем не бывало посылает импульсы/данные с COM порта.
Не знаю что уже думать. GPS для меня крайне важен.
Еще раз спасибо.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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 19 2007, 14:02
|- - badik   По поводу курсов Blackfin-ов: в Питере университет...   Aug 21 2007, 08:15
- - bychkov_vladimir   давайте теперь попробую помочь Вам в Вашей работе ...   Aug 24 2007, 17:39
- - badik   Gps приемник встраиваемый (это просто чип). Мой Gp...   Aug 28 2007, 12:46
- - bychkov_vladimir   Цитата(badik @ Aug 28 2007, 15:46) Gps пр...   Sep 12 2007, 09:41
- - badik   Благодарю за помощь. Всётаки мой UART ADSP-BF533 E...   Sep 14 2007, 09:11


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:54
Рейтинг@Mail.ru


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