Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: Karamel - 21 Aralık 2014, 19:47:16

Başlık: STM32CubeMX ten hic birsey anlamadim
Gönderen: Karamel - 21 Aralık 2014, 19:47:16
merhaba. st nin cubex ini indirdim. kurdum. librarylerini update ettim. soyle bir kurcaladim ama tam olarak nasil calistigini anlayamadim. anlayamamin sebebi birazda keil bilmedigimden oldu sanirim. bu programin librarleri ekleyerek bizim isimizi kolaylastiriyor herhalde? basitce compile ettim code cikartti ama keil(keil 5) icin bir dosya uretmedi. zaten dosyayi cikartirkende dosya uretildi ama bir hata olustu diyor. cubex i yazin ogrenmek istiyorum. hocalarim nereden ogrenmemi tavsiye ederler?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Gökhan BEKEN - 21 Aralık 2014, 19:57:33
Sadece kod üretmiyor, devrenin çektiği akımı felan hesaplayabiliyorsun. Clock konfigrasyonunu daha kolay yapıyorsun.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Mucit23 - 21 Aralık 2014, 20:03:02
Cubemx ile uğraşmadan önce keili iyice öğren.  Ayrıca cubemx olmadan std library ile 3-4 proje yap. Özellikle std library nin yapısını iyice öğrenmeni tavsiye ediyorum. 
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Karamel - 21 Aralık 2014, 20:37:04
guzel bir user manual i varmis. yazin ben bunu okur. hocalarima sorularda sorarak cozerim bu cubemx i ::)
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: mistek - 21 Aralık 2014, 20:47:39
Şuan indirdiğim CubeMX, ST nin HAL library kullanarak kod üretiyor. Standard library kullanmasını isteyebiliyor muyuz?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: CoşkuN - 21 Aralık 2014, 21:29:18
Alıntı yapılan: mistek - 21 Aralık 2014, 20:47:39
Şuan indirdiğim CubeMX, ST nin HAL library kullanarak kod üretiyor. Standard library kullanmasını isteyebiliyor muyuz?
Artık eski std library'leri desteklenmiyor sanırım. Yeni HAL kütüphanelerinde kod üretiyor CubeMx. HAL desteği gelmeyen bir tek STM32F100 serisi kaldı o da yakında çıkacak diyorlardı.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: ArifAhmet - 21 Aralık 2014, 22:25:44
Hocam ufak bir giriş niteliğinde yazı yazmıştım, bakabilirsin belki yardımı dokunur;
http://birkodyaz.blogspot.com.tr/2014/09/stm32-cubemx_14.html (http://birkodyaz.blogspot.com.tr/2014/09/stm32-cubemx_14.html)

mesaj birleştirme:: 21 Aralık 2014, 22:26:24

Evet hocam, artık std library'e destek gelmiyor malesef. HAL'e alışamadım bir türlü.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Karamel - 21 Aralık 2014, 22:41:45
hocam tesekkur ederim. kodlarin okunmasi biraz karisik ama olsun. cok kolay bir sekilde microcontroller i calisma sartlarina hazirliyor. bu arada hocam ben comple edince(keil modu secili) code olusturuldu ama bir takim sorunlar olustu diyor. acaba bilgisayarimda keil 4.73 kurulu değil diyemi boyle bir hata veriyor?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: mistek - 22 Aralık 2014, 00:23:35
Alıntı yapılan: CoşkuN - 21 Aralık 2014, 21:29:18
Artık eski std library'leri desteklenmiyor sanırım. Yeni HAL kütüphanelerinde kod üretiyor CubeMx. HAL desteği gelmeyen bir tek STM32F100 serisi kaldı o da yakında çıkacak diyorlardı.

Standard library desteği kesilmesi kötü olmuş okadar da alışmıştık.
HAL library öğrenmeye başlayalım...
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Burak B - 22 Aralık 2014, 01:03:22
CMSIS öğrenmeye başlasanız daha doğru olur. ARM, CMSIS standartlarını iyice oturtmaya başladı. Zira ST'nin yaptığı da bu. Basitçe CMSIS-Driver uyumlu HAL desteği vermeye başladı. Zaten verdiği FreeRTOS desteği de aslında CMSIS-OS uyumluluğu içeriyor.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: X-Fi - 22 Aralık 2014, 11:15:13
Yeni arm öğrenecek arkadaşların hevesini kırmak için söylemiyorum ama CubeMx ile led yakıp söndirmekten başka proje yapılmaz.

