Upload
flo
View
59
Download
2
Embed Size (px)
DESCRIPTION
ЦСП TMS320C67x Работа с периферией. ЦСП TMS320C67x: работа с периферией. ЦСП TMS320C67x: работа с периферией. - PowerPoint PPT Presentation
Citation preview
ЦСП TMS320C67xРабота с периферией
ЦСП TMS320C67x: работа с периферией
Периферия представляет собой специализированные аппаратные ресурсы, расположенные на кристалле ЦСП и предназначенные для организации взаимодействия микросхемы ЦСП с внешними устройствами.
Состав периферийных устройств часто определяет его выбор для применения в тех или иных системах.
ЦСП TMS320C67x: работа с периферией
Сигнальный процессор TMS320C6701 содержит на кристалле следующие основные узлы периферии:
интерфейс внешней памяти (EMIF)
контроллер начальной загрузки по каналам прямого доступа в память
хост-порт (HPI)
многоканальные буферизированные последовательные порты (McBSP)
таймеры
схему фазовой автоподстройки частоты для тактового генератора (PLL)
интерфейс JTAG-эмулятора
ЦСП TMS320C67x: работа с периферией
Рассмотрим работу с периферией на примере организации следующей системы:
ЦСП TMS320C67x: работа с периферией
Требуются:
конфигурация кодека
конфигурация McBSP
конфигурация прерываний
ЦСП TMS320C67x: работа с периферией
Конфигурация кодека
выполняется с помощью специальной типовой программы
ЦСП TMS320C67x: работа с периферией
Конфигурация McBSP
ЦСП TMS320C67x: работа с периферией
Конфигурация прерываний подразумевает:
глобальное разрешение прерываний,
разрешение требуемого прерывания (от McBSP),
создание таблицы векторов прерываний,
создание функции обработки прерывания.
ЦСП TMS320C67x: работа с периферией
//sine_intr.c Sine generation using sin() function
#include <math.h>#include "dsk6713_aic23.h" // codec support
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate
#define DSK6713_AIC23_INPUT_MIC 0x0015#define DSK6713_AIC23_INPUT_LINE 0x0011Uint16 inputsource=DSK6713_AIC23_INPUT_MIC; // select input
#define SAMPLING_FREQ 8000#define PI 3.14159265358979
float frequency = 1000.0;float amplitude = 10000.0;float theta_increment;float theta = 0.0;
ЦСП TMS320C67x: работа с периферией
interrupt void c_int11(){ theta_increment = 2*PI*frequency/SAMPLING_FREQ; theta += theta_increment; if (theta > 2*PI) theta -= 2*PI; output_left_sample((short)(amplitude*sin(theta))); return;}
void main(){ comm_intr(); while(1);}
ЦСП TMS320C67x: работа с периферией
void c6713_dsk_init() //dsp-peripheral initialization{DSK6713_init(); //call BSL to init DSK-EMIF,PLL)
hAIC23_handle=DSK6713_AIC23_openCodec(0,&config);//handle(pointer) to codecDSK6713_AIC23_setFreq(hAIC23_handle, fs); //set sample rateDSK6713_AIC23_rset(hAIC23_handle, 0x0004, inputsource);// choose mic or line inMCBSP_config(DSK6713_AIC23_DATAHANDLE,&AIC23CfgData);//interface 32 bits toAIC23
MCBSP_start(DSK6713_AIC23_DATAHANDLE, MCBSP_XMIT_START | MCBSP_RCV_START | MCBSP_SRGR_START | MCBSP_SRGR_FRAMESYNC, 220);//start data channel again}
void output_left_sample(short out_data)//for output from left chan{ AIC_data.uint=0; //clear data structure AIC_data.channel[LEFT]=out_data; //data from Left channel –
>data structure
if (poll) while(!MCBSP_xrdy(DSK6713_AIC23_DATAHANDLE));//if ready to transmit
MCBSP_write(DSK6713_AIC23_DATAHANDLE,AIC_data.uint);//output left channel}
ЦСП TMS320C67x: работа с периферией
if (poll) while(!MCBSP_xrdy(DSK6713_AIC23_DATAHANDLE));//if ready to transmit
MCBSP_write(DSK6713_AIC23_DATAHANDLE,AIC_data.uint);//output left channel}
ЦСП TMS320C67x: работа с периферией