11 Ağustos 2020, 15:23:27

Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d


STM32F407 DISCOVERY USB FLASH BELLEK YAZMA

Başlatan Murat Mert, 02 Kasım 2019, 18:44:30

Murat Mert

S.A.

Hocamın ricası ile Üniversitede iklimlendirme bölümünde bir test ve eğitim cihazını toplayıp 2.8" ili9341 ekranı ve değerlerini tutmaları için Stm32f407 disco ile ili9341 sd kart modülünü kullandım. Sıcaklık, gaz basıncı vs sensörlerden gelen bilgileri ve çalışma durumunu txt olarak sd karta kayıt ediyor ve bunu Pc ile tahtaya yansıtıp dersde yorumluyorlardı. Sd kart şimdilerde su koyuyormuş. Hocaya usb den direk pc ye bağlayalım dedim olmaz kurcalarlar diyor. Pc olsa işim daha kolaylaşacak ama istemiyor. Flaş bellek olsun dedi bir şey de diyemedim. :(
MikroC Arm'da usb flash bellek ile ilgili örneklerden çalışma yapıyorum flash bellek takılınca ve sökülünce algılıyor ama FAT kısmında sıkıntı var.
USBHost_MSCApplication() bu fonksiyona gitmiyor.

Daha önce MikroC Arm ile bu konuda çalışan arkadaşlardan yardım rica ediyorum. Çalışan örnekleri varmıdır.





#include <stdint.h>
#include "__Lib_FAT32.h"
sfr sbit PSW at GPIOC_ODR.B0;
sfr sbit BTN at GPIOA_IDR.B0;

extern const code char cmd_bmp[7238];           // image
extern const code char Consolas6x13_Regular[];  // font

const char msgDevC[] = "Device Connected ...\r";
const 
char msgDevD[] = "Device Disconnected ...\r";
const 
char msg1[] = "Simple Mass Storage Class demo.\r";
const 
char msg2[] = "Plug USB Flash Stick with FAT32 filesystem.\r";
const 
char msg3[] = "Example will list root folder content.\r";
signed char err;

unsigned int xPosyPosbuffPos;
char txtBuff[60];                  // holds one line of text

static uint8_t MSC_App_State 0;  // main application state

void USB0Interrupt() iv IVT_INT_OTG_FS{
  
USBHost_IntHandler();
}







// Application Part
uint8_t USBHost_MSCApplication(){
  
uint8_t status 0;
  
int8_t fhandle;
  
uint32_t fsizeij;
  
UART2_Write_Text("FAT_32_in\r");
  switch(
MSC_App_State){
    case 
0:
      if (
FAT32_Init() == 0){
        
MSC_App_State 1;
      }
      break;
        
    case 
1:
      
FAT32_Dir();
      
MSC_App_State 2;
      break;
    
    case 
:
      break;
  }
  return 
0;
}

void EventHandler(uint8_t event){
  switch(
event){
    case 
_USB_HOST_EVENT_DEVICE_CONNECTED :
      
UART2_Write_Text(msgDevC); // flash bellek takılı
      
Delay_ms(500);
      
MSC_App_State 0;
      
xPos 20;
      
yPos 20;
      
buffPos 0;
      break;

    case 
_USB_HOST_EVENT_DEVICE_DISCONNECTED :
      
ClearDisplay();
      
UART2_Write_Text(msgDevD); // flash bellek takılı değil
      
break;

  }
}

void DisplayInit(){
  
UART2_Write_Text(msg1);
  
UART2_Write_Text(msg2);
  
UART2_Write_Text(msg3);
  
Delay_ms(2000);
}

void main() {



  
GPIO_Digital_Output(&GPIOC_BASE_GPIO_PINMASK_0);
  
GPIO_Digital_Input(&GPIOA_BASE_GPIO_PINMASK_0);
  
GPIO_Alternate_Function_Enable(&_GPIO_MODULE_OTG_FS_PA89_10_11_12);
  
UART2_Init_Advanced(9600_UART_8_BIT_DATA_UART_NOPARITY_UART_ONE_STOPBIT, &_GPIO_MODULE_USART2_PA23);
  
PSW 1;  // Turn off power switch
  
Delay_ms(200);
  
PSW 0;  // Turn on power switch
  
UART2_Write_Text("DENEME\r");
  
DisplayInit();
  
  
USBHost_MSCInit();
  
USBHost_RegisterDeviceEventHandler(EventHandler);
  
USBHost_Init();

  
NVIC_IntEnable(IVT_INT_OTG_FS);


  while(
1){
    
USBHost_Main();

  }

}


mert07