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

 
 
 
Reply to this topicStart new topic
> Помогите настроить SPORT
alexeika007
сообщение Nov 15 2011, 19:42
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 15-11-11
Из: Воронеж
Пользователь №: 68 326



Ситуация такая: уже 2 дня бьюсь над тем, что бы организовать прием данных с ацп и дальнейшую обработку их процессором BlackFin537. Вроде прописал все настройки, написал прерывания, проверил кучу раз. С осциллографом пролазил CS и SCLK, все правильно приходит, а данных нет.... А если быть точнее, то процессор находится в прерывании постоянно и не отвечает на остальные команды.... состояние регистра SPORT1_STAT= 0045.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 15 2011, 19:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(alexeika007 @ Nov 15 2011, 23:42) *
данных нет.... состояние регистра SPORT1_STAT= 0045.

Что-то не сходится: как это их нет, если в статусе написано, что и FIFO заполнено и переполнение уже случилось? Чем вы их вычитываете - ядром или через DMA?
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 15 2011, 22:23
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(alexeika007 @ Nov 16 2011, 02:42) *
А если быть точнее, то процессор находится в прерывании постоянно и не отвечает на остальные команды....

так может флаг прерывания сбрасывать надо? ну или там все данные вычитать чтобы сам сбросился
Go to the top of the page
 
+Quote Post
alexeika007
сообщение Nov 16 2011, 15:52
Сообщение #4





Группа: Новичок
Сообщений: 9
Регистрация: 15-11-11
Из: Воронеж
Пользователь №: 68 326



Цитата(aaarrr @ Nov 15 2011, 22:51) *
Что-то не сходится: как это их нет, если в статусе написано, что и FIFO заполнено и переполнение уже случилось? Чем вы их вычитываете - ядром или через DMA?

Считаю я их ядром. Да, я просто неправильно выразился, а если быть точным, то ошибся.

так может флаг прерывания сбрасывать надо? ну или там все данные вычитать чтобы сам сбросился

Цитата
так может флаг прерывания сбрасывать надо? ну или там все данные вычитать чтобы сам сбросился


Да, сегодня сделал немного по-другому. Просто после того как данные пришли, я обнулил регистр статуса.

Теперь другая проблема данные какие-то странные))) Не могли бы вы подсказать как еще можно сбросить флаг прерывания? И еще несколько просьб, никто не может дать ссылку на литературу о том как порт настроить. Ну т.е. мы задаем параметры СПРОТа и там мы указываем RCLKDIV и RFSDIV, как выбираются их параметры?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 16 2011, 16:08
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(alexeika007 @ Nov 16 2011, 19:52) *
Считаю я их ядром. Да, я просто неправильно выразился, а если быть точным, то ошибся.

Тогда прерывание должно сниматься после вычитывания FIFO:
Цитата
The SPORT RX interrupt is generated when RSPEN = 1 and the RX FIFO
has received words in it. When the core processor has read all the words in
the FIFO, the RX interrupt is cleared.


Цитата(alexeika007 @ Nov 16 2011, 19:52) *
Ну т.е. мы задаем параметры СПРОТа и там мы указываем RCLKDIV и RFSDIV, как выбираются их параметры?

Исходя из нужных частот SCLK и RFS. Все же описано HRM (Clock and Frame Sync Frequencies).
Go to the top of the page
 
+Quote Post
alexeika007
сообщение Nov 17 2011, 17:47
Сообщение #6





Группа: Новичок
Сообщений: 9
Регистрация: 15-11-11
Из: Воронеж
Пользователь №: 68 326



Цитата(aaarrr @ Nov 16 2011, 19:08) *
Тогда прерывание должно сниматься после вычитывания FIFO:



Исходя из нужных частот SCLK и RFS. Все же описано HRM (Clock and Frame Sync Frequencies).


Как это реализовать. В книжке я прочитал) Просто я только 2-ю неделю занимаюсь программированием(( Я вообще учился и работал раньше по другой специальности(
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 17 2011, 20:02
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Реализовать что именно? Опишите свою задачу, чтобы не говорить об абстрактных вещах.
Go to the top of the page
 
+Quote Post
alexeika007
сообщение Nov 18 2011, 13:41
Сообщение #8





Группа: Новичок
Сообщений: 9
Регистрация: 15-11-11
Из: Воронеж
Пользователь №: 68 326



Задача считать данные с 14-ти разрядного АЦП (AD 7357) от Аналог Девайс через Sport1? вот текст

// настройка SPORT1
*pSPORT1_RCLKDIV= 99;
ssync();
*pSPORT1_RFSDIV = 1000;
ssync();
*pSPORT1_RCR2= 0x0d;
ssync();
*pSPORT1_RCR1= RCKFE | RFSR | IRCLK | IRFS | LRFS | RSPEN;


Вот прерывание:
EX_INTERRUPT_HANDLER(SPORT1_RX_ISR)
{
if (*pSPORT1_STAT & 1)
{
rxf = *pSPORT1_RX;
rxt = *pSPORT1_RX;
}

В данном случае происходит переполнение FiFO, сейчас вариант немного другой:

// настройка SPORT1
*pSPORT1_RCLKDIV= 14;
ssync();
*pSPORT1_RFSDIV =6;
ssync();
*pSPORT1_RCR2= 0x10 | RXSE;
ssync();
*pSPORT1_RCR1= RCKFE | RFSR | IRCLK | IRFS | RSPEN;

Правда точно щас не скажу значение *pSPORT1_RFSDIV, потому что подбирал.... А проект на работе(( И в прерывание добавил цикл, проверки ROVF|RUVF, если они есть, заново прописать настройки порта... Работает, но мне кажется, что что-то здесь не так...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 18 2011, 13:45
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(alexeika007 @ Nov 18 2011, 17:41) *
Вот прерывание:
EX_INTERRUPT_HANDLER(SPORT1_RX_ISR)
{
if (*pSPORT1_STAT & 1)

Здесь лучше не if, а while.

Цитата(alexeika007 @ Nov 18 2011, 17:41) *
Работает, но мне кажется, что что-то здесь не так...

В прерывании выгребать данные как-то не комильфо. Используйте DMA.
Go to the top of the page
 
+Quote Post
alexeika007
сообщение Nov 18 2011, 14:22
Сообщение #10





Группа: Новичок
Сообщений: 9
Регистрация: 15-11-11
Из: Воронеж
Пользователь №: 68 326



Цитата(aaarrr @ Nov 18 2011, 16:45) *
В прерывании выгребать данные как-то не комильфо. Используйте DMA.


Неа, условие такое считывать без DMA
Go to the top of the page
 
+Quote Post
alexeika007
сообщение Dec 2 2011, 13:28
Сообщение #11





Группа: Новичок
Сообщений: 9
Регистрация: 15-11-11
Из: Воронеж
Пользователь №: 68 326



Опять вернулся к SPORT, объясните, пожалуйста, как выбираются
*pSPORT1_RCLKDIV= 14;
*pSPORT1_RFSDIV =6;
Только не надо приводить ссылок из книг. Формула у меня есть, но что туда подставлять?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:35
Рейтинг@Mail.ru


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