32f429i-discovery USB CDC Görmüyor

Başlatan elcrcp, 05 Ağustos 2018, 17:20:22

elcrcp

Merhaba arkadaşlar, PIC'ten ARM'a yeni geçiyorum ve kendime 1 adet stm32f429i-discovery board aldım. İnternetteki kaynaklardan faydalanarak CubeMX ve Keil ile yavaş yavaş ARM programlamaya geçiş yapmaya çalışıyorum. HAL kütüphanesi ile Basit GPIO uygulamaları yazdıktan sonra PC ile iletişimli bir program yazmak istedim ancak ne kadar uğraştıysam, ne kadar video izlediysem de PC cihazı com port olarak görmedi. Keil'deki örnek programları derleyip yüklediğimde USB-HID olarak gördü, WinUSB uygulaması da çalıştıi yani usb kablosunda yada soketlerinde bi sorun yok. Cihazın hem programlama için olan mini usb kısmı hem kullanıcı için olan mikro usb kısmı pc ye bağlı, ST nin sitesinden "stsw-stm32102" dosyasını çekip gerekli sürücüleri de kurdum ancak bir türlü çalıştıramadım. CubeMX de USB-OTG-FS seçiyorum, middleware den virtual com port u seçiyorum, clock ayarlarını yapıyorum, generate ettikten sonra keil da main.c de gerekli yerlere;
/* USER CODE BEGIN Includes */
#include "usbd_cdc_if.h"
#include "string.h"
/* USER CODE END Includes */
.
.
  /* USER CODE BEGIN 1 */
	uint8_t Buff1[]="Hop \r\n\r\n";
  /* USER CODE END 1 */
.
.
CDC_Transmit_FS(Buff1, strlen((char *)Buff1));
HAL_Delay(2500);

Kodlarını ekliyorum. derleyip yüklüyorum bana mısın demiyor. Sanki cihaz hiç init olmuyor gibi ama main fonksiyonun içinde usb init fonksiyonu da çağırılıyor. Daha işin başında olduğum için detaylı girip inceleyemiyorum da. Bu arada cihaz donmuyor, yüklenen kod çalışıyor, meselabu kodun yanında buton kesmesi ile led yakan birkaç satır eklediğimde o görevini yerine getiriyor. Sadece usb cihaz olarak pc de gözükmüyor.
Konu hakkında bir fikri olan var mıdır?

elcrcp

Merhaba arkadaşlar, uzun uğraşlar sonucu sorunu hallettim ve bilgi olarak sizlerle de paylaşmak istedim (her ne kadar konu halen daha moderatör onayı bekliyor olsa da).
Her şeyden önce datasheet'e bakmayıp başka kartlarla yapılan örnekler üzerinden yola çıktığım için düştüğüm bir hata var. STM32F429i-Discovery kartının üzerinde cn6 olarak kodlanmış olan mikrousb bağlantı soketi "USB_OTG_FS" pinlerine değil "USB_OTG_HS/Internal FS Phy" pinlerine bağlı, CubeMX pinout kısmında buna dikkat etmek gerekiyor. Doğru pinleri seçtikten sonra zaten Keil ortamında CDC_FS değil CDC_HS fonksiyonları aktif oluyor dolayısıyla soru mesajımda yazdığım kodlardaki FS'i HS ile değiştirmek gerekti. Bunların dışında can alıcı bir nokta daha var ki o da HEAP_SIZE değeri. CubeMX den Keil'e geçtiğinizde default olarak HEAP_SIZE değeri 0x0000 0200 olarak geliyor. Bu durumda bilgisayar  Virtual Com Port üzerinden cihazı görüyor ancak cihazı başlatamıyor, bunu aşmak için "startup_stm32f429xx.s" dosyasını açıp "configuration wizard" sekmesinden Heap Size değerini 0x0000 0400 ya da daha yüksek bir değerle değiştirmek gerekiyor. Benim kodum için 400 yeterli idi. Umarım birinin işine yarar bu detaylar :) .