Showing posts with label Mikro C For ARM. Show all posts
Showing posts with label Mikro C For ARM. Show all posts

Monday, January 18, 2016

Play Audio Sound Using STM32

Bonjour, Aujourd'hui comme il est indiqu� au titre de cet article je vais essayer de produire une strophe musicale en utilisant la carte STM 32 F4 et un buzzer ou un speaker.





Commen�ons par d�finir le son :
Le son, c�est avant tout une vibration. Il faut que quelque chose bouge pour qu�un son soit produit. Par exemple, tu peux sonner une cloche, taper des mains ou pincer les cordes d�une guitare pour produire des vibrations qui vont g�n�rer des ondes sonores. Les vibrations voyagent d�un endroit � l�autre dans l�air sous forme d�ondes sonores.

Si les vibrations atteignent ton oreille, celle-ci va envoyer un signal � ton cerveau et tu vas entendre le son.
R�sultat de recherche d'images pour "notes musique png"




Mais si vous adore le physique vous pouvez lire ce que j'ai trouvez dans un article tr�s int�ressent sur le son au dessous sinon vous passer directement au test avec l'STM32




   
un son est une vibration de l'air. On peut en faire une repr�sentation graphique avec en abscisse le temps et en ordonn�e l'amplitude de la vibration : une onde plus grande aura un volume plus �lev�, une courbe "tass�e" en largeur repr�sente un son aigu. Car c'est la fr�quence de la vibration qui d�terminera la hauteur de la tonalit�. L'unit� de mesure des fr�quences est le hertz : 1 hertz correspond � une oscillation par seconde. Comme on le verra, nombre de param�tres concernant le son se mesurent en hertz, mais ne s'appliquent pas aux m�mes choses. Le la du diapason (ou de la tonalit� du t�l�phone) a une fr�quence de 440 Hz (la fr�quence des notes de musique suit une augmentation logarithmique, le doublement d'une fr�quence passe la note � l'octave sup�rieure). Bien que l'acuit� auditive varie d'une personne � l'autre, il est g�n�ralement admis que l'oreille humaine est capable de percevoir des fr�quences comprises entre 20 Hz et 20.000 Hz, avec une perte dans les aigus � mesure que l'on vieillit.

Une vid�o d'un haut parleur diffuse une fr�quence de 120 Hz dont les vibrations font danser ce liquide non-newtonien



Alors on peut conclure que le son en faite �lectroniquement est une combinaison entre un fr�quence et son delay d'ou on va se baser a cr�er notre programme suivant.
R�sultat de recherche d'images pour "stm32f4"   R�sultat de recherche d'images pour "buzzer"                     R�sultat de recherche d'images pour "stm32f4"      R�sultat de recherche d'images pour "buzzer"
J'ai bas�e sur Mikro c for ARM comme toujours, pour le brochage y a rien de sp�cial vous pouvez m�me comprendre ce qu'il faut faire par les commentaires �quip�es sur le programme,
 Alors si vous avez un buzeur ou un petit speaker apporter le et relier sa borne positive au PIN PE14 d'STM 32 et sa masse au masse d'STM32 et compiler ce programme au dessous et vous voyez la r�sultat.

      



  


Programme 
// Let's Electronic by Aymen Lachkhem
// How to play Audio Sound with STM32 F4
//www.letselectronic.blogspot.com



void Tone1() {
Sound_Play(659, 250); // Frequency = 659Hz, duration = 250ms
}

void Tone2() {
Sound_Play(698, 250); // Frequency = 698Hz, duration = 250ms
}

void Tone3() {
Sound_Play(784, 250); // Frequency = 784Hz, duration = 250ms
}

void Melody() { // Plays the melody from tones 1,2 and 3
Tone1();
Tone2();
Tone3();
Tone3();
Tone1();
Tone2();
Tone3();
Tone3();
Tone1();
Tone2();
Tone3();
Tone1();
Tone2();
Tone3();
Tone3();
Tone1();
Tone2();
Tone3();
Tone3();
Tone3();
Tone2();
Tone2();
Tone1();
}

void main() {

Sound_Init(&GPIOE_ODR, 14); // the sound output PE14
Sound_Play(880, 1000); // Play sound at 880Hz for 1 second

Melody(); //play the Melody that's we maked using Tones;

while (1) { } // Do Nothing

}


    Voici une d�monstration vid�o de fonctionnement :




   Have Fun :)

Thursday, January 14, 2016

Let's Discover STM32 (Blinking Led, Delay, GPIO I/O)

Let's Discover STM32 (Blinking Led, Delay, GPIO I/O)