Stdlibrary desteği bitmesi de nedemekmiş Zaten açık kaynak kodlu salt okunur bir kütüpane yapmışlar daha ne desteği bekliyorsunuz ki.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Karamel - 22 Aralık 2014, 13:52:48
Hocam neden boyle dusunuyorsunuz?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: oyaz - 22 Aralık 2014, 17:06:55
Bende merak ettim?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: yamak - 22 Aralık 2014, 17:45:38
CubeMx ile zaten proje yapılmaz.Sadece projenin iskeleti oluşturulur.Gerisini programcı yazar.Küç projelerde,eğer HAL kullanıyosanız sizi en başta hal kütüphaneleri toparlamaktan kurtarır.Ayrıca clock ayarları vs otomatik yapar.Büyük projelerde kod üretme kısmı bana göre de gereksiz.Zaten projeyi hazırlamaya harcanacak süre toplam proje süresinin çok az bi kısmını kaplıyo.Ayrıca tüm projeye hakim olmak açısından bana göre ters.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: oyaz - 22 Aralık 2014, 20:37:28
Benim kafam karıştı açıkçası. STM32 ile ticari ve nispeten büyük projeler yapacak birine STD Library mi HAL Library mi kullanmayı önerirsiniz?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: yamak - 22 Aralık 2014, 23:49:32
Hocam bildiğim kadarıyla bundan sonra HAL kullanılacak.Std perip. librariler birbirleriyle tam uyumlu olmadığı için adamlar HAL i geliştirdiler ve bundan sonra HAL ile devam edecekler diye biliyorum.HAL aslında daha kullanışlı weak fonksiyonlar falan yazmış adamlar.Ama HAL in de bazı sıkıntıları var ilerde düzelteceklerini söylediler.Mesela Systick timer ı direk kendi kullandığı için RTOS kullanırken biraz sıkıntı oluyo.Tüm HAL i systick timer larından arındırmak gerekiyo fakat bu da bazı sorunlara yol açıyo.Adamlar pek önermiyo.Ya da os kullanırken system tick timerdan başka bi timer ın kullanmak gerekiyo.Ya da os systick handler ınını hook u varsa hook da kullanılabilir ama bu her rtos da olmuyo.St neden böyle bi saçmalık yaptı hala anlamış değilim.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: oyaz - 22 Aralık 2014, 23:55:19
Anladım hocam, daha tam oturmamış gibi dursa da yeni projeleri HAL ile yapmak mantıklı olacaktır. Teşekkürler.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: yamak - 23 Aralık 2014, 00:24:36
Yani hocam adamlar bundan sonra hal i destekleyeceklerini söylüyolar.Ama std perip library de kullanılabilir neticede adamlar tüm peripheralları destekleyecek şekilde library yazmış.Fakat muhtemelen bundan sonra çıkacak micro lar için sadece HAL yazacaklar.Bu sebeple HAL e şimdiden alışmakta fayda var.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Karamel - 23 Aralık 2014, 00:28:57
hocam ben soyle birsey sormak istiyorum. bu hal libraryleri ile yada standart st libraryleri ile atiyorum spi yi hazirlayip ondan birseyler gonderecegimiz zaman. hazir fonksiyonlari cagirip. portu hazirlayip. sonrada gonderme falan yapiyoruz degilmi?

