İçindekiler:
- Adım 1: Yazılım ve Donanım Gereksinimleri
- Adım 2: STM32CubeMX Yapılandırması
- Adım 3: Keil Yazılım Geliştirme
- Adım 4: Python Yazılım Geliştirme
- Adım 5: Sonuç
Video: STM32F4 Discovery Board ve Python USART İletişimi (STM32CubeMx): 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Selam! Bu derste STM32F4 ARM MCU ve Python arasında USART iletişimi kurmaya çalışacağız (herhangi bir başka dil ile değiştirilebilir). O halde başlayalım:)
Adım 1: Yazılım ve Donanım Gereksinimleri
İhtiyacınız olan donanım açısından:
- STM32F4 Keşif Kartı (veya başka bir STM32 kartı)
- USB'den TTL'ye dönüştürücü
Yazılım açısından:
- STM32CubeMX
- Keil uVision5
- Seri kitaplık yüklü Python
Adım 2: STM32CubeMX Yapılandırması
Önce ne yapmak istediğimizi anlayalım. USART üzerinden Python'dan board'a veri iletmek ve doğru veriye ve toggle led'e sahip olup olmadığımızı kontrol etmek istiyoruz. Bu yüzden USART ve Led'i etkinleştirmemiz gerekiyor.
-
USART2'yi Bağlantı sekmesinden etkinleştirin.
- Modu Eşzamansız olarak değiştir
- Baud hızı 9600 Bit/sn'ye
- Parite olmadan 8 Bit'e kadar kelime uzunluğu
- parite biti yok
- DMA ayarlarından dairesel modda USART2_RX ekleyin
- NVIC Ayarlarından USART2 global kesmesini etkinleştirin
- PD12'ye tıklayarak LED'i etkinleştirin
Sonra kod oluşturun:)
Adım 3: Keil Yazılım Geliştirme
#Dahil etmek
#Dahil etmek
Bu kitaplıklara dize işlemlerinde ve boolean değişkeni tanımlamak için ihtiyaç duyulacaktır.
/* KULLANICI KODU BEGIN 2 */ HAL_UART_Receive_DMA(&huart2, (uint8_t *) data_buffer, 1); /* KULLANICI KODU SON 2 */
Burada DMA ile UART alımı başladı.
/* KULLANICI KODU BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { /* Kullanılmayan argüman(lar) derlemesini engelle uyarı */ UNUSED(huart); /* NOT: Bu fonksiyon değiştirilmemelidir, geri çağırma gerektiğinde, HAL_UART_RxCpltCallback kullanıcı dosyasında uygulanabilir */ if(data_buffer[0] != '\n'){ data_full[index_] = data_buffer[0]; dizin_++; }else{ index_ = 0; bitmiş = 1; } //HAL_UART_Transmit(&huart2, data_buffer, 1, 10); } /* KULLANICI KODU SON 4 */
Bu, bir bayt karakter aldığımızda etkinleştirilen ISR'dir. Yani. bu baytı alırız ve '\n' elde edene kadar alınan tüm verileri içeren data_full'a yazarız. '\n' aldığımızda, bitmiş bayrak 1'i ve while döngüsünde yaparız:
while (1) { /* KULLANICI KODU END WHILE */ if(finished){ if(strcmp(data_full, cmp_) == 0){ HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12); } memset(veri_dolu, '\0', strlen(veri_dolu)); tamamlandı = 0; }else{ _NOP(); } /* KULLANICI KODU BAŞLANGIÇ 3 */ }
Bitmiş bayrak YÜKSEK ise, alınan tam veri ve istediğimiz verinin içeriğini karşılaştırır ve eşitlerse led'i değiştiririz. Bundan sonra bitmiş bayrağı temizliyoruz ve yeni verileri bekliyoruz ve ayrıca dizinin üzerine yazmamak için data_full dizisini temizliyoruz.
Adım 4: Python Yazılım Geliştirme
Bu yüzden burada numaramızı sonunda '/n' ile göndermek istiyoruz, çünkü Keil yazılımının sonunu bilmesi için onu görmesi gerekecek.
seriyi içe aktar
ser = serial. Serial('COM17') #Aygıt Yöneticisi'nden aygıtınızdaki o bağlantı noktasını kontrol edin
ser.write(b'24\n')
Her '24\n' gönderdiğinizde LED'in değiştiğini görmelisiniz. Başka bir şey gönderirseniz, onu etkilememelidir.
Adım 5: Sonuç
Eğitimin sonuna geldik. herhangi bir sorun veya sorunuz varsa lütfen sormaktan çekinmeyin. Elimden geldiğince yardımcı olmaya çalışacağım. Çok teşekkürler:)
Önerilen:
Raspberry PI 3 - TtyAMA0 ile BCM GPIO 14 ve GPIO 15 arasında Seri İletişimi Etkinleştir: 9 Adım
Raspberry PI 3 - TtyAMA0'dan BCM GPIO 14'e ve GPIO 15'e Seri İletişimi Etkinleştir: Kısa bir süre önce Raspberry Pi (3b)'mde UART0'ı etkinleştirmekle ilgilendim, böylece onu standart bir 9 kullanarak doğrudan bir RS-232 sinyal seviyesi cihazına bağlayabilirdim. -pin d-sub konektörü, bir USB'den RS-232'ye adaptörden geçmek zorunda kalmadan. İlgi alanımın bir parçası
MPU 6050 Gyro, Arduino ile İvmeölçer İletişimi (Atmega328p): 5 Adım
MPU 6050 Gyro,Arduino ile İvmeölçer İletişimi (Atmega328p): MPU6050 IMU, tek bir çip üzerinde entegre edilmiş 3 Eksenli ivmeölçer ve 3 Eksenli jiroskopa sahiptir. X, Y ve Z ekseni. Jiroskopun çıkışları
USB ÜZERİNDEN SENSÖR İLETİŞİMİ: 3 Adım
USB ÜZERİNDEN SENSÖR İLETİŞİMİ: Bu eğitim, EZO devreleriyle etkileşim kurmak için İzole USB EZO Taşıyıcı Kartının nasıl kullanılacağını gösterir. Birkaç basit adımla, devreleri kalibre edip hatalarını ayıklayabilecek ve hatta söz konusu parametreyi gerçek zamanlı olarak izleyebileceksiniz. AVANTAJLARI:
Arduino ve Mobil Bluetooth İletişimi (haberci): 8 Adım
Arduino ve Mobil Bluetooth İletişimi (haberci): İletişim, günlük hayatımızda önemli bir faktör oynuyor. Ancak bu kilitlenme döneminde kendi ailemizle iletişim veya evimizdeki insanlarla iletişim bazen cep telefonlarına ihtiyaç duyar. Ancak cep telefonlarının kısa süreli kullanımı
Noob'lar için ESP8266 ve Python İletişimi: 6 Adım
Noob'lar için ESP8266 ve Python İletişimi: Bu kılavuz, ESP8266'dan herhangi bir veri almanızı ve AT komutları olmadan python üzerinden kontrol etmenizi sağlar.” çipe, yani: Gereksiz İsraf