empa Elektornik

CORPORATE

SOLUTIONS

LOG IN

SEARCH

empa logo
empa logo

ONLINE MAĞAZA DESTEK TALEPLERİNİZ İÇİN LÜTFEN TIKLAYIN

ONLINE MAĞAZA DESTEK
TALEPLERİNİZ
İÇİN LÜTFEN
TIKLAYIN

Support

While developing our business, we expect our employees to be open (transparent) and honest in all human relations. We believe that relationships lacking in transparency and honesty are unhealthy and short-lived. It is only possible to maintain a lasting customer-supplier-employee relationship by abiding to these values.

TOTAL 31 CONCLUSION

+-

Merhabalar I2S hattı üzerinden DAC a veri gönderip bunu osiloskop ile gözlemlemek istiyorum, bu noktada bir iki sorum olacaktı. STM32f407vg modelinde CS43l22 ( DAC + Amp. ) entegresi bulunuyor ve bildiğim kadarıyla bu entegre ile I2S protokolü üzerinden haberleşebiliyoruz. Bende STM32F29l kartı var ve bu kartta bu entegre bulunmuyor. Ben yine de I2S hattı üzerinden kart içindeki dahili DAC birimine veri gönderebilir miyim ? ( Bu noktada şunu da sormak istiyorum. STM32F407VG modelinde DAC birimi CS43l22 entegresindeki birim mi yoksa CS43l22 entegresi ayrı DAC birimi ayrı mı ifade ediliyor ? ) Yoksa harici bir DAC + Amp. mı almalıyım ?   Merhaba, Kartınızdaki dahili DAC’ı kullanacaksanız I2S ile haberleşmenize gerek yok. Direkt olarak DAC registerlarına yazarak projenizde dahili DAC’ı kullanabilirsiniz. Aşağıda linklediğim örnek, projeniz için size faydalı olacaktır. https://deepbluembedded.com/stm32-dac-tutorial-example-hal-code-analog-signal-genreation/ STM32F407VG mikrodenetleyicisinde dahili DAC bulunmaktadır. Bunun yanı sıra STM32F407G-DISC1 kitinin üzerinde, sizin de bahsetmiş olduğunuz CS43L22 entegresi bulunmaktadır. Bu entegrenin dahili DAC’dan farkı, içinde bulunan Class D Amplifier dır. Amplifier kullanmadan alacağınız çıktı sinyali, entegreden alacağınız çıktı sinyaline göre düşük genlikte kalacaktır. CS43L22 entegresine yakın bir sonuç almak için harici bir amplifier kullanabilirsiniz.

+-

IO Expenderımla I2C bağlantısı kurmaya çalışırken HAL_I2C_Master_Transmit fonksiyonumun != HAL_OK döndürüyor. Fonksiyonumun driverinda TXIS bayrağının ayarlanamadığını bundan dolayı fonskiyonun işlevini yerine getirmediğini gördüm . Bu konuda nerede ve nasıl bir hata yaptığımı açıklayabilirseniz sevinirim. Teşekkürler.

 

