Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

STM32F103 SPI problem

Başlatan magnetron, 29 Ekim 2024, 15:46:40

magnetron

merhaba forum,

STM32F103 ile SPI uygulaması yapmaya çalışıyorum

Transmit yapıyor ama receive yapmıyor - slave cihazı henüz bağlamadım

neden yapmıyor ? işaretlediğim yerde 32 clock puls olması gerekmez mi ?

teşekkür


izturk

galiba araya ufak bi gecikme istiyor

ya da transmit işleminin bittiğini teyit edip ondan sonra receive işlemini başlatmak gerekiyor

magnetron

hocam zaten bu kütüphane rutini blocking yani işlem bitene kadar kontrolü bırakmayan türden

acaba slave IC yi bağlamadığım için mi olmuyor ? ( bağlamadan lojik analizörle hatasız bir protokolü görmek istiyorum entegreyi yakmamak için - bu kod CS5532 için yazılmış resetleme kısmı )

ama STM32 SPI slave takılı olup olmadığını nasıl anlayabilir ?

Mucit23

Transmit_Recieve Fonksiyonunu deneyebilirmisiniz?

papsukkal

SPI detayı hakkında bilgim yok. Biraz bakındım Slave cihazı seçmek için iki adet 8 bitlik zaman geçmesi gerekiyormuş sonra da adreslemeler datalar vs. Bu Slave seçmek için olan iki adet 8 bit olabilir mi?

Kaynak:
https://hakkikaplan.blogspot.com/p/stm32f407-spi-kullanimi-baz-sensorler.html?m=1

Tagli

SPI gönderme ve almayı aynı anda yapar. HAL fonksiyonları nasıl çalışıyor ve bunu nasıl organize ediyor bilmiyorum. Ancak hatırladığım kadarıyla adında interrupt veya DMA ifadesi geçmeyen fonksiyonlar işlem bitene kadar bloklanıyor, yani o satırda bekliyordu. Yani araya bekleme koymaya gerek olmamalı.

Alıntı yapılan: magnetron - 29 Ekim 2024, 20:11:01ama STM32 SPI slave takılı olup olmadığını nasıl anlayabilir ?
Anlayamaz. Bu ancak üst seviye protokolde gelmesi gereken veri ile alınan verinin uyuşmadığı bilinirse anlaşılabilir.
Gökçe Tağlıoğlu

magnetron

merhaba,

önce kendi hatamı anlatayım
debug yerine release build işaretli kalmış o yüzden nedense kodu en son bıraktığım şekliyle yükleyebiliyormuşum
yeni yaptığım düzeltmeleri yüklemiyormuş yeni bişey öğrendim bu sayede
tecrübe yediğin kazıkların toplamıymış 2 gün de öyle kaybettim

neyse şu anda en son halinde ben 4 byte SPI okuma komutu yazıyorum o 3 byte okuyor
chatgpt software CS yap dedi clock ayarlarını şöyle şöyle yap dedi onları da yaptım farketmedi

acaba bu blue pill klon olmasından mı kaynaklı

şu anki lojik analizör görüntüsünü ekliyorum

tavsiyeniz nedir , teşekkür

void ResetADC(void){
uint32_t resetcommand = 0x1 << 29 , RVbit = 0x1 << 28,
VRS = 0x1 << 25, resetbit =  0x0 ;
uint8_t write = 0x3 , read = 0xB ,receive[4];

uint8_t resetsequence[16]=    {0xFF, 0xFF, 0xFF, 0xFF,
                            0xFF, 0xFF, 0xFF, 0xFF,
                            0xFF, 0xFF, 0xFF, 0xFF,
                            0xFF, 0xFF, 0xFF, 0xFE};

    HAL_SPI_Transmit(&hspi1,resetsequence, 16, 1000);

    swap32(resetcommand);
    HAL_SPI_Transmit(&hspi1, &write , 1, 1000);
    HAL_SPI_Transmit(&hspi1, outbytes , 4, 1000);

Delay(200);

    swap32(resetbit);
        HAL_SPI_Transmit(&hspi1, &write , 1, 1000);
        HAL_SPI_Transmit(&hspi1, outbytes , 4, 1000);
        Delay(50);

    HAL_SPI_Transmit(&hspi1, &read , 1, 1000);
    Delay(50);
    HAL_SPI_Receive(&hspi1,receive,4,1000);