Programmation des cartes DSP

                                                 TMS320F2812

 

INTRODUCTION:

Un DSP (Digital System Processing) est un type particulier de microprocesseur. Il se caractérise par le fait qu’il intègre un ensemble de fonctions spéciales. Ces fonctions sont destinées à le rendre particulièrement performant dans le domaine du traitement numérique du signal. La plupart des DSP, comme le TMS320F2812, sont particulièrement destinés à des applications temps réel, dans lesquelles le temps de traitement est primordial. En plus, ils se caractérisent par une architecture optimisée pour le traitement d’une grande quantité de données en parallèle à chaque cycle d’horloge, ce qui rend les applications à base de DSP se caractérisent par une grande souplesse.

L’ezdspTM F2812 est une carte de développement autonome munie d’un DSP de type TMS320F2812.

 

Elle permet d’examiner les performances de ce type de processeurs afin de déterminer s’il répond aux exigences de l’application visée et de vérifier la vitesse du code généré tout en utilisant l’outil de développement et de correction logiciels fourni pour la famille C2000 des DSP. Sur la carte eZdsp TM F2812 deux connecteurs d’expansion sont pourvus, permettant ainsi toute évaluation nécessaire, et un connecteur JTAG pour interfacer avec l’émulateur. La figure suivante représente un schéma synoptique de la carte de développement .

 

domaines d’application:

Processus de développement d’un programme sur DSP:

 

Etapes de programmation de la carte eZdsp TM F2812

les différentes étapes à suivre pour créer un programme et le transférer vers la carte eZdsp TM F2812 afin de l’exécuter par la suite 

  1. Création d’un nouveau projet : Project -> New.

    puis On donne un nom (projetTP dans notre cas) à notre projet et on choisit un emplacement pour le sauvegarder.

  2. Création d’un nouveau fichier dans le projet : File -> New -> Source File.

     

    et on écrit le code et on sauvegarde le fichier avec l’extension .c :

  3. les fichiers ci-dessous doivent être inclus dans le projet avant la compilation en utilisnt la commande . Project → Add files to project
  4. F2812_EzDSP_RAM_lnk.cmd
  5. DSP281x_Headers_nonBIOS.cmd
  6. DSP281x_GlobalVariableDefs.c
  7. Project → Build (or) Rebuild all.
  8. Connection avec la carte DSP TMS320F2812 en utilisant la commane Debug → connect.

Compilation

Cliquer sur Project >> Build All … ou sur l’icône de la barre de menu ou encore Ctrl+F10 pour compiler le projet complet. Erreurs et warnings sont signalés dans la fenêtre Output ainsi que le résultat de la compilation SUCCEEDED ou BUILD FAILED. En double-cliquant sur une erreur ou un warning dans la fenêtre Output, vous serez amener directement à la ligne concernée dans votre programme.   

Exemple: 

réalisation d'un programme qui permet de délivrer un signal rectangulaire de rapport cyclique ½ sur les pattes GPIOA0/PWM1, GPIOA1/PWM2, GPIOA2/PWM3 et GPIOA3/PWM4


#include "DSP281x_Device.h"
void Gpio_select(void); // chien de garde, prédiviseur...
void InitSystem(void); // choix d'interface, direction I/O...
void delay_loop(void); // temporisation
void main(void)
    { unsigned int j;
       InitSystem();
       Gpio_select();
       while(1)
          {
              for(j=0;j<14;j++)
                  {
                        if(j<7) {GpioDataRegs.GPADAT.bit.GPIOA0=1; // GPADAT :        GPIO A data register GpioDataRegs.GPADAT.bit.GPIOA1=1;
                        GpioDataRegs.GPADAT.bit.GPIOA2=1;
                        GpioDataRegs.GPADAT.bit.GPIOA3=1;}
                        else {GpioDataRegs.GPADAT.bit.GPIOA0=0;
                        GpioDataRegs.GPADAT.bit.GPIOA1=0;
                        GpioDataRegs.GPADAT.bit.GPIOA2=0; 
                        GpioDataRegs.GPADAT.bit.GPIOA3=0;}
                        delay_loop();
                    }
            }
   }
void delay_loop(void)
{long i,k,m=0;
for(i=0;i<999;i++)
{for(k=0;k<999;k++)
m=m+1; }
}
void Gpio_select(void)
{
        EALLOW; // EALLOW instruction : pour écrire dans les registres protégés par       EALLOW protection 
        GpioMuxRegs.GPAMUX.all=0x0000; // GPAMUX : mux control register
          GpioMuxRegs.GPADIR.all=0x1111; // GPADIR : direction control register
         EDIS; //    EDIS : pour désactiver l'ecriture dans les registres protégés
}
void InitSystem(void)
{
        EALLOW; // EALLOW instruction : pour écrire dans les registres protégés par EALLOW protection
        SysCtrlRegs.WDCR=0x00E8; //wdcr : watchdog register
        SysCtrlRegs.SCSR=0; // SCSR : system control and status register
        SysCtrlRegs.PLLCR.bit.DIV=5; // PLL : control register
        SysCtrlRegs.HISPCP.all=0x0001; // HISPCP : High-Speed Peripheral Clock Prescaler Register for HSPCLK clock
        SysCtrlRegs.LOSPCP.all=0x0002; // LOSPCP : Low-Speed Peripheral Clock Prescaler Register for LSPCLK clock
        EDIS; // EDIS : pour désactiver l'ecriture dans les registres protégés
}