Перейти к содержанию
    

alexeika007

Участник
  • Постов

    9
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные alexeika007


  1. а разве нужно указывать размер int_rx_data = *pSPORT1_RX16?

    Просто получается ситуация что в FIFO данные приходят, а по команде rsx = *pSort1_RX я не забираю их, а новые приходят и происходит переполнение. Может кто-нить сталкивался или у кого-нить есть мысли какие-нить, просто я уже перепробовал все, даже абсурдные мысли...

  2. Доброго времени суток. В своей программе принимаю данные от АЦП по двум каналам через спорт1. АЦП 14 разрядов, вроде настроил порт, посмотрел осциллограммы, меня все устраивает (по осциллограмме посчитал). Но данные принимаю какие-то кривые, и принимаю их 1 раз, а потом буфер переполняется(

    Пример команды на сичтывание:

    rsx = *pSort1_RX;

    rxf = *pSort1_RX;

    Правильный ли формат команды на считывание данных? И еще а регистре статуса сам блэкфин 537 скидывает 1-й бит (о наличие данных в фифо) или же его надо самому в ручную скинуть?

  3. Если не секрет, сам мучаюсь уже 2-й день. У меня спорт 1 работает тоже первые 8 на ввол и вывод, а остальные 8 (задействовано 4 из них) эмитируют SPI интерфейс для подключения 14-ти разрядного стерео АЦП. Не пойму - получаю какую-то фигню. Если не сложно, пришли код настройки.

  4. Задача считать данные с 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, если они есть, заново прописать настройки порта... Работает, но мне кажется, что что-то здесь не так...

     

  5. Тогда прерывание должно сниматься после вычитывания FIFO:

     

     

     

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

     

    Как это реализовать. В книжке я прочитал) Просто я только 2-ю неделю занимаюсь программированием(( Я вообще учился и работал раньше по другой специальности(

  6. Что-то не сходится: как это их нет, если в статусе написано, что и FIFO заполнено и переполнение уже случилось? Чем вы их вычитываете - ядром или через DMA?

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

     

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

     

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

     

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

     

    Теперь другая проблема данные какие-то странные))) Не могли бы вы подсказать как еще можно сбросить флаг прерывания? И еще несколько просьб, никто не может дать ссылку на литературу о том как порт настроить. Ну т.е. мы задаем параметры СПРОТа и там мы указываем RCLKDIV и RFSDIV, как выбираются их параметры?

  7. Ситуация такая: уже 2 дня бьюсь над тем, что бы организовать прием данных с ацп и дальнейшую обработку их процессором BlackFin537. Вроде прописал все настройки, написал прерывания, проверил кучу раз. С осциллографом пролазил CS и SCLK, все правильно приходит, а данных нет.... А если быть точнее, то процессор находится в прерывании постоянно и не отвечает на остальные команды.... состояние регистра SPORT1_STAT= 0045.

×
×
  • Создать...