1
2
3
4
5
6
7
while(hi2c->XferCount > 0U)
{
/* Wait until TXIS flag is set */
if(I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
{
returnHAL_ERROR;
}

Merhabalar, Sorunun TXIS bayraklarında olduğunu sistemi debuglayarak mı buldunuz? Debug sırasında timingleri kaçırıp TXISyi yakalayamamış olabilir. Bunun dışında IO expenderınızın addressini doğru yolladığınıza emin misiniz. Eğer 7 bitlik adresleme kullanılıyor ise bir bit shiftlemeniz gerekebilir. IO expenderin response verdiğini I2C scanner gibi bir uygulama ile deneyebilir misiniz? Sıkıntı IO expender tarafında oladabilir. stm32 scanner: https://deepbluembedded.com/stm32-i2c-scanner-hal-code-example/ Aşağıdaki dökümantasyonda 16. sayfada txis ile ilgili bilgiyi inceleyebilirsiniz. dökümantasyon: https://avys.omu.edu.tr/storage/app/public/idris.sancaktar/137331/Chapter_22_I2C_ARM_2.pdf Haberlerinizi bekliyorum.

 

+-

DMA ile tek kanaldan çoklu ADC okuma işlemi sırasında okunan ADC değerlerinden birini , diğer okunan değeri referans alarak kalibre edebilir miyiz? Eğer yapabiliyorsak bunun için bir konfigürasyon var mı yoksa bu algoritmayı kendimiz mi oluşturmamız lazım ? Teşekkürler… Aynı anda farklı kanallardan (ADC1’in 0, 1 ve 2. kanalları gibi) DMA kullanılarak çoklu okuma yapılabilir. Bu okunan değerler de (deger[0], deger[1] gibi) karşılaştırılabilir. Hazır bir uygulama var mı emin değilim, fakat kendiniz bu şekilde bir algoritma oluşturabilirsiniz.

+-

Merhabalar  stm32-f030r8 kartım var ve projemde bu karta mpu6050 sensörünü i2c ile bağladım ve elde ettiğim veriler çok yavaş güncelleniyor. Bu sorunu nasıl çözebilirim?

 

Merhaba,

I2C clock frekansını değiştirmeyi denediniz mi?

+-

Merhaba, ESP32-DevKitC v4 kullanarak bir button interrupt projesi yapmaya çalışıyorum. LED pininin anlık seviyesini öğrenmek için gpio_get_level() fonksiyonunu kullanıyorum fakat bu fonksiyon ne olursa olsun 0 olarak dönüş yapıyor. Pin yüksek seviyede ve LED yanarken bile 0 dönüşünü yapıyor. Bu sorunu nasıl çözebilirim ?

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
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#define BLINK_GPIO 16
#define BTN_GPIO 17
#define ESP_INTR_FLAG_DEFAULT 0
TaskHandle_t ISR = NULL;
staticconstchar* TAG = "Example";
voidIRAM_ATTR button_isr_handler(void* arg) {
xTaskResumeFromISR(ISR);
}
voidbutton_task(void*arg) {
while(1) {
gpio_intr_enable(BTN_GPIO);
vTaskSuspend(NULL);
ESP_LOGI(TAG,"Button Pressed, Turning LED %s ",
!gpio_get_level(BLINK_GPIO) ? "ON": "OFF");
gpio_set_level(BLINK_GPIO, !gpio_get_level(BLINK_GPIO));
}
}
voidapp_main() {
gpio_pad_select_gpio(BTN_GPIO);
gpio_pad_select_gpio(BLINK_GPIO);
gpio_set_direction(BTN_GPIO, GPIO_MODE_INPUT);
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
gpio_pulldown_en(BTN_GPIO);
gpio_set_intr_type(BTN_GPIO, GPIO_INTR_POSEDGE);
gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT);
gpio_isr_handler_add(BTN_GPIO, button_isr_handler, NULL);
xTaskCreate(button_task, "button_task", 4096, NULL , 10, &ISR);
}

Merhaba, ESP-IDF’in API referansında bahsettiğiniz fonksiyonun altındaki uyarıya dikkat ederseniz, pin konfigürasyonunun giriş olmadığı durumlarda dönüş değerinin her zaman 0 olacağından bahsediliyor. LED pinini “giriş ve çıkış” moduna alarak hatayı düzeltebilirsiniz.

gpio_set_direction(LED_GPIO, GPIO_MODE_INPUT_OUTPUT);

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/gpio.html#_CPPv414gpio_get_level10gpio_num_t

+-

Stm32f446ret6 kullandıgım bir projede flash kaydetne yapmaktayım. 13 farklı datayı kaydetne yapıyorum. Kaydetme esnasında geçen süre ms cinsinden ne kadardır.

Merhaba,

STM32F446 Datasheet’inin 111. sayfasındaki Tablo 48 ve Tablo 49’u inceleyerek aradığınız değerlere ulaşabilirsiniz.

Datasheet – STM32F446:

https://www.st.com/resource/en/datasheet/stm32f446mc.pdf

+-

Merhaba STM32’nin mikrofonu ile konuşma yapıldıgında bir kaç satırlık kodla koda yazdıgımız kelimeleri tanımlayabiliyor.Bu sesi işlemeden nasıl mümkün oluyor?

hemantnile/stm32-speech-recognition: Its a stm32f4 discovery based project. It recognizes 6 spoken words and selects appropriate output (github.com)

 

Merhaba,

Paylaştığınız örnek projede konuşma tanıma için sinyal işleme kullanılmaktadır.

Bu projede konuşma tanıma işlemi için MFCC (Mel-Frequency Cepstral Coefficients) tekniği ve DTW (Dynamic Time Warping) algoritması kullanılmış. Basitçe anlatmak gerekirse MFCC, ses sinyalinin insan kulağında algılanma şekline yakın bir şekilde ifade edilmesi tekniğidir. DTW ise iki zaman serisinin benzerliğini karşılaştırmaya yarayan bir algoritmadır. Tanımak istediğiniz kelimeler önceden bir MFCC şablonuna dönüştürülüp lookup table’a koyulur. Uygulama sırasında mikrofondan alınan ses sinyali MFCC haline dönüştürülüp, DTW algoritması kullanılarak doğru kelime olup olmadığına karar verilir.

Daha detaylı bilgi için aşağıdaki linkleri inceleyebilirsiniz.

MFCC:
https://medium.com/prathena/the-dummys-guide-to-mfcc-aceab2450fd

https://www.analyticsvidhya.com/blog/2021/06/mfcc-technique-for-speech-recognition/

DTW:
https://betterprogramming.pub/how-to-do-speech-recognition-with-a-dynamic-time-warping-algorithm-159c2a1bb83c
https://towardsdatascience.com/dynamic-time-warping-3933f25fcdd

+-

Merhaba, ST ve Espressif ürünlerimin projelerini tek bir ortamda bulundurmak istiyorum. ESP32 projelerime VS Code üzerinden çalışıyorum,

STM32 projelerimi de bu ortama taşımak mümkün müdür? Hazır bulunan STM32CubeIDE projemi VS Code a nasıl aktarırım?

 

Merhaba, STM32CubeIDE projelerinizi VS Code ortamına aktarmak mümkündür. Aşağıdaki linkte projenizi nasıl aktaracağınız ve aktardıktan sonra nasıl geliştireceğiniz hakkında detaylı bilgi yer almaktadır.

https://github.com/MaJerle/stm32-cube-cmake-vscode

+-

Merhabalar kullanmakta olduğum STM32F746G-DISCO 4.3” LCD-TFT ekranlı geliştirme kartımın ekranı kırıldı ve çalışmıyor.Aynı ekranı nasıl tedarik edebilirim?

 

Merhaba,

Bahsettiğiniz ekran, STM32F746-DISCO için özelleştirilmiş bir ürün. Üretici firma (Rocktech) ile iletişime geçebilirsiniz.

+-

Okulumuzda PIC18K üzerine eğitim alıyoruz ama önümüzdeki dönem arm mimarisinde kodlama almayı düşünüyorum.Hangi alanda çalışmak daha geleceğe yönelik bir yatırım olur ve bu iki mikrokontrolcü arasındaki temel farklar nelerdir

 

Şahsi fikrimi soracak olursanız ARM geleceğin PIC ise eskisi en iyisi kafası ile inatla öğretilmeye çalışan modası geçmiş bir mikrokontrolcü serisidir.ARM mimarisi ile üretilen mikrokontrolcüler bu denli etrafımızı sarmışken bunun aksi yönde yol almanın kimseye mesleki olarak katkıda bulunacağını düşünmüyorum. Gökhan Taşdemir’in youtube kanalında bu konuda söyleşiler var incelemenizi tavsiye ederim.Buna ek olarak genel farkları kavrayabilmeniz için birkaç link de ekliyorum.

https://www.microchip.com/forums/m/tm.aspx?m=621524&p=1

https://www.google.com/amp/s/www.geeksforgeeks.org/difference-between-pic-and-arm/amp/

https://www.google.com/amp/s/www.edaboard.com/threads/what-is-the-difference-between-arm-and-pic-processor.160234/%3famp=1

+-

Merhaba efendim. Adım Hüseyin. Öncelikle şükürler olsun ki bu işle uğraşan kendi vatanımdan birilerini buldum. Elektrik ve Elektronik Mühendisliği’nden yeni mezun oldum ve radyo frekansı spektrumlarının devreleriyle uğraşmayı seviyorum. Bu yüzden Thz Görüntüleme Sistemi yapmak istiyorum ve sokak kameralarına montaj etmek istiyorum. Bunu yapabilirsem, tüm güvenlik servislerine suçluların yakalanması konusunda yardımcı olacaktır. Ama elimde 50 Ghz – 100 Ghz frekans kaynakları, alıcılar ve yazılım yok. Bu dalgaların uzun mesafelerde yayılmasından ve yansımasından nasıl bilgi elde edildiğini ve bu bilgilerin görüntü bazında nasıl geliştirildiğini görmek istiyorum. Bana yardım eder misiniz? Çünkü uyumak istemiyorum, zamanımı boşa harcamak istemiyorum. Eğer elinizde varsa ve kullanılmaz durumunda değerlendirebileceğiniz Thz Radyasyon Kaynağı – Alıcı – Tarayıcı – yazılım ve çalışma mantıklarını anlatan döküman varsa paylaşır mısınız?

 

http://acikkaynak.bilecik.edu.tr/xmlui/bitstream/handle/11552/225/10045151.pdf?sequence=1&isAllowed=y       Bu konu ile ilgili elimdeki tek döküman bu.Umarım yardımcı olur.

+-

Arduinoda Real Time Clock ile kesme yapmak istiyorum Buna uygun bildiğiniz RTC modülü var mı

 

DS3231 modülü ile SQW pininden interrupt uygulamaları yapabilirsin Datasheet: https://datasheets.maximintegrated.com/en/ds/DS3231.pdf

+-

Eskiden kalma işlecilerimin software düzeltmek istiyorum ama programı içeren cd bozulmuş.

 

Öncelikle, genel bir hatırlatma olarak, ST7 serisinin eski bir ürün grubu olduğunu ve yeni tasarımlar için tavsiye edilmediğini, 8 bitlik yeni işlemci ihtiyaçları için STM8 serisinin önerildiğini ifade etmek istemekle birlikte, ST7 işlemciler için geliştirme ortamı olarak ihtiyacınız olan toolset ve kütüphane linklerini aşağıda paylaşıyorum:

1- IDE – ST Visual Develop

STVD-STM8 – ST Visual develop IDE for developing ST7 and STM8 applications – STMicroelectronics

2- STVD IDE’ye entegre olarak kullanılacak Compiler – Cosmic (4K code size limitli)

(IDE ile compiler entegrasyonu için bir şey yapmanız gerekmiyor. İkisini de indirip kurun. STVD ile yeni bir workspace ve proje oluşturup, proje ayarlarında toolchain olarak Cosmic compilerı seçin. STVD detaylı kullanım bilgisi için STVD user manuale bakabilirsiniz)

https://www.cosmicsoftware.com/cxst7_4k.exe

3- STVD User Manual (Gerektiğinde bakabilirsiniz)

https://www.st.com/resource/en/user_manual/um0036-st-visual-develop-stvd–stmicroelectronics.pdf

4- ST7 Software Library

STSW-ST7066 – ST7 Software Library – STMicroelectronics

5- ST7 Software Examples

STSW-ST7065 – ST7 Software Examples – STMicroelectronics

6- ST7 serisi için sunulan tüm software paketleri için ise aşağıdaki linkten MCU & MPU Embedded Software kısmına tıklayabilirsiniz:

ST7 8-bit MCUs – STMicroelectronics

Umarım ihtyiacınızı karşılar…

+-

Merhaba

STM32F0 ile yazılmış bir projeyi G0 serisine dönüştürüyorum. Flash yazmadan önce yaptığım silme fonksiyonunda hata alıyorum. Flash adresim program kodlarının gömüldüğü kısımdan çok uzakta. Yardımlarınız bekliyorum, nerede hata yapıyorum ?

Kodlar;

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
int flash_par_adr1[ParSize] __attribute__((at(0x0800F000)));    // 4096 Byte =4KB
int flash_par_adr2[ParSize] __attribute__((at(0x0800E000)));    // 4096 Byte =4KB
 //_____________________________________________________________________________ SaveParamToFlash
HAL_StatusTypeDef SaveParamToFlash(int page)
{
uint32_t tFlashAddress  = 0x00;
uint32_t tParAddress        = 0x00;
FLASH_EraseInitTypeDef  FLASH_EraseInit;
uint32_t                                PageError;
HAL_StatusTypeDef               feedback;
   if(page == 0)
  FlashAddress= (uint32_t)&flash_par_adr1;
 else
  FlashAddress= (uint32_t)&flash_par_adr2;
 /* Erase the FLASH pages */  
 ParAddress    = (uint32_t)&PAR;
 EndAddress    = ParAddress + ParSize;
 NbrOfPage     = (EndAddress - ParAddress) / FLASH_PAGE_SIZE + 1;
   FLASH_EraseInit.TypeErase     = FLASH_TYPEERASE_PAGES;
 //FLASH_EraseInit.Banks               = 0x00;
 FLASH_EraseInit.Page        = FlashAddress;
 FLASH_EraseInit.NbPages           = NbrOfPage;
 HAL_FLASH_Unlock();
  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_MISERR | FLASH_FLAG_PGSERR | FLASH_FLAG_FASTERR);
    feedback = HAL_FLASHEx_Erase(&FLASH_EraseInit,&PageError);
 HAL_FLASH_Lock();
 if(feedback != HAL_OK)
  return(feedback);
 /* Program the user Flash area word by word*/
 tFlashAddress = FlashAddress;
 tParAddress       = ParAddress;
 HAL_FLASH_Unlock();
 while ((tParAddress < EndAddress) && (feedback == 0))
 {
  feedback = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FAST,tFlashAddress, *(__IO uint32_t *)tParAddress);
  if(feedback != HAL_OK)
   return(feedback);
  tFlashAddress   = tFlashAddress + 4;
  tParAddress     = tParAddress + 4;
 }
 HAL_FLASH_Lock();
  /* Check if the programmed data is OK */
 tFlashAddress = FlashAddress;
 tParAddress       = ParAddress;
  while ((tParAddress < EndAddress) && (feedback == 0))
  {
    if (*(__IO uint32_t *)tParAddress   != *(__IO uint32_t *)tFlashAddress)
    {
   feedback = HAL_ERROR;
    }
     tFlashAddress = tFlashAddress + 4;
  tParAddress     = tParAddress + 4;
  }
 return(feedback);
}

 