eger boyle ise. libraryler icin bahsettiginiz sorunlari tam olarak anlayamadim.....  :-\
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: yamak - 23 Aralık 2014, 08:05:59
Hocam hangi sorunlardan bahsediyosunuz.Çok büyük bi sorun yok aslında.HAL systick i default olarak kullanılıyor.Bi şekilde HAL systick ten arındırmak gerekiyo.Yad RTOS u timer ını başka bi timer yapmak gerekiyo.Fakat bu iyi bi yöntem değil.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Burak B - 23 Aralık 2014, 10:56:44
    @yamak'ın bahsettiği sorun şu CubeMX ile FreeRTOS seçeneğini aktif edip kod ürettiğinizde kod derleniyor ama çalışmıyor(du). Buradaki çalışmamaktan kasıt  RTOS schedulerin başlamadan kilitleniyor olması ve sistemin iş göremez hale gelmesi. Bunun sebebi de daha OS scheduler başlamadan systick içerisinde xPortSysTickHandler() ile işlem yapılmaya çalışılması. Bunu basit bir düzenleme ile aşmak mümkün. FreeRTOS ile tickless olarak çalışılabiliyor. Bu genelde low power sistemler için tercih edilen bir method. Yani systick çok büyük bir sorun değil. Bundan daha büyük sorunlar Ethernet, SDIO, DMA gibi kısımlarda daha çok ön plana çıkıyor.

     Benim kişisel görüşüm önceki mesjaımda da belirttiğim gibi. CMSIS uyumluluğu adına eski librarylerden çok daha esnek olduğu yönünde. Dökümantasyon çok çok daha iyi. Blocking, Non-Blocking(IT, DMA) fonksiyonlar ile esneklik daha da artırılmış. Yine CMSIS-Driver uyumlu olarak çevre donanımları(SPI,ADC,DMA,UART, ...) ile ilgili işlemler sürücü nesneleri üzerinden kontrol edilerek hem RAW(barebone) hem de RTOS ortamlar için daha düzgün bir zemin hazırlanmış.

    STM32F1 desteği daha uzun süre gelmeyebilir. Gelirse ne âlâ.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: CoşkuN - 23 Aralık 2014, 11:25:00
ST'nin forumunda Cube MX'de STM32F1 desteğinin Ocakta çıkacağı söylenmiş:
"STM32CubeMX clock configuration,  power consumption calculator and code generation for STM32F1 series is planned to be released next January."
https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32Java/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2FSTM32Java%2FHow%20will%20it%20support%20STM32F1%20in%20STMCubeMX&FolderCTID=0x01200200770978C69A1141439FE559EB459D758000F9A0E3A95BA69146A17C2E80209ADC21&currentviews=86
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: yamak - 23 Aralık 2014, 11:55:49
Alıntı yapılan: Burak BAYRAK - 23 Aralık 2014, 10:56:44
    @yamak'ın bahsettiği sorun şu CubeMX ile FreeRTOS seçeneğini aktif edip kod ürettiğinizde kod derleniyor ama çalışmıyor(du). Buradaki çalışmamaktan kasıt  RTOS schedulerin başlamadan kilitleniyor olması ve sistemin iş göremez hale gelmesi. Bunun sebebi de daha OS scheduler başlamadan systick içerisinde xPortSysTickHandler() ile işlem yapılmaya çalışılması. Bunu basit bir düzenleme ile aşmak mümkün. FreeRTOS ile tickless olarak çalışılabiliyor. Bu genelde low power sistemler için tercih edilen bir method. Yani systick çok büyük bir sorun değil. Bundan daha büyük sorunlar Ethernet, SDIO, DMA gibi kısımlarda daha çok ön plana çıkıyor.

     Benim kişisel görüşüm önceki mesjaımda da belirttiğim gibi. CMSIS uyumluluğu adına eski librarylerden çok daha esnek olduğu yönünde. Dökümantasyon çok çok daha iyi. Blocking, Non-Blocking(IT, DMA) fonksiyonlar ile esneklik daha da artırılmış. Yine CMSIS-Driver uyumlu olarak çevre donanımları(SPI,ADC,DMA,UART, ...) ile ilgili işlemler sürücü nesneleri üzerinden kontrol edilerek hem RAW(barebone) hem de RTOS ortamlar için daha düzgün bir zemin hazırlanmış.

    STM32F1 desteği daha uzun süre gelmeyebilir. Gelirse ne âlâ.
Hocam FreeRtos ta o şekilde yapılıp düzeltilebilir.Fakat örneğin rtx'te source kod bize direk verilmiyo ve SysTick_Handler Rtos'un core unda.Tamam direk core daki handler içinde değişiklikler yapılabilir fakat bu da ARM tarafından pek önerilen bişey değil.Ya da RTX in tick timer ı başka bir timer yapılabilir ama bu durumda da HAL'in timer'ının prioritiy'si RTOS'unkinden yüksek olmuş oluyo.Bu da pek hoş bi durum değil.Bence en güzeli HAL i System tick timer dan arındırmak.Bundan da daha iyisi St nin RTOS u göz önünde bulundurarak bi HAL yazması :)
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Burak B - 23 Aralık 2014, 13:48:12
@CoşkuN dikkatini çekerim "this January." dememiş "next January." demiş. Yani hani olsa da önümüzdeki aylarda çıksa ama sanmıyorum.

