Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

cubemx usb sorunu

Başlatan görkem, 10 Ekim 2016, 01:55:32

görkem

Cubemx ile configure edip keil ile derlediğim usb haberleşme kodu naptıysam pc ye tanıtamadım pc de aygıt yöneticisinde hid kısmında  aygıt geçirilemedi diye bir hata veriyor vid ve pid yi sürücülerde gösteriyor fakat veri alışverişi yok denemeleri st nin usb hid demonstrator programı ile yapıyorum  algılamıyor bile program

EMP_Otto

Kullandığınız kodu paylaşırsanız yardımcı olacak birileri mutlaka çıkar.
Bu işler zordur,özveri ister...

eigenvector

Benzer bir durum usb'yi vcp olarak tanimladigimda karsima cok cikti. Cozumu de baslangicta, data gondermeye baslamadan once 1sn delay vererek olmustu.

Sent from my SM-N9000Q using Tapatalk


Cemre.

usbd_custom_hid.c dosyasında herhangi bir değişiklik yaptınız mı?

görkem

#4
şuanda sistem görüyor veri gönderebiliyorum fakat veri pc den alamıyorum veri geldi event i oluşuyor fakat veriyi çekemiyorum çok tuhaf bir durum   " CUSTOM_HID_ReportDesc_FS " descriptor kısmından şüpheleniyorum.  usbd_custom_hid.c dosyasında herhangi değişiklik yapmadım usbd_custom_hid.if.c dosyasında değişiklik yaptım.

CUSTOM_HID_ReportDesc_FS kısmını hid descriptor tool programı ile oluşturdum.

@eigenvector  bekleme koymayı denedim sonuç alamadım.

kullandığım işlemci stm32f407

dosyaların linki aşağıdadır.

https://www.dropbox.com/sh/a2ivhxgljcm44u5/AAB3J_gPl0_JZ91hVHt0pEYVa?dl=0

Cemre.

Evet haklısınız, usbd_custom_hid_if.c 'den bahsetmek istemiştim. User Code 6 alanını doldurmanız gerekiyor.

Ben bu şekilde yapmışım.

USBD_CUSTOM_HID_HandleTypeDef *hhid = (USBD_CUSTOM_HID_HandleTypeDef*)hUsbDeviceFS.pClassData;
	
	for(uint8_t i = 0; i<63; i++)
	{
		USB_RX_Buffer[i] = hhid->Report_buf[i];
	}
	
  return (0);

görkem

#6
@Cemre. aynı şekilde kullanıyorum  sizin kullandığınız " CUSTOM_HID_ReportDesc_FS "  descriptor kısmı nasıl hocam ?  dosyaya bakabilme imkanınız varsa çok iyi olur

Cemre.

#7
  /* USER CODE BEGIN 0 */ 
  0x06, 0x00, 0xFF,							// Usage Page = 0xFF00 (Vendor Defined Page 1)
	0x09, 0x01,										// Usage (Vendor Usage 1)
	0xA1, 0x01,										// Collection (Application)
	// Input Report
	0x19, 0x01,										// Usage Minimum
	0x29, 0x40, 									// Usage Maximum
	0x15, 0x00,										// Logical Minimum (data bytes in the report may have minimum value = 0x00)
	0x26, 0xFF, 0x00,							// Logical Maximum (data bytes in the report may have maximum value = 0x00FF)
	0x75, 0x08,										// Report Size: 8-bit field size
	0x95, CUSTOM_HID_EPIN_SIZE,		// Report Count
	0x81, 0x02,										// Input (Data, Array, Abs)
	// Output Report
	0x19, 0x01,										// Usage Minimum
	0x29, 0x40,										// Usage Maximum
	0x75, 0x08,										// Report Size: 8-bit field size
	0x95, CUSTOM_HID_EPOUT_SIZE,		// Report Count
	0x91, 0x02,										// Output (Data, Array, Abs)
  /* USER CODE END 0 */ 
  0xC0    /*     END_COLLECTION	             */


Bir giriş bir çıkış iki adet endpoint içeriyor. İkisi de 64byte olması lazım..

while (1)
  {
  /* USER CODE END WHILE */
		LED_State = USB_RX_Buffer[0];
		sprintf((char *)USB_TX_Buffer, "#STM,%.2f,boylam,yaw,pitch,roll,%u,@", x, LED_State);
		uint16_t len = strlen((char *)USB_TX_Buffer);
		
		if(LED_State) HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, GPIO_PIN_RESET);
		else  HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, GPIO_PIN_SET);
		
		USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, USB_TX_Buffer, 64);
		
		++x;
		HAL_Delay(5);
  /* USER CODE BEGIN 3 */
  }


Bu yukarıdaki kodu düzenleyerek kit'in üzerindeki Led'leri USB Demonstration uygulamasıyla kontrol edebilirsiniz. Ben STM32F103C8T6'da sorunsuz kullanıyorum. PC'ye sürekli artan bir sayı gönderir. Bunu bağlantı kopması olup olmaması durumunu göreyim diye koydum. RX_Buffer'ın 0'ın baytını da kontrol ederek bir LED'i yakıp söndürdüm.

görkem

#8
endpointler doğru hocam. dediğinizi bir deniyim.

mesaj birleştirme:: 10 Ekim 2016, 20:31:16

hocam sorun usb hid demonstrator  daymış kodum doğruymuş. demonstrator da graphic view de ledlerin adresini graphic customization da değiştirmeme rağmen adres değişmiyor bu sebeple veri kaçırdığımı sanmışım.

Cemre.

Alıntı yapılan: görkem - 10 Ekim 2016, 19:47:32
endpointler doğru hocam. dediğinizi bir deniyim.

mesaj birleştirme:: 10 Ekim 2016, 20:31:16

hocam sorun usb hid demonstrator  daymış kodum doğruymuş. demonstrator da graphic view de ledlerin adresini graphic customization da değiştirmeme rağmen adres değişmiyor bu sebeple veri kaçırdığımı sanmışım.

Evet bu sorunu ben de yaşamıştım. Çok da üzerinde durmadım, aslında verileri işleyecek bir C# uygulaması da hazırlamıştım ancak şuan kullandığım USB kütüphanesinin birşeyleri yüklü olmadığından uygulama USB'yi görmüyor. O konuya da bir el atmak lazım..

görkem

Alıntı yapılan: Cemre. - 11 Ekim 2016, 00:13:15
Evet bu sorunu ben de yaşamıştım. Çok da üzerinde durmadım, aslında verileri işleyecek bir C# uygulaması da hazırlamıştım ancak şuan kullandığım USB kütüphanesinin birşeyleri yüklü olmadığından uygulama USB'yi görmüyor. O konuya da bir el atmak lazım..

umng.dll mi eksik hocam öyleyse göndereyim bende c# ile uygulama yapmıştım zamanında o dll yi  kulanmıştım.

Cemre.

Yok LibUsbNet gibi bir kutuphane kullanmıştım ancak hiç hatırlayamıyorum. Değişik bir wizard'ı var ve suruculere mudahale etmek gerektiriyor. Oyle olduktan sonra ne anladim HiD'den? Sevmemiştim onu.

görkem

Anladım.Zamanında hızlı şekilde yapmak adına kullanmıştım çok kısıtlı kullanımı vardı fakat işimi görmüştü.O kütüphaneye bakarım müdahale edebilmek  daha iyi tabi.