Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Эмуляция UARTа через SPORT на блекфине
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Lmx2315
Здравствуйте уважаемые!
Есть-ли у кого пример кода на СИ , как сделать UART - TX из SPORTа на BLACKFIN533?
Нужно для вывода отладочной информации, всё остальное на нём уже занято.
Спасибо!
psL
Цитата(Lmx2315 @ Dec 5 2015, 16:27) *
Здравствуйте уважаемые!
Есть-ли у кого пример кода на СИ , как сделать UART - TX из SPORTа на BLACKFIN533?
Нужно для вывода отладочной информации, всё остальное на нём уже занято.
Спасибо!


https://ez.analog.com/message/13824#13824

странно, что не в форуме по dsp http://electronix.ru/forum/index.php?showforum=3.
это чтобы никто не заметил?
Lmx2315
..спасибо за участие!
з.ы.
в приложении вывод по каналу SPORT1 через перывания на UART c 256000 б/с .
Lmx2315
..код выше не работает.
----------------------------------------
код ниже - работает по прерывания:
SPORT_TX - UART
для вывода отладки.

CODE
//----------------------------------------
// SPORT Transmitter buffer
#define TX_BUFFER_SIZE1 512
volatile u8 tx_buffer1[TX_BUFFER_SIZE1];
volatile unsigned int tx_wr_index1=0,
tx_rd_index1=0,tx_counter1=0;

//-------------------------------------------------


void Init_Interrupts(void)
{
// assign core IDs to interrupts
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xfff2ffff;//SPORT1 TX->IVG4
*pSIC_IAR2 = 0xffffffff;
ssync();
// assign ISRs to interrupt vectors
register_handler( ik_ivg9, SPORT1_TX_ISR); //
ssync();
*pSIC_IMASK = (DMA4_IRQ);// DMA4_IRQ - SPORT1_TX_ISR
}

//------------------------------------------------------------

void init_SPORT1 (unsigned int SPORT1_SCLK) //инициализация канала SPORT0

{

short divider;
unsigned int SCLK_VALUE=100000000;//клок системной шины

*pSPORT1_TCR1 = TFSR | ITFS | ITCLK |TLSBIT; /* TSPEN запишем позже! */
*pSPORT1_TCR2 = 10; /* длина передачи минус 1 */

/* Настраиваем регистр приёма, фаза 0 полярность 0
*/

*pSPORT1_RCR1 = RCKFE | RFSR; /* RSPEN запишем позже! */
*pSPORT1_RCR2 = 10; /* 32 - 1; Длина приемника 32 бита - у нас такой АЦП */


/* Расчитаем делитель и запишем его в регистры тактовой частоты приема и передачи */
divider = SCLK_VALUE / (SPORT1_SCLK * 2 - 1);

/* Делитель в оба регистра */
*pSPORT1_TCLKDIV = divider;
*pSPORT1_RCLKDIV = divider;
*pSPORT1_TFSDIV = 0;

}
//------------------------------------------------------------


EX_INTERRUPT_HANDLER(SPORT1_TX_ISR)
{
u16 a=0;
u16 data;

*pDMA4_IRQ_STATUS = DMA_DONE;

FLAG_SPORT1_TX=1;

if (tx_counter1)
{
--tx_counter1;

data = tx_buffer1[tx_rd_index1++];
a = data<<2;
data = (a|(0x01<<10))|0x1;
*pSPORT1_TX16 = data;

if (tx_rd_index1 == TX_BUFFER_SIZE1) tx_rd_index1=0;
}
else
{
*pSIC_IMASK &= ~0x01000;
}

}

//---------------------------------------------------


void SPORT1_enable(void)
{
*pSIC_IMASK |= 0x01000;
ssync();
*pSPORT1_TCR1 |= TSPEN; // Enable SPORT0 Transmitter
ssync();
*pSPORT1_RCR1 |= RSPEN; // Enable SPORT0 Transmitter
ssync();
}

void SPORT1_disable(void)
{
ssync();
*pSPORT1_TCR1 &= ~(TSPEN); // Enable SPORT0 Transmitter
ssync();
*pSPORT1_RCR1 &= ~(RSPEN); // Enable SPORT0 Transmitter
ssync();
}


u32 SPORT1_write (u16 data)
{
volatile u32 word;
u16 a=0;
int temp_IMASK; //Anomali err

a = data<<2;
data = (a|(0x01<<10))|0x1;
SPORT1_enable();

//while(!(*pSPORT1_STAT & TXHRE));

*pSPORT1_TX16 = data;

return word;
}



void put_char1(char c)
{
// while (tx_counter1 == TX_BUFFER_SIZE1);
*pSIC_IMASK &= ~0x01000;//запрещаем прерывание на передачу
ssync();

if (tx_counter1||((*pSPORT1_STAT & TXF))) //если буфер не пустой или FIFO забит
{
tx_buffer1[tx_wr_index1++]=c;
if (tx_wr_index1 == TX_BUFFER_SIZE1) tx_wr_index1=0;
++tx_counter1;
ssync();
*pSIC_IMASK |= 0x01000;//разрешаем прерывание на передачу
ssync();
}
else
{
SPORT1_write ©;
}


}

void put_str1(char *s)
{
while (*s != 0)
put_char1(*s++);
}



int main(void)
{

init_SPORT1 (256000)//инициализация канала SPORT1 256000 бит/с

Init_Interrupts();

put_str1("Hellow world!\r\n");

}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.