@yamak bu bahsettiğin durumda bir tasarım hatası zaten. CubeMX üzerinden gittiğimiz için kapalı kod RTOS' lar ile ilgili sorunlarına girmedim. Zaten şu anda CMSIS destekleyen RTOS sayısı pek fazla değil. Oturup wrapper modüller yazmak gerekiyor. Ayrıca HAL systick timer ile hangi noktada birleşik tam olarak ? Benim bildiğim kadarıyla systick RTOS için kullanılıyor birtek. HAL ile direkt bir ilişkisi yok.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: yamak - 23 Aralık 2014, 13:55:21
Hocam CubeMx den direk bir kod üretin.Direk it dosyasında kullanılıyor.Bir tick counter systick handler ın içinde artırılıyor.Ve bazı driverlar gettick şeklinde kullanılıyor.Direkt SysTick_Handler ın içindeki kodlar alınıp başka bir timer interrupt handlerının içine konulunca derleyici sorun çıkarmıyor.Ama büyük projelerde bu bi sorun çıkarır mı biliyorum?Ben sadece deneme amaçlı küçük bi proje üzerinde denedim.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Burak B - 23 Aralık 2014, 14:08:53
Alıntı yapılan: yamak - 23 Aralık 2014, 13:55:21
Hocam CubeMx den direk bir kod üretin.Direk it dosyasında kullanılıyor.Bir tick counter systick handler ın içinde artırılıyor.Ve bazı driverlar gettick şeklinde kullanılıyor.Direkt SysTick_Handler ın içindeki kodlar alınıp başka bir timer interrupt handlerının içine konulunca derleyici sorun çıkarmıyor.Ama büyük projelerde bu bi sorun çıkarır mı biliyorum?Ben sadece deneme amaçlı küçük bi proje üzerinde denedim.

Tamam işte ben deneyime dayanarak yazıyorum. :) Ben üst-orta ölçekli bir projede (SDIO,DAC,GSM,ETH,UART,v.b. donanımları aynı anda çalıştıran 50-100 cihazlık bir ortamda.) kullandığım için biliyorum. Systickten daha önemli sorunları var. Bahsettiğin sorun yukarıda söylediğim scheduler kontrolü v.s. dışında çok problem olmaz. Mesela ben kodlarken CubeMX' in ürettiği SDIO kodu beni çok yanıltıp zamanımı harcamıştı (1 hafta kadar). Bazı kısımlarını yeniden yazmam gerekti sonradan düzelttilerse bilmiyorum.

Aslında üzerinde çok konuşulacak bir konuda değil seve seve kullanacağız. ST böyle istiyor. :)
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: oyaz - 23 Aralık 2014, 17:12:38
Alıntı YapAslında üzerinde çok konuşulacak bir konuda değil seve seve kullanacağız. ST böyle istiyor. :)

Galiba öyle olacak hocam :)
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: oyaz - 12 Şubat 2015, 11:29:04
F1 Serisi içinde Cube desteği gelmiş.

