Stm32f10xx & OV7670 & Tft

Başlatan yldzelektronik, 27 Mayıs 2013, 03:55:03

Mucit23

Hocam Aynı kodu eepromda deniyorum hiç çalışmıyor. Sadece Start biti görüyorum.

Bu durumdayken sizce Start bitine kamera ACK gönderiyormu?

yldzelektronik

#31
2 saykıllık bir resim ekleyebilir misin? En az 2 yazma saykılı olsun.Hatta uzaklaştırıp 3 4 tane göster.Bir de 2 adet için yakınlaşarak göster, bir resim de sadece birini ele alalım.Bu arada hard i2c değilmi?

kodlarında yalnızca şunları yapsın;
while(1){
i2c start,i2cwrite(adres),i2cstop.
i2cstart,
if(ack geldiyse)
x byte i2cread
else
i2cwrite(adres)
i2cstop
delay_ms(100)
}
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Mucit23

Hocam tezgahı topladım. Artık Yarın deneyip sonucu yazayım.

Mucit23

Hocam şimdiye kadar hep donanımsal i2c kullandım. Sizin verdiğiniz kodları deneyemiyorum yalnız. Çünkü kameradan ACK gelmediği için donup kalıyor. Benim Soft I2C kullanmam lazım. Burada bir örnek buldum.
https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2Fsoftware%20i2c%20not%20working&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=1432
STM32'deki GPIO_IDR hakkında sormak istediğim bir konu var.
Ben kullandığım pinleri open drain olarak ayarladım. Bu durumdayken GPIO_IDR den pinin konumunu okuyabilirmiyim. (Giriş yapmadan) Linkteki örnekte öyle yapmış görünüyor.

Ramiz

Bilgisayarınızda mikroc for arm var ise, soft i2c yi in temiz bir şekilde deneyebilirsiniz. Yok ise, size tavsiyem indirip, deneyin. Open source librarylerdede sorun yaşamanız yüksek bir olasılık. Cam i çalıştırdıktan sonra keil a geri dönersiniz.
Electrical & Electronics Engineering -> Step one

Mucit23

@Ramiz yok sanmıyorum. Ben şuanda Soft I2C yi denedim. Aynı sonucu aldım. Mikroc'de de farklı bir sonuç alacağımı sanmıyorum.

Ben yine Keildeki problemi çözmem lazım.
Bi arkadaşımda OV7670 modülü vardı. Onunda deneme yapmayı düşünüyorum. Birde şimdilik farklı I2C modüllerini deneyelim. Hep I2C1 ile çalışıyordum. I2C2 veya I2C3 ile denemek lazım. 

Ramiz

mikroc yi önermemin nedeni, içersindeki soft i2c library si idi. Netten bulduğunuz i2c library si ilede sorun yaşamanız yüksekti. Bunu sorunlarınları minimuma indirip, cam ile iletişimi başarın diye önermiştim..

Electrical & Electronics Engineering -> Step one

Mucit23

MikroC deki Soft I2C kodlarını alıp keilde kullanabilirmiyim?

Mucit23

Oturdum philips'in I2C Manualini alıp soft I2C kütüphanemi düzenledim. Şimdi DS1307 ile denemeler yaptım. Kendi Device Adresine ACK gönderiyor. Benim kamera Start bitinden sonra kendi device adresine ACK göndermiyor. Kamera bozuk çıktı herhalde. Birde OV7670 ile denemeler yapacağım..

Ramiz

Alıntı yapılan: Mucit23 - 01 Mart 2014, 23:18:05
MikroC deki Soft I2C kodlarını alıp keilde kullanabilirmiyim?

Hayır kullanamazsınız. MikroC kütüphaneleri kapalıdır.

Kamera modülünüzün bozuk olacağını sanmıyorum. Tabiki bağlantıları düzgün yapıp, sadece i2c hattı ile çalıştıysanız. Bence direnmeyin ya mikroc kütüphanelerini kullanın, yada pic e geçip, öncelikle bir şu modülü çalıştırın ve çalıştığından kesin emin olun, sonra yine keil a ve stm e geri dönersiniz.


İyi çalışmalar.
Electrical & Electronics Engineering -> Step one

z

Bir zamanlar kamera ile calismistim ama devami gelmedi.

