SPI Iile 32bit Veri Okuma ?

Başlatan universitelim54, 25 Ağustos 2018, 15:00:25

universitelim54

Arkadaşlar mrb.

cs5530 adc entegresinden SPI ile veri okumaya çalışıyorum ancak veri çıkışı 32 bit pic'te ise SPI 8 bit veri okuyabiliyor. bu durumu nasıl çözebilirim küçük bir algoritma hazırlayabilecek bir arkadaş var mı ?

mylord92


elektronart

soru cevabı içinde barındırıyor aslında. 32/8=4 kez ardışıl okuma yaptığında tüm verilere ulaşırsın. Eğer bunu nasıl yapacağını bilmiyorsan bu çip için hazırlanmış kütüphaneleri bulmaya çalış. Arduino için olma ihtimali çok yüksek. Sonra onu alıp istediğin işlemciye port edebilirsin.
Açık Elektronik

universitelim54

4 kez okuduktan sonra veriyi long tipinde dönüştürmem gerekecek o nasıl olabilir.

elektronart

bu kadar önyargılı olmamak lazım. Belki bulacağın kütüphanenin içinde bu dönüşüm yapılıyor olacak. Yapılmıyor bile olsa yapmanın bir yolu bulunur. Bulmak biraz zaman alabilir ama bu kodlama ve terminoloji anlamında ilerisi için ciddi birikim sağlar.
Yine de ben çözümü burada görmek isterim dersen aşağıda bir örnek bulabilirsin.

long num = 0;
for(int i = 0; i < 4; i++) {
    num = (num << 8) | byte_array;
}
Açık Elektronik

quarko

Alıntı yapılan: universitelim54 - 25 Ağustos 2018, 15:13:384 kez okuduktan sonra veriyi long tipinde dönüştürmem gerekecek o nasıl olabilir.

altı üstü 4 byte ı 32bit te birleştirmek için for döngüsü kullanmana gerek yok hocam. Hem kod alanından hem hızdan kaybettirir. Şu şekilde yapabilirsin. Byte[0], Byte[1], Byte[2], Byte[3] sıra ile okuduğun 8bitlik veriler olduğunu varsayarak;

Value = ((uint32_t)Byte[0] << 24) | ((uint32_t)Byte[1] << 16) | ((uint32_t)Byte[2] << 8) | (Byte[3]);

şeklinde bir kod satırı ile işini halledebilirsin.

"Vicdanın ziyası ulum-u diniyedir. Aklın nuru fünun-u medeniyedir. İkisinin imtizacıyla hakikat tecelli eder."

universitelim54