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

 
 
 
Reply to this topicStart new topic
> Помогите со SPORT портом у blackfina пожалста, пытаюсь с ним без прерываний работать а он молчит
Soyma
сообщение Feb 28 2007, 16:46
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 21-01-05
Из: Россия Рязань
Пользователь №: 2 100



Вот
Код
*pSPORT0_TCR1 = 0x0A02; // внутренняя CLK и FCLK не зависящая от данных
*pSPORT0_TCR2 = 0x0007; // восьмиразрядные слова
*pSPORT0_TCLKDIV = 0x0080;
*pSPORT0_TFSDIV = 0x0008;
*pSPORT0_TCR1 |= TSPEN; // Enable SPORT0 Transmitter
    
for(i = 0; i <= 327680-1; i++)  {
    while(!(*pSPORT0_STAT & TXHRE));
    *pSPORT0_TX = 0x55;
}


Смотрю осцилографом. CLK спорта выходят, кадровые импульсы тоже есть, а вот данных нет.
Go to the top of the page
 
+Quote Post
Soyma
сообщение Mar 1 2007, 10:18
Сообщение #2





Группа: Новичок
Сообщений: 9
Регистрация: 21-01-05
Из: Россия Рязань
Пользователь №: 2 100



Мож подкините пример работы со SPORTом без использования DMA (по прерываниям)?
Go to the top of the page
 
+Quote Post
fontp
сообщение Mar 1 2007, 12:27
Сообщение #3


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(Soyma @ Mar 1 2007, 10:18) *
Мож подкините пример работы со SPORTом без использования DMA (по прерываниям)?


Чтобы разрешить прерывания, нужно инициализировать (до пуска SPORT) SIC, handler на IVG9 и IMASK

*pSIC_IAR0 = 0xf2ffffff;

// assign ISRs to interrupt vectors
// Sport0 TX ISR(as well as RX) -> IVG 9
register_handler(ik_ivg9, Sport0_TX_ISR);

// enable Sport0 TX interrupt
*pSIC_IMASK = 0x00000040;

ну и понятно, написать Sport0_TX_ISR (там записать данные в регистр, этим прерывания сбрасывается, также оно сбрасывается чтением регистра статуса)

Вот мне попался пример использования SPORT в качестве UART, без dMA smile.gif
http://www.blackfin.org/phorum/read.php?10,5971

Там только RX а не ТХ но принцип тот же. Вообще на blackfin.org много примеров, хороших и разных
Go to the top of the page
 
+Quote Post
Soyma
сообщение Mar 2 2007, 16:55
Сообщение #4





Группа: Новичок
Сообщений: 9
Регистрация: 21-01-05
Из: Россия Рязань
Пользователь №: 2 100



Всё, разобрался!!!
Вот рабочий пример
В SPORT выдаётся цифирка, у спорта передатчик завёл на приёмник и дальше вываливаю цифирку в UART, ...
Код
int m; int i; int k; int l;

*pSPORT0_RCR1 = 0x4000;
*pSPORT0_RCR2 = 0x0006;
//*pSPORT0_RCLKDIV = 0x0080;
//*pSPORT0_RFSDIV = 0x0007;
//*pSPORT0_RX16 = 0x55; // Use 16-bit Access Macro to Write Register
  
*pSPORT0_TCR1 = 0x4E02;
*pSPORT0_TCR2 = 0x0006;
*pSPORT0_TCLKDIV = 0x0080;
*pSPORT0_TFSDIV = 0x0006;
//*pSPORT0_TX16 = 0x00; // Use 16-bit Access Macro to Write Register
*pSPORT0_TCR1 |= TSPEN; // Enable SPORT0 Transmitter
*pSPORT0_RCR1 |= RSPEN; // Enable SPORT0 Transmitter

for(m = 0; m <= 327680; m++)  {
for(m = 0; m <= VEC_SIZE-1; m++)  {       
    while(!(*pSPORT0_STAT & TXHRE));
    *pSPORT0_TX16 = 0x72;
    while(!(*pSPORT0_STAT & RXNE));
    spectrum[m] = *pSPORT0_RX16;
}
for(m = 0; m <= VEC_SIZE-1; m++)  {
    while (!(*pUART_LSR & TEMT)) { };
    while (!(*pUART_LSR & THRE)) { };
    *pUART_THR = spectrum[m];
}
}
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 12:03
Рейтинг@Mail.ru


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