http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/PF259242?sc=stm32cube (http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/PF259242?sc=stm32cube)
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Gökhan BEKEN - 20 Mart 2015, 14:22:35
@Burak BAYRAK hocam, bahsettiğiniz SDIO ile birlikte DMA kullanma sorununu ben de yaşıyorum, çözümünü nasıl yaptığınızı anlatırsanız memnun olurum.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Burak B - 20 Mart 2015, 14:39:18
Donanımın nedir ? Öncelikle donanımının doğru çalıştığından emin olman gerekiyor.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Gökhan BEKEN - 20 Mart 2015, 14:49:56
Stm32f429 discovery ile çalışıyorum, (SDIO'yu 4 bit kullanıyorum), file sistem kullanmıyorum sadece raw data yazıyorum, çünkü çok hızlı bir şekilde yazmam lazım.
Buffer'ım 120832 byte'lık,
60416 byte yazdıktan sonra, dma'ya al kardeş bunu sd karta yaz deyip, diğer yarıyı doldurmaya devam ediyorum, 2.yarıyı da doldurduktan sonra tekrar dma'ya al kardeş bunu da yaz diyorum
böylece sonsuz döngü içinde sırayla devam ediyor. Bu kadar byte'ı mümkün olduğu kadar yüksek hızda yazmam lazım. Maksimum 40ms-50ms gibi bir süre de bitirmem lazım.
DMA kullanmadan düzgün yazıyor, dma'yı aktif edip yazmaya çalıştığımda fonksiyon içindeki while'da takılı kalıyor.
Aynı kart üzerinde standart library ile sorun olmadan kullanıyorum aslında ama ben cube ile ürettiğim kod ile devam etmek istiyorum.

Teşekkürler.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Burak B - 20 Mart 2015, 16:50:22
Takıldığı yeri içeren dosyayı ve fonksiyonu söylermisin bir kontrol edeyim.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Gökhan BEKEN - 20 Mart 2015, 17:08:33
aşağıdaki kodlar main.c'nin
kodlarda sdSayac=0x8008*512; diye bir kısım var, o sd kart'ta yazmaya başlanacak kısım, sd kartı format atıp içine 100mb'lık bir dosya atıyorum, ve onun başlangıç adresi bu oluyor:0x8008*512;
/**
  ******************************************************************************
  * File Name          : main.c
  * Date               : 19/03/2015 18:25:06
  * Description        : Main program body
  ******************************************************************************
  *
  * COPYRIGHT(c) 2015 STMicroelectronics
  *
  * Redistribution and use in source and binary forms, with or without modification,
  * are permitted provided that the following conditions are met:
  *   1. Redistributions of source code must retain the above copyright notice,
  *      this list of conditions and the following disclaimer.
  *   2. Redistributions in binary form must reproduce the above copyright notice,
  *      this list of conditions and the following disclaimer in the documentation
  *      and/or other materials provided with the distribution.
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
  *      may be used to endorse or promote products derived from this software
  *      without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  ******************************************************************************
  */

/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_hal.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/
SD_HandleTypeDef hsd;
HAL_SD_CardInfoTypedef SDCardInfo;
DMA_HandleTypeDef hdma_sdio_tx;

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_SDIO_SD_Init(void);

/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* USER CODE BEGIN 0 */
unsigned int sdSayac=0x8008*512;
unsigned char tampon[120832]="denemek veya denememek";
/* USER CODE END 0 */

int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_SDIO_SD_Init();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* USER CODE BEGIN 3 */
  /* Infinite loop */


// HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13);
// HAL_SD_WriteBlocks(&hsd,(unsigned int*)&tampon[0],sdSayac,512,1); //bu sorunsuz çalışıyor(DMA'sız)
// HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_14);

unsigned int i=0;
for(i=0;i<60416;i+=10){
tampon[i+0]='<';
tampon[i+1]='A';
tampon[i+2]='b';
tampon[i+3]='c';
tampon[i+4]='d';
tampon[i+5]='e';
tampon[i+6]='f';
tampon[i+7]='g';
tampon[i+8]='h';
tampon[i+9]='>';
}


  while (1)
  {
// HAL_SD_WriteBlocks_DMA(&hsd,(unsigned int*)&tampon[0],sdSayac,512,1);
if(HAL_SD_WriteBlocks_DMA(&hsd,(unsigned int*)&tampon[0],sdSayac,512,1) == SD_OK)
{
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13);
if(HAL_SD_CheckWriteOperation(&hsd, 0xFFFFFFFF) == SD_OK){
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_14);
}
}
// HAL_SD_CheckWriteOperation(&hsd,0xFFFFFFF);
// HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_14);
   

  }


  /* USER CODE END 3 */

}

/** System Clock Configuration
*/
void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;

  __PWR_CLK_ENABLE();

  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 5;
  RCC_OscInitStruct.PLL.PLLN = 210;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 7;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1
                              |RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);

}

/* SDIO init function */
void MX_SDIO_SD_Init(void)
{

  hsd.Instance = SDIO;
  hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
  hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
  hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
  hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
  hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
  hsd.Init.ClockDiv = 0;
  HAL_SD_Init(&hsd, &SDCardInfo);

  HAL_SD_WideBusOperation_Config(&hsd, SDIO_BUS_WIDE_4B);

}

/**
  * Enable DMA controller clock
  */
void MX_DMA_Init(void)
{
  /* DMA controller clock enable */
  __DMA2_CLK_ENABLE();

  /* DMA interrupt init */
  HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 0, 0);
// HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);

}