La famille des microprocesseurs STM32 de ST Micro�lectroniques fournit une vaste gamme de p�riph�riques autour d'un c�ur d'ARM Cortex, allant du simple GPIO (port d'entr�e-sortie g�n�raliste) et interface de communication serie synchrone (SPI) ou asynchrone (RS232) aux interfaces aussi complexes que l'USB, Ethernet ou HDMI. 




 
Un point remarquable est qu'un certain nombre de ces processeurs poss�dent deux convertisseurs analogique-num�riques, permettant un �chantillonnage simultan�e de deux grandeurs analogiques. Cadence sur un r�sonateur interne ou sur un quartz externe haute fr�quence 8 MHz (multiplie en interne au maximum  a 72 MHz).
Afficher l'image d'origine



R�sultat de recherche d'images pour "stm32 microcontrollers"
Le kit STM32F4Discovery de STMicroelectronics est con�u pour �valuer les caract�ristiques des microcontr�leurs des s�ries STM32F407 et STM32F417. Les microcontr�leurs STM32F407 et STM32F417 sont bas�s sur le c�ur 32 bits ARM Cortex-M4F hautes performances.
Les familles STM32F405, STM32F407, STM32F415, STM32F417 de microcontr�leurs sont bas�es sur le noyau RISC 32 bits ARM Cortex-M4 de qualit� sup�rieure qui fonctionne � une fr�quence de jusqu'� 168 MHz. Le noyau Cortex-M4 offre une unit� de virgule flottante (FPU) � pr�cision simple qui prend en charge toutes les instructions de traitement de donn�es et types de donn�es � pr�cision simple ARM. Il ex�cute �galement toute une s�rie d'instructions DSP et une unit� de protection de m�moire (MPU) qui am�liore la s�curit� d'application.

         Microcontr�leur STM32F407VGT6 avec noyau Cortex-M4F 32 bits ARM, flash 1 Mo, 192 Ko de RAM dans un bo�tier LQFP100
         ST-LINK/V2 int�gr� avec choix de commutation des modes pour utiliser le kit comme
         ST-LINK/V2 autonome (avec connecteur SWD pour la programmation et le d�bogage)
         L'alimentation de la carte se fait par bus USB ou via tension d'alimentation externe de 5 V
         Alimentation d'application externe : 3 et 5 V
         Acc�l�rom�tre LIS302DL ou LIS3DSH ST MEMS
         MP45DT02, capteur audio ST MEMS, microphone num�rique omnidirectionnel
         CS43L22, DAC audio avec pilote de haut-parleur de classe D int�gr�
         Huit LED : LD1 (rouge/verte) pour la communication USB, LD2 (rouge) pour la mise sous tension 3,3 V.
         Quatre LED utilisateur, LD3 (orange), LD4 (verte), LD5 (rouge) et LD6 (bleue), 2
         LED OTG USB LD7 (vertes) VBus et LD8 (rouge), surintensit�
         Deux boutons-poussoirs (utilisateur et Reset)
         USB OTG FS avec micro-connecteur AB
         Extension d'embase pour toutes les E/S LQFP100 de connexion rapide pour la
 
  SDIO (entr�e/sortie num�rique s�curis�e)
USART, SPI, I�C
  I�S (son Inter-IC) + PLL audio
Timers 16 et 32 bits
ADC jusqu'� 3 x 12 bits
Basse tension 1,7 � 3,6 V
     
     Voici des exemples de r�alisation pratique �quip�es avec les codes sources et des vid�os d�monstratifs
     
     1- STM32 Tutoriel #1 (Control Leds Using externel Button) 



CODE IS HERE :


/*Let's Electronic By Aymen Lachkhem */ #include "stm32f4xx_hal.h" int main() { GPIO_InitTypeDef GPIO_InitStructure; //HAL_Init(); /* GPIO Ports Clock Enable */ __GPIOD_CLK_ENABLE(); __GPIOA_CLK_ENABLE(); /* Configure PD10 as output pushpull mode */ GPIO_InitStructure.Pin = GPIO_PIN_10; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStructure.Speed = GPIO_SPEED_LOW; GPIO_InitStructure.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); /* Configure PA1 in input mode*/ GPIO_InitStructure.Pin = GPIO_PIN_1; GPIO_InitStructure.Mode = GPIO_MODE_INPUT; GPIO_InitStructure.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); while(1) { if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_SET) HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_RESET); } }
Have Fun 

   2- STM32 Tutoriel #2 (Control DC Motor in Both Direction) 




CODE IS HERE :

/*Let's Electronic By Aymen Lachkhem*/ #include "stm32f4xx_hal.h" int main() { GPIO_InitTypeDef GPIO_InitStructure; //HAL_Init(); /* GPIO Ports Clock Enable */ __GPIOD_CLK_ENABLE(); __GPIOA_CLK_ENABLE(); /* Configure PD11, PD10 in output pushpull mode to control DC Motor / GPIO_InitStructure.Pin = GPIO_PIN_10 | GPIO_PIN_11 ; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStructure.Speed = GPIO_SPEED_LOW; GPIO_InitStructure.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); /* Configure PA1 in input mode for DC motor's direction*/ GPIO_InitStructure.Pin = GPIO_PIN_1; GPIO_InitStructure.Mode = GPIO_MODE_INPUT; GPIO_InitStructure.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); while (1) if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)){ HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10,GPIO_PIN_RESET); } else { HAL_GPIO_WritePin(GPIOD, GPIO_PIN_11,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10,GPIO_PIN_SET); }}

Have Fun 

    3 - STM32 Tutoriel #3 (Toggle Leds Using Mikro C for ARM)  




CODE IS HERE :


// Let's Electronic By Aymen Lachkhem unsigned int oldstate; void main() { GPIO_Digital_Input(&GPIOA_IDR, _GPIO_PINMASK_0); // Set PA0 as digital input GPIO_Digital_Output(&GPIOD_ODR, _GPIO_PINMASK_ALL); // Set PORTD as digital output oldstate = 0; do { if (Button(&GPIOA_IDR, 0, 1, 1)) // detect logical one on PA0 pin oldstate = 1; if (oldstate && Button(&GPIOA_IDR, 0, 1, 0)) { // detect one-to-zero transition on PA0 pin GPIOD_ODR = ~GPIOD_ODR; // invert PORTD value oldstate = 0; } } while(1); // endless loop }

Have Fun 

3