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

 
 
> BF533, Программирование
astronarh
сообщение Feb 5 2007, 14:08
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 30-01-07
Пользователь №: 24 874



Здравствуйте уважаемые!!!
Вот пришлось программировать на BF533. Много проблем, много вопросов.
Не подскажите ли как на BF запустить SPI, но не в режиме DMA. Может это вообще не возможно.
Подскажите что сможете.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
K A A
сообщение Feb 6 2007, 09:31
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 15-06-06
Пользователь №: 18 069



А в чем проблема-то?
Вот, например, инициализация для работы в режиме slave:

Код
void Init_SPI(void)
{
    #define SPI_SCLK_FREQ 1e6 // Частота SCLK при работе интерфейса в режиме master
    *pSPI_BAUD = (unsigned short)(SCLK/(2*SPI_SCLK_FREQ));
    *pSPI_FLG = UPD_REG;
    *pSPI_CTL = 0
        | RDBR_CORE    // передачи начинаются при чтении SPI_RDBR, прерывание
                                             // генерируется  при заполнении SPI_RDBR
//        | SZ        // когда SPI_TDBR пуст, то передача нуля      
//        | GM        // когда SPI_RDBR заполнен, предыдущие данные перетираются
        | PSSE      // режим выбора ведомого разрешен
        | EMISO     // выход MISO разрешен
//        | SIZE      // длина слова 16 бит
//        | LSBF      // LSB first
        | CPHA      // SCK меняет состояние в начале первого бита данных
//        | CPOL      // активный уровень SCK низкий
//        | MSTR      // режим ведущего
//        | WOM       // выход с открытым стоком
        | SPE    // SPI-порт разрешен
                 ;
    *pSPI_TDBR = SPI_WAITCMD_CODE; // запись в регистр передачи чего-то там
    #undef SPI_SCLK_FREQ
}


Обрати внимание на конструкцию со многими "|" - это для наглядности (установка битов). Там где строка закомментирована, соответствующий бит сброшен. Определения в cdefBF53x.h

Вот инициализация прерываний (сдесь, кроме прерывания от SPI, инициализируются и другие):

Код
void Init_Interrupts(void)
{

    // assign ISRs to interrupt vectors
    // используем назначение прерываний по умолчанию
    register_handler(ik_ivg9, SPORT0_ISR);        // прерывание данных SPORT0_ISR -> IVG9
    register_handler(ik_ivg10, Spi_ISR);      // Spi_ISR -> IVG10
    register_handler(ik_ivg11, Timer0_ISR);  // Timer0 ISR -> IVG 11
    register_handler(ik_ivg12, ADC_ISR);        // прерывание от АЦП (PF5) ADC_ISR -> IVG12

    // enable interrupts
    *pSIC_IMASK = 0
             | DMA1_IRQ        // прерывание приема SPORT0
             | DMA5_IRQ        // прерывание данных от SPI
             | TIMER0_IRQ    // прерывания от таймера 0
             | PFA_IRQ        // прерывание программируемого флага A
            ;
        
}


А вот само прерывание от SPI:

Код
EX_INTERRUPT_HANDLER(Spi_ISR)
{
    

    unsigned char buf = (unsigned char)*pSPI_RDBR; // чтение буфера приема и сброс запроса
                                                                                  // на прерывание
         // .........
}
Go to the top of the page
 
+Quote Post
ntk1
сообщение Feb 6 2007, 15:24
Сообщение #3





Группа: Новичок
Сообщений: 1
Регистрация: 9-10-06
Пользователь №: 21 107



Спасибо!!! a14.gif
Вроде заработало.
Проблема в том что я впервые увидел BF полтора месяца назад. А аппетит начальства огромный. Купили дорогую железку, подавай через месяц готовую прогу.
Проблема в соединении с BF533 AD7276. Надо для начала записаль сигнал с частотй 192кГц на PC. Вроде всё сделано но работает, мягко говоря, некорректно.
Не подскажешь как правильно отображать сигнал в BTC, как его потом записать на PC. Желательно в формате читаемым MATLAB. Да, слышал о программах транслирующих код из MATLAB в BF. Даже есть одна, DSPdeveloper, не работает. Есть какая нибудь инфа?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 13:17
Рейтинг@Mail.ru


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