Reset sinyali varsa bunu bir de tersine cevir. Boyle bir sorun yasadim diye hatirliyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Mucit23

Hocam Reset pini varama sürekli lojik 1 konumunda. Birde PowerDown var oda sürekli enable konumunda. Bunların bağlantıları kamera üzerindeki Header'e çıkartılmış ama aktif değil. Bağlantılar kamera üzerindeki jumperlerla sabit olarak ayarlanmış. Hiç oynamadım ben.

Kullandığım kamera budur.
http://www.ebay.com/itm/OV9655-Camera-Board-CMOS-SXGA-1-3-MegaPixel-CameraChip-Module-Development-Kit-/251194076066?pt=LH_DefaultDomain_0&hash=item3a7c556ba2
Buradan almıştım.

Stm32'nin donanımsal I2C ayarları yapılırken(GPIO ve I2C) GPIO pinleri Bir anlık lojik 0 olup tekrar lojik 1'e yükseliyor. Sonra start, adres... vs başlıyor.
Ben diyorumki kamera I2C init edilirken hatta oluşan hareketlilikleri start olarak algılıyor. Acaba Kamerayı tekrar sıfırlamak için Start bitinden önce Stop bitimi göndereyim. Kendini resetlesin.

Yada Kameranın Reset pinini dışarı çıkartıp I2C hattı stabil konuma gelene kadar kamerayı resette tutayım. Bunları bi denemek lazım.

@Ramiz dediğin gibi Kameranın bozuk olduğuna hiç inanasım gelmiyor. Birde pic ve CCS ile deneme yapayım. Sadece I2C ve Besleme bağlantılarını yapıp init etmeye çalışayım bakalım ne olacak.

MikroC ile daha önce hiç kod yazmadım. Kütüphanelerinin kapalı olması beni gıcık ediyor.

Mucit23

#42
Bu kameraları çalıştırmak için doğa üstü bir güce sahip olmak gerekiyor herhalde. Şimdiye kadar hiç birşey beni bukadar uğraştırmamıştı. Şimdi OV7670 ile denemeler yapıyorum. Aldığım sonuçlar OV9655 ile tamamen aynı. Bu kamerada Kendi Device Adresine ACK göndermiyor. Elimde lojik analyser hattı adım adım takip ediyorum. Yani Start, device adres, ACK bekleme vs hepsi gerçekleşiyor.

İki adet kamera ile denedim. İkisinide çinden almıştık. İkiside aynı anda arızalı olmaz herhalde. Ya ben I2C protokolünü bilmiyorum  yada bu kameralar şimdiye kadar keşfedilmemiş kendilerine has bir protokolle haberleşiyorlar. 

Artık en dip seviyeye ineceğim. Hiçbir döngü felan kullanmadan alt alta yazarak yani 1-0-1-0-1-0 vererek Start, Adres yollama ve ACK bekleme işlemlerini yapacağım.

Ciddi Ciddi ben bunların  I2C ile haberleştiklerinden emin değilim. Birisi beni kekliyor olabilir.
Datasheete bakın, http://www.surveyor.com/blackfin/OV9655-datasheet.pdf
SCCB interface (Serial Camera Control Bus)yazıyor. Bu farklı bir protokolmü?

Denemediğim yöntem kalmadı gibi yinede başka fikri olan varsa söylesin, Hemen deneyebilirim.

leblebitozu

I couldn't get my STM32 microcontroller's I2C module to work with the OV7670's SCCB interface, so I implemented a bit bang version of the SCCB specification. This implementation is my peripheral library libstm32pp.

After making sure the SCCB is working, we can tweak the OV7670.

http://embeddedprogrammer.blogspot.com.tr/2012/07/hacking-ov7670-camera-module-sccb-cheat.html

Mucit23

@Leblebitozu teşekkürler,

Keşke bunu başta bileydim. Çalıştırmak için bu kadar uğraşmazdım.

Ama internetteki örnek uygulamalara bakıyorum. Hep donanımsal I2C kullanılmış. SCCB ile I2C arasındaki ark nedir. Çok merak ediyorum doğrusu. Büyük farklar olmaması gerek.

Kamerayı üreten firma kendi oluşturdukları protokol için user manual vermişler. Buna bakıyorum.
http://www.ovt.com/download_document.php?type=document&DID=63