stm32f030r8 SPI çalışmıyor

Başlatan justice_for_all, 16 Haziran 2015, 08:40:14

MrDarK

Alıntı yapılan: justice_for_all - 17 Haziran 2015, 10:07:09
lojik analizörü bulamadım evde ama buda işyerinde osilaskopta baktım hocam clk mosi ve miso sinyallerini gördüm.DR de gelen datayı görebiliyorum onda sorun yok hocam.

Resimde gösterdiğim gibi bende gönderdiğim datayı göremiyorum DR'de, Yani koyduğun an shift registerdan çıkıyor sanırım. Resimde koyduğum zaten dikkat ettiysen dönüş değeriydi. Neyse geçmiş olsun :) Eepromun aynı yerine sürekli yazmamaya dikkat :)
Picproje Eğitim Gönüllüleri ~ MrDarK

justice_for_all

Aynı yerine sürekli yazılırsa ne olur hocam ? ???
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

MrDarK

Hocam ;

Eepromun ve Flash hafızaların yazılıp silinme ömürü var bildiğiniz üzere, üreticiden üreticiye değişmek üzere 100K ile 300K arasında genelde benim gördüğüm ömürleri var. Rakam gözünü boyamasın çok büyük bir değer değil :)
Picproje Eğitim Gönüllüleri ~ MrDarK

justice_for_all

Ömürleri olduğunu biliyorum hocam ben aynı yere yazacam ama belki gunde bir belki haftada bir yani.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

quigon1977

Merhaba ,
ben de 25lc512 den hiçbir cevap alamıyorum. Osiloskop ile baktığımda clock ve giden data yı görüyorum ama gelen  bir şey yok.
Kütüphane kullanmıyorum. Alttaki kodlarda ne hata olabilir? Yardım lütfen.


EEPROM_SELECT_0; 
SPI1->DR=(0x06);      //yazma koruması
EEPROM_SELECT_1;
         
delay_ms(10);
         
EEPROM_SELECT_0;   
SPI1->DR=(0x02);    //yazma komutu
SPI1->DR=(0x01);   //adres
SPI1->DR=(0x00);   //adres
SPI1->DR=(0x4f);    //data yaz
EEPROM_SELECT_1;   
         
delay_ms(10);
                                                               
EEPROM_SELECT_0;         
SPI1->DR=(0x03);     //okuma komutu
SPI1->DR=(0x01);     //adres
SPI1->DR=(0x00);    //adres
haf=SPI1->DR;         //data oku
EEPROM_SELECT_1;



Mucit23

Bu şekilde spi kullanımı hatalı. DR registerine bir veri yüklediğiniz zaman, yeni bir veri paketi yüklemeden önce o veri tamamen gönderilene kadar beklemelisiniz. SPI örneklerini inceleyin.

quigon1977

Daha önce örneklerden gördüklerimi uygulamıştım. Her veriyi gönderdikten sonra  while((SPI1->SR & 0x02) == 0);  ekledim.
Olmadı bekleme süreleri koydum oda olmadı.

quigon1977

Ek olarak debug yaptığımda DR register içi sürekli FFFF görünüyor.  Ama osiloskoptan baktığımda çıkış normal gibi.  FFFF olsaydı düz çizgi görmem gerekirdi.