Микросхема - Форум инженеров

Проекты, идеи, схемы и разработки
Текущее время: Вс дек 16, 2018 3:24 am

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Особености работы с DSP TMS320F28335
СообщениеДобавлено: Вс фев 17, 2013 2:56 pm 
Не в сети
Site Admin
Аватар пользователя

Зарегистрирован: Вс апр 08, 2007 11:00 pm
Сообщений: 6360
Откуда: KHARKOV or KIEV
"Как выяснилось, петь и сочинять не сложно. Достаточно начать - закончить тоже можно.
Я за короткий срок так много сочинил, Что много из того, что сочинил, уже забыл.
Но это не беда, зато я творчески окреп. И вот пою еще одну песню в стиле р-р-р-эп."
К.Кинчев - "Алиса"


Имея сейчас возможность пощупать в реале DSP TMS320F28335, параллельно решил делиться своим мнением об этом чипе, или может даже правильно сказать о всём семействе C2000, посколько они почти все одинаковы.
По мере появления новых мыслей и воспоминаний буду добавлять их.

Краткий и повествовательный обзор мнения от опыта работы с перефериями:
- GPIO
- ADC
- ePWM
- SPI
- SCI
- DMA
- CAN
- IRQ

GPIO - Для работы с GPIO в режиме вывода сигнала используются способы: 3 быстрых и 1 медленный:
- быстрый - операция выдачи сигнала наружу в 1 такт процессора при установке состояний в регистр GPxTOGGLE | GPxCLEAR | GPxSET.
- медленный - операция выдачи сигнала наружу в 3 такта процессора (чтение+модификация+запись) при установке состояний в регистр GPxDAT
Скорость наростания фронта очень крутая, так что, чтоб не было лишнего ВЧ звона лучше сразу возле вывода поставить согласовывающий резистор, около 51Ом.

ADC - Очень крутой ADC, умеющий аппаратно стартовать от сигнала ePWM(а также GPIO, IRQ), причем АЦП тоже конфигурируемый, какой фронт будет задавать старт для начала измерения и т.д. За интервал времени в 80нс измеряет сразу по 16 каналам, и выдает 12 битные значения с очень высокой прицезионностью, я увидел погрешность в 2 разряда(вероятно сигнал был с пульсацияим). Этот АЦП может мерять сигнал с частотой до 12.5МГц.
Выяснил что кроме документированного регистра с измерянными данными есть еще слабо документированный регистр, называется Mirror, в документации про него всего пара строк мелким текстом, однако работать с ним намного быстрее.
(2) The ADC result registers are dual mapped. Locations in Peripheral Frame 2 (0x7108–0x7117) are 2 wait-states and left justified. Locations in Peripheral frame 0 space (0x0B00–0x0B0F) are 1 wait-state for CPU accesses and 0 wait state for DMA accesses and right justified. During high speed/continuous conversion use of the ADC, use the 0 wait-state locations for fast transfer of ADC results to user memory.
При чтении измерянных значений с 16 регистров AdcRegs тратится времени 778нс, а с AdcMirror 556нс, что на почти что 40% быстрее. По какойто странной причине Texas Instruments не приводит в своих примерах работу с этим регистром. Но порывшись в инете нашел что для быстрых измерений используют всегда миррор.
Есть встроенный в чип калибратор, который нужно программно вызывать.
Также есть приведение, указано в еррате на кристал, в симултэниоус режиме выдает не правильные значения первых нескольких измерений, воркэраунд описан там же, в эррате.

ePWM (ШИМ) - Работать может в 3х режимах: 1) UP, 2) DOWN, 3) UPDOWN и также между каналами можно устанавлить мертвую зону(dead-band), полезно при управлении транзисторами, чтобы на затворах исключить колизии относительно 2х каналов A и B. Ну и всякие навороченые фенички и свистоперделки типа детекта трипзоны и т.д. Очень расширенный по свои возможностям ШИМ.
При тактовой 150МГц(а тактируется без всяких делителей, от тактовой проца), я выжал с него все что мог в режиме UPDOWN на частоте канала-A 50МГц, и на канале-B 12.5МГц полностью синхронных. Цель была эксперементально узнать и получить на одном ШИМ 2 сигнала, основной и в 4 раза меньше.