Debug esnasında aldığım görseller;

//————-Program hafızam

//————-Erase işleminden sonra aldığım hata bayrakları

//———-Bu da yazma silme parametrelerimin Watch’taki görüntüsü

 

Merhaba,

STM32G0 serisinde flash yazma ve silme işlemleri STM32F0 serisinden biraz farklı.

STM32G0 FW paketi içindeki örnek uygulamalar işinize yarayacaktır:

C:Users…STM32CubeRepositorySTM32Cube_FW_G0_V1.5.0ProjectsNUCLEO-G031K8ExamplesFLASHFLASH_EraseProgram

İyi çalışmalar

+-

Öncelikle merhabalar.Halihazırda 2 yıldır uğraştığım projemin bitiş aşamasına gelmesiyle birlikte seri üretim planlamalarına başlamış bulunmaktayım.Ancak anakartında Atmega328p ve Esp12-F mikrokontrolcü içeren projem için uygun bir cloud sistemi bulamıyorum.Sensörlerden gelen verilerin gerek kullanıcıya aktarılması gerekse cloud ortamında depolanması gerekiyor ve bu konu ile alakalı internetteki çözümler şahsi projelerle günü kurtarmak için üretilen bir takım çözümler.Mass-production kapsamında bir prototipi ele aldığımızda bu sorun için çözümleriniz nelerdir