/** Configure pins as
        * Analog
        * Input
        * Output
        * EVENT_OUT
        * EXTI
        * Free pins are configured automatically as Analog (this feature is enabled through
        * the Code Generation settings)
*/
void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct;

  /* GPIO Ports Clock Enable */
  __GPIOE_CLK_ENABLE();
  __GPIOC_CLK_ENABLE();
  __GPIOF_CLK_ENABLE();
  __GPIOH_CLK_ENABLE();
  __GPIOA_CLK_ENABLE();
  __GPIOB_CLK_ENABLE();
  __GPIOG_CLK_ENABLE();
  __GPIOD_CLK_ENABLE();

  /*Configure GPIO pins : PE2 PE3 PE4 PE5
                           PE6 PE7 PE8 PE9
                           PE10 PE11 PE12 PE13
                           PE14 PE15 PE0 PE1 */
  GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
                          |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9
                          |GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13
                          |GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

  /*Configure GPIO pins : PC13 PC14 PC15 PC0
                           PC1 PC2 PC3 PC4
                           PC5 PC6 PC7 */
  GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0
                          |GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4
                          |GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  /*Configure GPIO pins : PF0 PF1 PF2 PF3
                           PF4 PF5 PF6 PF7
                           PF8 PF9 PF10 PF11
                           PF12 PF13 PF14 PF15 */
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
                          |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
                          |GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
                          |GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

  /*Configure GPIO pin : PA0 */
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /*Configure GPIO pins : PA1 PA2 PA3 PA4
                           PA5 PA6 PA7 PA8
                           PA9 PA10 PA15 */
  GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4
                          |GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8
                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_15;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /*Configure GPIO pins : PB0 PB1 PB2 PB10
                           PB11 PB12 PB13 PB14
                           PB15 PB3 PB4 PB5
                           PB6 PB7 PB8 PB9 */
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10
                          |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
                          |GPIO_PIN_15|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
                          |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /*Configure GPIO pins : PG0 PG1 PG2 PG3
                           PG4 PG5 PG6 PG7
                           PG8 PG9 PG10 PG11
                           PG12 PG15 */
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
                          |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
                          |GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
                          |GPIO_PIN_12|GPIO_PIN_15;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);

  /*Configure GPIO pins : PD8 PD9 PD10 PD11
                           PD12 PD13 PD14 PD15
                           PD0 PD1 PD3 PD4
                           PD5 PD6 PD7 */
  GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
                          |GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15
                          |GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4
                          |GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

  /*Configure GPIO pins : PG13 PG14 */
  GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

#ifdef USE_FULL_ASSERT

/**
   * @brief Reports the name of the source file and the source line number
   * where the assert_param error has occurred.
   * @param file: pointer to the source file name
   * @param line: assert_param error line source number
   * @retval None
   */
void assert_failed(uint8_t* file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */

}

#endif

/**
  * @}
  */

/**
  * @}
*/

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Burak B - 20 Mart 2015, 19:18:13
IRQ yapılandırmanla ilgili bir sorun olabilir. ISR' lere kesme koyup bir gözlemle bakalım herşey yolunda mı ?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Burak B - 20 Mart 2015, 23:21:51
Ancak vakit bulabildim. Kodu inceledim  HAL_SD_DMA_RxErrorCallback ve HAL_SD_DMA_TxCpltCallback gibi weak callback fonksiyonları kullanmamışsın. Onları kullanman gerek. Böylece transfer işlemleri bittimi bitmedimi anlayabilirsin. Aksi halde bir transfer bitmeden bir diğerini başlatmış olursun ki bu durum DMA'nın hata vermesine ve kilitlenmesine sebep olur. Bunun için de bir callback mevcut. HAL içindeki bu callbackler sayesinde işlemi tekrarlamak yada tamamını sıfırlamak gibi seçeneklerin oluyor.