SPI - Пробовал завести для теста loopback, завелся c с пол-пинка. В принципе на этом все, дальше не тестировал, т.к. небыло необходимости.

SCI (Serial Controller Interface) - Пробовал завести для теста loopback, завелся почти что c с пол-пинка только режим передачи. Паралельно гугля, обнаружил что эта проблема снаскоку не решенная не только у меня... Также, если верить даташиту то бит LOOPBACKENA в SCICCR не отображён на блок схеме внутреннего устройства этой переферии. Но что еще странно, для переферии SPI тоже не отображён.
UPD-1 - оказывается, SCI заводится нормально, nо у меня в коде была помеха, так что "страшилки" отсутствуют. Но одна страшилка всеж таки есть, а точнее приведение, о нем сказано в ерате на кристалл, а именно - на больших скоростях не формируется стоповый бит, потому что на 4 такта запаздывает на кристале сигнал...

DMA - не работает в режиме ДМА с перефериями SPI и SCI и это ясно указано в даташите. Причина почему Texas Instruments так сделал, лично мне не ясна, по идее наоборот это обязано быть. но...

CAN - Тоже навороченный, и да, то же присутствует в еррате на кристал, так что готовьтесь ловить приведения. Успел пощупать на практике, он ну и чекнутый это протокол однако... Главное что в этом интерфейсе из недостатков, это то, что его нельзя просто так взть и замкнул вход с выходом и получить loopback. Но, у микроконтроллера есть аналог режима лупбэка, называется Self Test Mode, эт такой там бит в регистре, называется STM. Для того чтобы работать с CAN интерфейсом нужно обязательно подключить прием и передачу на микросхему can-driver, иначе на выводе пина TX даже байт не выйдет, так что осциллографом ничего не увидите. Я полдня промучался, пока это не понял, и главное об этом ни где не сказано, во всяком случае я не нашёл. Как только драйвер припаялся, вам удастся отправлять данные. Но не радуйтесь, не спешите, так как для приема вам нужно по линии CAN отправить ответный байт, или используя сан-аналайзер с возможностью эхо. Приколы с скоростью тут полностью присутствую, так что следите за скоростью внимательно. Скорость может быть от 50кбит/с, до 1Мбит/с. Муть полная, не советую я вам закладывать этот интерфейс, я для себя это решил точно, назачто, хотя он и не плохой с точки зрения задумки.

IRQ - Начал читать про прерывания, очень огорчился по факту. В документации расписано как все круто и красиво, но после глубокого ознакомленя становится очевидно что красивые решение с использованием прерываний не получится, потому что нет явной преоритезации прерываний. Как таковые приоритеты есть, но это не те преоритеты которые позволяют в прерывании отвлечься на ещё более высокоприоритеныое событие. Суть в том что при возникновении прерывания, запускается тот обработчик который с высовим приоритетом. и если в процесссе его обработки возникают ещё несколько прерываний. то они становятся в очередь, и по завершению текущено выполнится следом тот у которого высшый приоритет. Очень напоминает реализацию прерываний у microchip`овских микроконтроллеров. В общем после глубокого прочтения про прерывания стало както угрюмо... не лично я не доволен такой реализацие прерываний и как это все помпезно преподнесено, не смотря на такую деревянную угрюмость в реализации... Не стоит забывать что это DSP, видимо что бы не было неппредусмотреностей они и отказались делать разширенный механизм прерываний. Так что это просто обратная сторона медали, имейте это ввиду.

_________________
* Ceci tuera cela.
* Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда." (C) Linus Torvalds.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB