Mit dieser Library kann eine normale PS2-Tastatur an die STM32F4-CPU angeschlossen werden. Im Moment habe ich nur die Empfangsrichtung implementiert (die LEDs können also nicht gesteuert werden)
Zum Betrieb wird eine externe Interrupt-Leitung und ein normaler GPIO-Pin benötigt. Ich habe PB7 und PA8 am Discovery-Board benutzt.
Die Tastatur muss nach dem Init gepollt werden und liefert den Ascii-Code der gedrückten Taste zurück. Alle Tasten die benutzt werden sollen, müssen im C-File in einer Tabelle eingetragen werden. (Im Moment ist als Umschalttaste nur SHIFT implementiert)
Hinweis : Die Tastatur braucht nach PowerOn ca 500ms bevor sie bereit ist.
Die Tastatur läuft eigentlich mit +5V und bräuchte vermutlich Pegelwandler auf 3,3V
(ich habe sie einfach an +3,3V angeschlossen das funktioniert bei mir auch
Wegen der Interrupt-Leitung wird auch die Library “STM32_UB_EXT_INT5TO9″ benötigt.
PS2-Steckerbelegung :
Benutzte Pins :
1 2 | Clock an PB7 (per externem Interrupt-7) Data an PA8 |
Voraussetzungen :
1 2 | Benutzte Module der CooCox-IDE : GPIO Benutzte Librarys : STM32_UB_EXT_INT5TO9 |
Funktionen :
1 2 | void UB_PS2_Key_Init(void); // zum init der Tastatur uint8_t UB_PS2_Key_GetAscii(void); // zum auslesen des Tastatur-Puffers |
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | //-------------------------------------------------------------- // File : main.c // Datum : 02.04.2013 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.0 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo der PS2-Keyboard-Library // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_ps2_key.h" #include "stm32_ub_led.h" int main(void) { uint8_t ascii_wert; SystemInit(); // Quarz Einstellungen aktivieren // init der LEDs UB_Led_Init(); // init der PS2-Tastatur UB_PS2_Key_Init(); while(1) { // PS2-Tastatur abfragen ascii_wert=UB_PS2_Key_GetAscii(); // Grüne LED mit der Taste 'a' toggeln if(ascii_wert=='a') UB_Led_Toggle(LED_GREEN); // Rote LED mit der Taste 'A' toggeln if(ascii_wert=='A') UB_Led_Toggle(LED_RED); // Blaue LED mit der Taste 'F1' toggeln if(ascii_wert==0x81) UB_Led_Toggle(LED_BLUE); // Orange LED mit jeder Taste toggeln if(ascii_wert!=0) UB_Led_Toggle(LED_ORANGE); } } |
Hier die Library zum Download :
Hier der komplette CooCox-Projektordner zum Download :