DMA non-block olduğu için HAL_SD_WriteBlocks_DMA ile veriyi yazdıktan sonra kod bekleme yapmaz SD_OK sadece gönderme işleminin başarılı olduğunu onaylıyor. Kısaca sonsuz loop içinde yapmaya çalıştığın şey doğru gelmedi bana.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Gökhan BEKEN - 20 Mart 2015, 23:36:49
Hocam dediğiniz doğru, sonsuz while içinde sürekli yaparsak saçmalar. Aslında döngü ile değil sadece 1 kere çağırıp denemiştim olmamıştı, sonra kod ile oynarken en son bu hali kalmış. Benim aslında, yazma işleminin bittiğine dair bir bilgiye ihtiyacım yok, bufferi dma'ya gönderip, diğer işlere geçiyorum, dma'nın yazma süresi benim diğer işlerimden daha kısa olduğu için, bir sonraki yazma kısmına geçtiğinde benim yazma işim çoktan bitmiş oluyor.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Karamel - 20 Mart 2015, 23:53:31
hocam ben cok kisa bir soru sorup ortadan kaybolmak istiyorum ::)

sanirim SDIO sd card i surmek icin kullanilan hardware birimi. peki spi dan farki ne? neden bunu kullaniyorda spi i kullanmiyorsunuz?

mesaj birleştirme:: 20 Mart 2015, 23:54:00

birde bununla yapilipta spi la yapilamayan(yada tam tersi) seyler neler?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Gökhan BEKEN - 20 Mart 2015, 23:59:28
SD kartı 2 türlü kullanabilirsin, biricisi SPI, diğeri SDIO,
spi seri iletişimdir, 1 clock, 1 data in, 1 dataout
sdio  paralel iletişim sağlar
1 byte'lık veri göndermek için sdio da 2 kere veri gönderirsin, çünkü her seferinde 4 bit gönderirsin, 4+4=8 byte
spi'da ise, her seferinde 1 bit gönderirsin, 8 adımda tamamlanır.
8/2=4 olduğundan sdio, spi'dan 4 kat daha hızlıdır.
Bana da çıkabileceğim en yüksek hız lazım.
Bu yüzden sdio kullanıyorum.
Nand bellek kullanmak da bir çözüm ancak, piyasada sdkart kadar geniş kapasiteli nand bulmak sorun ve nand'ı söküp bilgisayara takarak okumak hiç rahat olmaz.
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Karamel - 21 Mart 2015, 01:27:28
hocam peki SDIO ile kullanmada kutuphanelerde degisim gerektiriyormu?

yazin ben wav player yapmak istiyorum. hangi model baglantiyi onderirsiniz? kutuphaneler hangilerini destekliyorlar?
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Gökhan BEKEN - 21 Mart 2015, 14:22:29
SDIO dururken, SPI kullanmak iyi bir tercih değil.
Majerle diye bir adam var, onun kütüphanesinde fatfs veya spi desteği var. Kütüphanenin tanımlamalar kısmında spi'mı yoksa sdio'mu olduğunu belirtiyorsun, geriye kalan herşeyi kütüphane hallediyor. Normalde böyle bir destek yok tabiki, adam uğraşmış ikisini de yazmış.

https://github.com/MaJerle/stm32f429/tree/master/21-STM32F429_FATFS
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Karamel - 21 Mart 2015, 22:36:13
hocam anladigim kadari ile sd card biraz complex birsey ve bununla uygulama yapabilmek icin herkes bir yerlerden kutuphane bulup kullaniyor.(sanirim sadece z hocamiz kendi kutuphanesini yazmis?) peki hocam ben yazin stm32f103 kullansam SDIO icin ne yapacagim? birileri spi a gore yazmis olsa. onu duzenleyemem? degistiremem? SDIO icin yazilmis kutuphaneler varmidir ki?

birde hocam SPI connection ile ne yapiyorsak SDIO ilede yapabiliyoruz degilmi? mesela sd card icersinde txt olusturup. bir wav i okuyabiliriz ogle degilmi? eger bu sorularimin yaniti evet ise. yazin SDIO yu ogrenmek istiyorum......... ::)
Başlık: Ynt: STM32CubeMX ten hic birsey anlamadim
Gönderen: Tagli - 22 Mart 2015, 07:30:37
Hiç uğraşmadığım için kesin konuşamayacağım ama anladığım kadarıyla zor olan SD karttaki ham veriye ulaşmak değil, biçimlendirilmiş karttaki (mesela FAT32 gibi) dosyalara ulaşmak. Kütüphane, daha çok dosya sistemi ilke ilgili kısımda yardımcı oluyor tahminimce. İşlemci veya derleyici değiştirildiğinde, sadece ham veriye ulaşmak için gereken kod değiştirilse yeterli olur. Yani yazılım iki katmanlı: SD kart ham veri katmanı ve FAT32 dosya biçimi katmanı.