Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-мар-29 14:03

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-окт-26 16:19 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 57
Откуда: Миландр
Suskov_EA писал(а):

__Пока связку UP/DOWN + DMA не получается зарядить. Настроил в соответствии с описанием. В буфер UP/DOWN данные какие-то поступают. Флаг готовности данных и запрос к DMA выставляются. Контроллер DMA не реагирует. .
у меня есть простенький пример проекта где подготовленные данные передаются по следующей цепочке:
память -> ДМА_канал4 -> передатчик_линк0->приемник_линк0 -> DOWN -> DMA_8 -> память. Если интересно, я могу выслать вам этот пример.
Также можно организовать цепочку : память -> ДМА_канал4 -> DOWN -> DMA_8 -> память.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-окт-27 08:27 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 57
Откуда: Миландр
Suskov_EA писал(а):

__Там еще до UP/DOWN много вопросов по приему данных с АЦП в порт связи.
__И вообще еще не ясно можно-ли подать данные с этого АЦП на UP/DOWN модуль. 1967ВН034+1501ВН015. .

Я перепроверил информацию о приемнике порта связи из спецификации на ВН034.
При приеме данных из 5101ВН015 (режим 14 бит)необходимо:
- RDSIZE==10 т.е. 8-разрядная шина данных.
- RDSEL==1, т.е. данные поступают в DOWN.
- ADCW==00, если выходы АЦП подключены к входам 0…6, а на 7-м входе всегда значение 0.
- ADCW==01, если выходы АЦП подключены к входам 1…7. В этом случае вход 0 отрезается и значение всегда равно 0.
- RCODE==0, т.е. данные принимаются как есть. Если же RCODE==1, то будет проинвертирован 15-й (старший) бит принятых данных.
- DDRM==1 , это означает, что сначала (по восходящему из 0 в 1 фронту) принимаются четные биты, а затем (по падающему из 1 в 0 фронту) нечетные биты.
- REN==1 , т.е. включаем приемник.
Все другие биты в нуле. Проверьте так ли у вас.
При программировании канала ДМА на прием данных из DOWN, нужно корректно указать номер источника запроса в регистре конфигурации
(иначе канал ДМА не будет реагировать). В настройках DOWN нужно указать, что данные из порта связи.
Включать модули лучше в таком порядке: ДМА,DOWN, линк-порт. Выключать в обратном порядке.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-окт-27 14:28 
Не в сети

Зарегистрирован: 2015-окт-13 11:20
Сообщения: 10
Как оказалось DOWN будет работать только если вот так
BY_man писал(а):
Suskov_EA писал(а):

- Выходы АЦП подключены к входам 1…7.

А на отладке сделано вот так:
BY_man писал(а):
Suskov_EA писал(а):

- Выходы АЦП подключены к входам 0…6.

Теперь меня интересует успеет ли DMA отработать если я сделаю вот так:
- с приемника линка0, к которому подключено АЦП, сделаю транзит DMA на передатчик линк0;
- на отладочной плате линк1 и передатчик линка0 выведены на разъемы DVI. Соответственно, изготовлю кабель с перекидкой битов (диф. пар) на один разряд. По кабелю из линка0 вдую в приемник линка1.
- с линка1 в DOWN конвертер с забором данных через DMA.

Частота входных данных с АЦП - 120 МГц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-окт-27 16:08 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 57
Откуда: Миландр
нужен эксперимент :)
вроде все должно быть нормально. Главное повыше поднять частоту процессора
(>240 МГц) и частоту линка для передачи между 0 и 1 (>120 МГц).
С DOWN сэмплы должны быть реже и помех для пересылок канал-канал будет меньше.
В приемнике от АЦП лучше установить бит контроля переполнения.
Если линк не успеет принять - будет флаг ошибки. Тогда частоту нужно поднимать еще выше.