http://www.cloudino.io/    iletişim bölümünden özel olarak mail atarsanız size özel bir servis verebiliyorlar diye duymuştum

 

Merhaba,

Empa Teknoloji şirketimizin geliştirdiği, Amazon Web Services (AWS) altyapısını kullanan empacloud ile IoT projelerinizin cloud tarafı için düşük maliyetli ve profesyonel destek alabilirsiniz.

http://empacloud.com/

+-

CubeMX,Mbed OS,Keil gibi bir çok platformda STM32 kartları programlamayı öğreten
giriş seviyesinde bildiğiniz yazılı kaynak var mı??

 

Merhaba,

STM32’yi yeni öğrenmeye başlayanlar, burada paylaşacağım, öğrenme sürecini basitleştirip hızlandırmak için hazırlanmış olan STM32Cube ile ilgili workshop notlarını kullanabilirler. Zaten bu ekosistem, halihazırda en yaygın olarak kullanılan geliştirme ortamıdır.

Bunun yanında, uzman geliştiriciler için, farklı konularla ilgili daha detaylı eğitimlere ait linkleri de paylaşacağım.

STM32 ile proje geliştirmeye başlamak için:

1- STM32CubeMX konfigürasyon ve başlangıç kodu üretme arayüzünü indirip kurun:

STM32CubeMX – STM32Cube initialization code generator – STMicroelectronics

2- IDE ve compiler olarak, en yaygın kullanılan ortamlar ise şu şekildedir: 32K code size ya da süre kısıtlamalı sürümleri bulunabilen Keil MDK-ARM, IAR EWARM gibi seçeneklerin yanında ST’nin tamamen ücretsiz olarak sunmuş olduğu Eclipse ve GCC tabanlı STM32CubeIDE. Ayrıca, Keil‘in ST ile arasındaki anlaşmaya binaen ST‘nin Cortex-M0/M0+ çekirdekli ürünleri (STM32F0/G0/L0, BlueNRG-1/2/LP) için ücretsiz bir sürümü olduğunu da belirtmek isterim. Bunların dışında farklı IDE seçenekleri bulmak elbette mümkün olmakla birlikte ben, yukarıda da ifade ettiğim gibi, en yaygın kullanılanları listeledim. Tercihinize göre, bu toolchain seçeneklerinden birini indirip kurun. Cortex-M0/M0+ ile başlamayacaksanız, ben, ücretsiz olan STM32CubeIDE’yi öneririm.

STM32CubeIDE:

STM32CubeIDE – Integrated Development Environment for STM32 – STMicroelectronics

Keil MDK-ARM, ST Cortex-M0/M0+ için ücretsiz versiyon:

MDK for STM32F0/G0/L0 and BlueNRG-1/2/LP – Installation & Activation (keil.com)

3- STM32Cube driver paketi, diğer bilinen adıyla, HAL driverları ve içerisinde gelen LL (Low-Layer) API. (Yeni başlayanlar için, aşağıda paylaşacağım eğitim notlarında da olduğu gibi, HAL driver API kullanımını öneririm.) İlgili STM32 serisine ait driverı aşağıdaki linkten manuel olarak indirebileceğiniz gibi, STM32CubeMX -> Help -> Manage embedded software packages menüsü altından direkt olarak ta indirebilirsiniz ki bu yöntemi izlemenizi öneririm. (Bu yolla, indirmiş olduğunuz driver dosyaları, STM32CubeMX -> Help -> Updater Settings menüsünde belirtilen Repository Folder alanına inmiş olacaktır.)

HAL/LL Driverları manuel indirme linki: (tercih edilmeyen yöntem)

STM32Cube Development Software – STM32 Open Development Environment – STMicroelectronics

4- Başlangıç için ayrıca, elinizde kendi tasarlamış olduğunuz bir kart yoksa, tercih edeceğiniz STM32 serisine uygun, ucuz yollu bir nucleo ya da biraz daha özelleşmiş seçenekler sunabilen discovery kit temin etmeniz gerekecektir.

STM32 Nucleo Boards – STMicroelectronics

STM32 Discovery Kits – STMicroelectronics

5- Temel Eğitim Notları:

Aşağıdaki linkte, yıllar içerisinde yapılmış olan çeşitli STM32 workshoplarına ait eğitim notları yer almaktadır:

STM32 – Google Drive

(Linkte yer alan tüm zipli dosyaların şifresi : stm32)

Yeni başlayanlar için birinci öncelikle, linkte yer alan STM32Cube_Training isimli eğitim notları içerisinde bulacağınız STM32CubeMX_Hands_on isimli dosyadaki basit uygulamalar üzerinden gitmekte fayda var. Zipli dosyada yer alan STM32Cube presentation isimli diğer dosya ise HAL driverlarını yapısını ve içerisinde kullanılan handle mantığını kısaca anlatan teorik içerikli bir sunumdur ki ilk etapta buna bakmanıza çok gerek yok. Hands on adı altında verilen uygulamalar ile sıfırdan STM32 programlamayı öğrenmenin ne kadar basit ve hızlı olduğunu göreceğinize inanıyorum. Bu basit uygulamarı lego blokları gibi bir araya getirip oldukça hızlı şekilde basit projeler ortaya çıkarabilecek seviyeye gelebilirsiniz. Pratik uygulamalarla temel mantığı kavradıktan sonra diğer teorik dosyaya, çok fazla detaya takılmadan bir göz atmanızda fayda var.

Bu aşamada, kod yazımı safhasında ise yine, HAL driverlarına ait döküman ya da datasheet/reference manual kullanma gereksinimini en aza indirecek bir ipucu vereyim:

Unutmayın ki, HAL driverlarında tüm API fonksiyonlarıHAL_PeripheralName ile başlar!

Diyelim ki, STM32CubeMX üzerinden projeyi ve ilk konfigürasyona ait başlangıç kodunu oluşturdunuz ve kullanmış olduğunuz IDE ile projeyi açtınız, ilk olarak bir kez projeyi derleyip (build) sorunsuz derlendiğini görün. Sonrasında ise kullanmak istediğiniz peripheral (birim) ile ilgili, HAL driverlarının sunmuş olduğu API fonkisyonlarının, vs. listesini görmek için,

yukarıda belirttiğim HAL_PeripheralName ifadesini yazdıktan sonra CTRL + Space tuşlarına basın.

Örneğin, HAL_ADC sonrasında ise CTRL + Space gibi.

Bu şekilde, IDE ortamı, size HAL driverlarının ilgili peripheral (birim) için sunmuş olduğu API fonksiyonlarını ve diğer tanımlamaları listeleyecek ve fonksiyonlar için anlaşılır isimler kullanılması sayesinde, çoğu zaman dökümanda aramanıza gerek kalmadan siz gerçekleştirmek istediğiniz fonksiyonu listeden seçerek, kullanabileceksiniz.

Örneğin,

HAL_ADC_Start

HAL_GPIO_TogglePin

gibi.

