Hallo möchte au feinem STM32F103RB ein Bauteil an den SPI anschliessen. Bei dem Chip steht in einem Beispiel (Bosch BMA 020A) für einen AVR die Beschaltung SCK MOSI MIOS GND und (INT) und (CS) ? Cableselect? Was ist dieses INT und CS, welcher Pin ist dies an meinem STM? lg Kerstin
Gast
#2520396
CS = SPI Chip select (Dürfte beim STM32 NSS sein). Als Interrupt-Eingang wird wahrscheinlich jeder GPIO geeignet sein, Programmierung im EXTI. HDH. Zock
Gast
#2520399
>Was ist dieses INT und CS, welcher Pin ist dies an meinem STM?
Schau in die Datenblätter beider Chips. Die sind dazu
da solche Fragen zu beantworten.
Mir ist klar dass es beim Atmel ein Interrupt Pin ist, der dann einen entsprechenden Interrupt auslösen kann. Nur ich finde einen solchen nicht beim STM32.
Gast
#2520411
Kerstin M. schrieb: > Mir ist klar dass es beim Atmel ein Interrupt Pin ist, > der dann einen entsprechenden Interrupt auslösen kann. > Nur ich finde einen solchen nicht beim STM32. Brille sauber?
zu spät gelesen sry ;-) danke - hab keine Brille!
Gast
#2520417
Kerstin M. schrieb: > ... hab keine Brille! Vielleicht ist ja das das Prob ;-)
Du kannst beim STM32 eigentlich jeden Pin als Interrupt Source einstellen. Siehe EXTI Beispiel in der Firmware Package zum STM32F4-Discovery. ... /** * This function handles External line 0 interrupt request. */ void EXTI0_IRQHandler(void) { if ((EXTI->IMR & EXTI_IMR_MR0) && (EXTI->PR & EXTI_IMR_MR0)) { // ... // Clear the EXTI line 0 pending bit EXTI->PR = EXTI_PR_PR0; } } ... // Enable SYSCFG clock RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); // Connect EXTI Line0 to PB0 pin */ SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource0); // Configure EXTI Line0 EXTI_InitTypeDef touchExti; touchExti.EXTI_Line = EXTI_Line0; touchExti.EXTI_Mode = EXTI_Mode_Interrupt; touchExti.EXTI_Trigger = EXTI_Trigger_Falling; touchExti.EXTI_LineCmd = ENABLE; EXTI_Init(&touchExti); // Enable and set EXTI Line0 Interrupt to the lowest priority NVIC_InitTypeDef touchInt; touchInt.NVIC_IRQChannel = EXTI0_IRQn; touchInt.NVIC_IRQChannelPreemptionPriority = 0x01; touchInt.NVIC_IRQChannelSubPriority = 0x01; touchInt.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&touchInt);
Hallo habes nun mal probiert nur er break nicht in die Methode rein.
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 | |
Die Portconfig.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
was bedeutet das floating?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
weis jemand warum? lg Kerstin
Die Zeile EXTI_GenerateSWInterrupt(EXTI_Line0); löst einen Breakpoint aus, aber ein externes Signal nicht?
Gast
#2521120
Hi, zunächst erstmal ein gut gemeinter Rat, du solltest nicht die ST-Besipiele einfach kopieren ohne ins Datenblatt zu schauen warum und wieso das so gemacht wurde. Danach schau dir mal die Zeilen unten an, die bei dir geändert habe (natürlich ohne Gewähr).
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Natürlich musste jetzt in der IRG noch abfangen, ob wirklich dein GPIOB_7 den Interrupt ausgelöst hat. Dafür schauste in die EXTICR Register von AFIO. Aber das probier erstmal selbst, denn selber machen übt. Gruß und 55
Hätte dazu auch mal 'ne Frage, da ich dazu keine Beispiele gefunden habe. Kann ich auch mehrere Pins auf eine EXTI Line legen , z.B. so:
1 | |
Konkret möchte ich mit 3 Hallsensoren eines BLDC Motors den gleichen Interrupt auslösen .
Hab mir meine Frage selbst beantwortet, nein es geht nicht, da beim STM32 die Verdrahtung von Pins zu den EXTI Lines fest verschaltet ist. Bit 0 eines Ports ist mit EXTI0 verbunden, Bit1 mit EXTI1 usw. Das eingebaute Hallsensor Fietscha des STM32 kann ich nicht benutzen, da mein Motor ganz anders angesteuert wird, also keine simple Block Kommutation. In meinen EXTI0 bis EXTI2 Handlern rufe ich nun einfach einen gemeinsamen IRQ Handler auf.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Es gäbe auch noch die EXTI9_5 und EXTI15_10 Interrupts, die mehrere Leitungen zusammenfassen. mfg
Hey danke , werd ich mir mal ansehen !
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.