Получается, что если подключен АЦП к разрядам 0..6, то тогда
отсчет будет равен 00хх_хххх_хххх_хххх (если на 7-м бите 0).
Если подключен к 7:1, то отсчет хххх_хххх_хххх_хх00 и из него можно вычесть
константу 1000_0000_0000_0000 (проинвертировав старший бит).
Получим число со знаком, а это то что нужно для DOWN.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-ноя-03 11:54 
Не в сети

Зарегистрирован: 2016-ноя-03 11:02
Сообщения: 3
Добрый день, разбираюсь с процессором 1967ВЦ3Т (BH034) порты ввода-вывода переключаются, прерывания от таймера срабатывают, а вот uart заставить работать не получается. Настраиваю так:
Открыть
Код:
unsigned int temp_reg;
temp_reg = __builtin_sysreg_read(__SQCTLST);
temp_reg |= SQCTL_GIE | SQCTL_SW;
__builtin_sysreg_write(__SQCTLST, temp_reg); // Глобально разрешим прерывания

*(unsigned int *) IV_UART0_LOC = (unsigned int)&uart_irq; // Адрес обработчика
temp_reg = __builtin_sysreg_read(__IMASKL);
temp_reg |= INT_UART0;
__builtin_sysreg_write(__IMASKL, temp_reg); // Пишем в регистр маски
*(unsigned int *) GPA_ALT_SET_LOC = 0x3; // PA0 и PA1 альтернативная функция
*(unsigned int *) UART0_UBRATE_LOC = 0xd; // 115200 бод на 25 МГц
*(unsigned int *) UART0_UCR_SET_LOC = (1 << UCR_RXINT_P); // Включим прерывание по приёму
*(unsigned int *) UART0_UCR_SET_LOC = (1 << UCR_TXINT_P); // Включим прерывание по отправке
*(unsigned int *) UART0_UCR_SET_LOC = (1 << UCR_UARTEN_P); // Включим блок UART0

Закрыть


Простая отправка по uart не срабатывает и вывод PA0 постоянно в состоянии логической единицы:
Открыть
Код:
while(1)
{
    temp_reg = *(unsigned int *) UART0_UFLAG_LOC;
    while(temp_reg & (1 << 5)) temp_reg = *(unsigned int *) UART0_UFLAG_LOC; // Ждём освобождения буфера
    *(unsigned int *) UART0_DR_LOC = 0xaa; // Отправка тестового байта
    pause_clk(1000); // Ждём 40 мкс (1000 периодов клока на 25 МГц)
}
Закрыть


Обработчик прерывания самый примитивный:
Открыть
Код:
#pragma interrupt
static void uart_irq(void)
{
    // Очистка флагов автоматическая из-за RETI
    toggle_led_4();
}
Закрыть


Выводы uartTX и uartRX подключены к микросхеме ftdi ft232rl на соответствующие выводы и по usb данные до uartRX доходят.

Подскажите пожалуйста, в чём может быть проблема?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-ноя-03 12:15 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 57
Откуда: Миландр
Проверьте включена ли подача синхронизации на выбранный вами UART в модуле CMU
(в CFG8 запишите ноль).
Если включена, то проверьте настройки внешних портов на альтернативную функцию.
Предполагаю, что сам UART вы программируете корректно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-ноя-03 12:16 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 910
Откуда: Тула
Foxxy писал(а):
Подскажите пожалуйста, в чём может быть проблема?

В невнимательности или в не знании Си. Как минимум
Код:
*(unsigned int *) UART0_UCR_SET_LOC = (1 << UCR_RXINT_P); // Включим прерывание по приёму
*(unsigned int *) UART0_UCR_SET_LOC |= (1 << UCR_TXINT_P); // Включим прерывание по отправке
*(unsigned int *) UART0_UCR_SET_LOC |= (1 << UCR_UARTEN_P); // Включим блок UART0

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-ноя-03 12:24 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 57
Откуда: Миландр
название _SET_ предполагает что достаточно записи.
Можно и не читать :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-ноя-03 12:49 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 910
Откуда: Тула
BY_man писал(а):
название _SET_ предполагает что достаточно записи.
Можно и не читать :)