Aynı yöntemi, fonksiyonların parametrelerini (örn. GPIOA, GPIO_PIN_0) girerken de kullanabilirsiniz. Ancak fonksiyon ismini yazıp ilk parantezi açtığınızda, “HAL_GPIO_TogglePin(“ gibi, genellikle IDEler CTRL + Space tuşlarına basmanıza gerek kalmadan size parametre önerisinde bulunuyor zaten. Ve devamında birkaç harf ile önerilen parametreyi yazmaya başladığınızda listelenen seçeekler daha da şekiileniyor.

Örneğin,

HAL_GPIO_TogglePin(gpi” yazdığınızda listede “GPIOA” şeklinde port isimleri belirebiliyor ve siz de döküman okumanıza gerek kalmadan kodu tamamlayabiliyorsunuz.

Parametreleri döküman aramaksızın doldurabilmek için diğer bir yöntem ise, yazmış olduğunuz fonksiyon ya da parametre (örn. HAL_GPIO_TogglePin) üzerine çift tıklayıp seçmek ve sonra seçili alana sağ tıklayıp, çıkan pop-up menüden “Go To Definition” (IDEye göre, “Go To Declaration” gibi değişiklik gösterebilir) seçeneği ile ilgili driver dosyasında ilgili fonksiyon ya da parametrenin tanımlı olduğu bölüme atlamak ve orada yer alan fonksiyon ve parametre tanımlamalarının üzerlerinde ya da yanlarında commentlenmiş olarak verilen tanımlamalara bakarak olası parametreleri bulmaktır.

Örneğin:

/**
* @brief Toggles the specified GPIO pins.
* @param GPIOx Where x can be (A..K) to select the GPIO peripheral for STM32F429X device or
* x can be (A..I) to select the GPIO peripheral for STM32F40XX and STM32F427X devices.
* @param GPIO_Pin Specifies the pins to be toggled.
* @retval None
*/
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

Bu şekilde, anlamlı yerleri seçip üzerlerine sağ tıklayarak “Go To Definition” seçeneği ile ilgili tanımlamalara ve doğru syntaxa ulaşmanız mümkündür.

İkinci olarak, yukarıda vermiş olduğum google drive linkinde yer alan STM32_Ecosystem_Workshop isimli eğitim notuna da kısaca bir göz gezdirip, ilginizi çeken bölümleri inceleyebilirsiniz. (Bu eğitimde STM32CubeIDE’nin eski versiyonu diyebileceğimiz, yine Eclipse tabanlı AC6 ya da OpenSTM32 isimli IDE kullanılmıştır. Arayüz olarak STM32CubeIDE ile aynı denebilir. Siz STM32CubeIDE ile takip edebilirsiniz.)

6- STM32 MOOCs (ST’nin, ücretsiz, online eğitim videoları)

Yine yukarıda sunum olarak vermiş olduğum, STM32CubeMX & CubeHAL temel eğitimini buradan da takip edebilirsiniz:

STM32CubeMX & CubeHAL basics MOOC – STMicroelectronics

İçerisinden igili video linklerine de ulaşabileceğiniz tüm online eğitim konularının listesi

STM32 MOOCs (Massive Open Online Courses) – STMicroelectronics

Biraz uzun yazdım, ancak mümkün olduğunca, konuları adım adım listelemeye ve önemli noktaları koyu yazarak belirginleştirmeye, yani bir nevi, kaynak listesini sıralı bir şekilde özetlemeye de çalıştım. Umarım bu bilgiler, yeni başlayanlar ya da belirli konularda eğitim ihtiyacı olanlar için açıklayıcı ve faydalı olur.

Tüm ilgili arkadaşlara çalışmalarında başarılar dilerim!

+-

Merhaba.

Empa’nın AWS IoT partneri olduğunu biliyoruz. AWS kapsamında ML desteği de veriyor musunuz?

Teşekkürler.

 

Merhabalar.

Evet. Empa, yaklaşık 2 yıl önce kurduğu Yapay Zeka ekibi ile birlikte resmi distribütörlüğünü yaptığı komponent üreticilerinin (Xilinx, ST v.b.) yanı sıra AWS’in de ilgili çözümü SageMaker için destek vermekte ve bu alanlarda farklı projeler yürütmektedir. ML çözümü arayışında olan firmalar uygulama bağımsız olarak bizimle AI@empa.com adresinden iletişime geçebilirler.

Teşekkürler, sağlıklı günler…

+-

STM32 öğrenmek için STM32cubeIDE yüklemek istedim fakat yükleme başlangıcında bu hatayı aldım ve internet üzerinde nerdeyse hiçbir yerde bu hataya raslamadım.Bazı çin sitelerinde vardı fakat onlarda da çok açıklayıcı şekilde bir anlatım yapılmamış.Bu sorunu nasıl çözebilirim bir fikri olan varsa çözümü yazarsa sevinirim.

 

Windows ile ilgili bir hata gibi görünüyor. Başka programları yüklerken de bu uyarıyı alanlar olduğunu gördüm.

ST Community sayfasında bir öneri var:

https://community.st.com/s/question/0D53W00000Jl45kSAB/stm32cubeide-install-error

+-

Daha önce sıkıntısız şekilde yapılan debug işlemini bugün STM32 CubeIDE programı üzerinden yapılamıyor.
Debug tuşuna basıldığı zaman ilerleme %0 olarak görünüyor.
Progress kısmında Launching: Performing pre-launch check… olarak gösteriyor.
Bu problemi nasıl çözebilirim? şimdiden teşekkürler.

 

Eclipse kaynaklı bir hata olmalı. STM32CubeIDE’yi yeniden kurmayı denediniz mi?

+-

Merhaba.

Pratik tecrübelerinize dayanarak “Feature Extraction” mantığını ve nasıl uygulanması gerektiğini mümkünse bir örnekle kısaca açıklayabilir misiniz?

Teşekkür ederim.

 

Merhabalar

“Feature Extraction (Özellik Çıkarımı) ” kısaca sisteme verilen girdilerin bütün bir bilgi olarak tutulması yerine bu bilgiyi oluşturuan özelliklerden sadece bazılarının çıkarılması ve sistemin bu yeni çıkartılan özellikler üzerinden kurulması durumudur. Bu işlem aynı zamanda bir boyut azaltma işlemidir, yani karmaşık olan bir verinin boyutları azaltılarak daha basit bit probleme dönüştürülür. Örneğin, birkaç resim içerisinde deniz bulunan alanların tespit edilmesi isteniyorsa; sisteme giren bir resmin tamamının işlenmesi yerine resmin histogramının işlenmesi bu duruma bir örnek olabilir. Çünkü mavi renk tonunun ağırlıkta olduğu yerlerin deniz içermesi ihtimali yüksektir.

Feature Extraction işlemi görüntü işlemede çeşitli filtreler aracılığı ile yapılır. Örneğin konvolüsyon tabanlı bir yapay sinir ağında girdiler çeşitli filtreler ile çarpılarak boyut arttırma ve azaltma işlemine tabi tutulur ve bu sayede özellik çıkarımı gerçekleşmiş olur.

1 2

FOR YOUR QUESTIONS