Вот-вот. Внимательности мне не хватило :D

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-ноя-03 13:48 
Не в сети

Зарегистрирован: 2016-ноя-03 11:02
Сообщения: 3
BY_man писал(а):
Проверьте включена ли подача синхронизации на выбранный вами UART в модуле CMU
(в CFG8 запишите ноль).
Если включена, то проверьте настройки внешних портов на альтернативную функцию.
Предполагаю, что сам UART вы программируете корректно.



И правда, тактирования на блоке uart0 не было, хотя в спецификации указано, что по сбросу регистр CFG8 имеет нулевое значение (раздел 26.4). Спасибо большое, теперь всё заработало при записи 0 в CFG8.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-ноя-03 13:55 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 57
Откуда: Миландр
я постоянно наступаю на эти же грабли :) При сбросе регистр CFG8 в нуле,
но если посмотреть код стартового ПЗУ, то там кто-то бережно выключил свет
везде где он не нужен :)
У вас при 25 МГц получается погрешность в стандартной скорости UART.
Лучше добавить при передаче доп стоповый бит. Хорошо бы такой же бит был и при приеме.
Тогда будет более надежная непрерывная прием-передача.
Ещё обработчик прерывания мне не очень понятен :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВЦ3Т
СообщениеДобавлено: 2016-ноя-04 10:21 
Не в сети

Зарегистрирован: 2016-ноя-03 11:02
Сообщения: 3
Я буду внимательней читать даташит :D Насчёт клока и обработчика прерывания - это, конечно, тестовая версия, чтобы функциональность блоков проверить = ) Спасибо вам!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВН034
СообщениеДобавлено: 2016-дек-01 17:35 
Не в сети

Зарегистрирован: 2016-ноя-21 16:07
Сообщения: 3
Всем здравствуйте!
Кто-нибудь пробовал запись прошивки во внешнюю FLASH-память по SPI на демонстрационной плате 1967ВЦ3Т?
Из тех.поддержки прислали проект "jtag_flash_programmer", но при выборе *.dxe файла в VisualDSP вижу такую картинку. Перед ковырянием проекта драйвера решил спросить знатоков. Заранее спасибо.


Вложения:
Снимок.JPG
Снимок.JPG [ 53.46 КБ | Просмотров: 1174 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВН034
СообщениеДобавлено: 2016-дек-02 15:41 
Не в сети

Зарегистрирован: 2014-авг-15 11:04
Сообщения: 57
Откуда: Миландр
AV, не могли бы Вы поделиться инфой , что это за прога?
Насколько я понимаю, вы подготовили проект в VisualDSP и хотите теперь исполняемый файл
этого проекта прошить в SPI-флэш, чтобы потом стартовать с этой флэшки.
Для этого вы используете специальную утилиту (которая никак не связана с VisualDSP) которая коннектится с платой,
берет ваш файл и прошивает. Правильно ли я понимаю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1967ВН034
СообщениеДобавлено: 2016-дек-06 11:13 
Не в сети

Зарегистрирован: 2016-ноя-21 16:07
Сообщения: 3
BY_man, да, хочу *.ldr файл записать во flash по SPI. Раньше использовал параллельную флешку с ADSP-TS201, AnalogDevices предоставляли проект драйвера флешки. В VisualDSP есть утилитка "FlashProgrammer", которая использует *.dxe файл драйвера, чтобы записать во флеш *.ldr файл проекта. Вот из тех-поддержки прислали архив проектов работы с отладочной платой, в котором есть проект под названием "jtag_flash_programmer". Является ли этот проект средством программирования последовательной флеш-памяти для загрузки процессора по сбросу из нее?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 65 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB