Data'ı Uygulamayı Uygulamayı Multi Pic Microkontroller arasındaki iletişim
Table of Contents
Giriş Giriş Giriş
Birden fazla PIC mikrokontrollü arasındaki etkili veriler, birçok gömülü sistemin arka kemiğidir, dağıtılma, sensör füzyonu ve koordineli bir davranışlama sağlar. Çok karmaşık bir çevresel monitör, robotik kontrol sistemi veya ağlanmış bir endüstriyel kontrol sistemi ile birlikte, doğrulanmış bir veri değiştirme yöntemi ile, doğrulayıcı ve ölçeklenebilirliği arasındaki güvenilir verileri değiştirme yeteneği.Bu makale, üç en yaygın iletişim protokolün derinlemesine bir şekilde araştırılmasını sağlar -UART, Ireadyso, Iready-C, ve SPI-uzun bir uygulama stratejileri ile, hata yapma teknikleri, ve pratik deşifre önerilerinizi ve her protokolü anlamak için en iyi iletişim protokollerinizi sağlar.
Seri İletişim UART
Donanım Kurulum ve Yapılandırma
Evrensel Asynchronous Alıcı / Transmitter (UART) aynı baud oranı ile yapılandırılmalıdır, veri birazları, parite ve biraz durdurmak için. çoğu modern PIC mikro kontrol cihazı, framing ve UART'ı kurmak için sadece iki tel gerektirir. - şimdi ortak bir zemin. her iki cihaz da aynı şekilde yapılandırılmalıdır.
Data Transmission and Reception
Tipik bir UART işleminde, PIC yüklerini iletme işlemi, uygun bayraklara veya kesmelere izin verir, bu da bir dizeyi gönderirken, her biri ile birlikte kayıt işlemişleri boş tutarken.
Gerçek Zaman Sistemleri için InterruptDriven UART for Real-Time Systems
Emisyonların CPU döngüleri ve daha yüksek baud oranlarında kaçırılabilir. Üretim sistemleri için, ABSART bayrakları kullanın: TXIF (transbüz boş) ve RCIF (receive buffer full) Bu yaklaşımın sonuna kadar kesintiye uğraması gerekir. Tipik bir şekilde RCREG'yi başka görevler için ücretsiz okumalı ve kesme bayrağını kullanın.
InterIntegrated Circuit (I2C) İletişim
I2C Bus Temelleri ve Adres
I2C, iki çift yönlü açık çizgi kullanır: SDA (data) ve SCL (saat) tek bir otobüste birden fazla ustayı ve 127 köleyi bir kabul eden (ACK) veya 10-bit adrese sahip değildir.
MasterSlave Uygulaması ile MSSP
I2C'yi bir PIC'de kullanmak için, ilk önce I2C master modunda, SSPxADD baud oranı jeneratörü ve SSPxCON1/2 kayıtlarında bir işlem başlatarak, bir kontrol kaydına bir başlangıç koşulu ile başlatarak, o zaman, SSPxADD'dan gelen verileri kullanarak cihazı yapılandırın; bir NACK alınan verileri kontrol etmek için zaman ayırın ve bir NACK'nin aldığı zaman, bir engeli ve yeniden denemesi gerekir.
Çok-Master ve Bus Tahkim
I2C'nin multi-master kapasitesi, birden fazla PIC'nin transferleri otobüs içerikli olmadan başlatmasına izin verir, çünkü iki usta aynı anda başlarsa, her cihaz bu durumu izlemeli ve kendi tahkim kaybını bir kez daha test etmeye çalışır (örneğin, MSSP modülünün SDA'da düşük bir süre boyunca yapılandırılabilir).
Seri Peripheral Interface (SPI) İletişim
SPI Modes and Clock Build
SPI, dört satır kullanarak tam zamanlı veri transferi sağlar: MOSI (master out, köle in), MISO (yüksek çözünürlükte), SCK (serial saat), ve SS (slave selects) Kontrol eder ve SS'in yüksek çözünürlükte kullandığı kontrolleri seçer.In mod 0, SCK veya SPORD modülü ile özelleştirilmiş diskler için yüksek çözünürlükte.
Köle Yönetimi Seç
Her köle, efendiden adanmış bir SS hattı gerektirir. Köle tarafında, SS pin bir giriş olarak yapılandırılmalıdır; düşük gittiğinde, kölenin SPI modülü etkinleştirilir. Çok sayıda PC kölesi, diğer tüm fonksiyonları için kullanılan genel amaçlı bir kullanım için SS pin'i kullanıyor.
Full-Duplex Data Exchange
SPI aynı anda yayınlar ve alır: Her usta saat pulu, gerekli saat döngüleri oluşturmak için birazdan bir parçaya dönüşür.Bu, hem usta hem de kölenin bir tane aldıklarında bir tane göndermeye hazır olması anlamına gelir.Eğer köle sadece verileri göndermeliyse, yüksek transfer için FIFO otobüsü veya DMA (eğer varsa) kullanın.
Gelişmiş İletişim Tahminleri
Hata Tespiti ve Retransmission
Hiçbir protokol gürültü veya geçici hatalar için bağışıklık değildir. Görev-kahkade bağlantılar için, hafif bir çek ekleyin - basit bir XOR veya 16-bit CRC - ödemeden sonra satın alma mekanizması, kontrolleri karşılaştırır; eğer yanlış eşleştirmeler gönderirse, yine de bir NAK ve verici bir dizi girişimde bulunabilirsiniz. I2C'de, yerleşik ACK/NACK mekanizması, yerleşik seviyeler için temel hata tespitini sağlar.
Data Buffering ve Flow Control
Veriler uygulamadan daha hızlı geldiğinde, bir tampon kaybı önler. RAM'da bir tabanca iki UART ve SPI alıcıları için standart bir çözümdür. ISR XON/XOffer veya donanım RTS /C için, MSSP modülü, çok daha az sayıdaki bir bilgisayar kontrolü için bir donanım tampon içerir, ancak çok sayıdaki yüksek bir dosya için daha yoğun bir şekilde kontrolleri uygulamanız gerekir.
Güç Yönetimi ve Wake-on-iletişim
Batterytli sistemler enerjiyi korumalıdır. Birçok PIC mikrokontrolörler düşük güç uyku modlarına girebilir ve bir UART, I2C veya SPI hattında bir kesintiye neden olabilir. UART için, RX I pin to an-on-change-change-set; bir başlangıç bit geldiğinde, cihazı uyandırır ve işlemlerinin ilk uyanma şekline izin verebilir.
Pratik İpuçları
Doğru Protokolü Seçin
UART, I2C veya SPI'yi seçmek, özel gereksinimlerinize bağlıdır:
- [FONT:0)UART[[DÜT:1] basit, uzun mesafe (kömücüler ile) nokta bağlantıları ile sadece iki cihaz iletişim kurmalı.
- [FONT:0)I2C[DÜT:1] birden çok periferik (örneğin, sensörler, EEPROMs) ile kısa bir otobüs üzerinde, minimum pins ile bağlantı kurmakta başarılıdır.
- [FONT:0)SPI[DÜT:1] en yüksek hız ve tam ölçekli veri akışı, akış ses, SD kart veya hızlı ADCs için ideal.
Her zaman protokole ihtiyaç duyulan veri oranı ve mesafeye eşle. Örneğin, I2C otobüs kapasitesi limit kablo uzunluğu; SPI'yi diferansiyel sinyalleme (e.g., RS-422) daha uzun çalışır.
Mantık Analizleri ile Debugging
Bir mantık analizörü, ekranınızı çalıştırırken en etkili araçtır.SX/RX, SDA/SCL veya MOSI / MISO /SCK /SS hatları, doğru başlangıç / duraklama koşulları, uygun adresler ve zamanlama ihlalleri. birçok uygun USB mantık analizörleri (e.g.g., Saleae klonları) destek protokolü decoding, ACKs veya saat gibi hamks değerleri gösterir ve hataları gösterir.Her zaman otobüsleri doğrulayın.
Firmaware modülerity and Test
Her iletişim arayüzü için ayrı sürücü modüllerini yazın, iyi tanımlanmış API'ler göndermek ve paketler almak için. Bir döngülü kablo kullanarak her sürücüyü test edin (TX'i birlikte UART için ya da iki PICs'i birlikte yazdırmak için) Yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş test karmaşıklığı: tek tek tek tek tek bir transferler ile başlayın, sonra multi-bayır paketler, sonra bir düğme ile ses ekleyin.
Robust İletişim için En İyi Uygulamalar
- [FONT:0)Common zemin:[Dönetici:[Dönetici:0) Her zaman tüm gerekçeleri bir araya getirir; sinyal referans farklılıkları veri yolsuzluklarına ve hatta donanım hasarlarına neden olur.
- [FONT:0]Pull-up direnişçiler: I2C otobüsleri dış çekleri gerektirir; SPI için, kullanılmayan MISO hatları yüksek veya tri-stated çekmeli.
- [FONT:0]Parity ve checksums:[Dönetici: 1 ) Tek-bit hata tespiti için UART'ta pariteyi kullanın; daha güçlü koruma için bir paket CRC ekleyin.
- [FONT:0)Buffering:[Dönetici:[Dönetici:0) Implement dairesel tamponlar beklenen trafik patlamaları için yeterli derinlikle.
- [FONT=0)Başlangıç önceliklendirmeye öncelik verir:[Dönetici:[Dönetici:0)))) ve düşük seviyeli UART'a daha yüksek öncelik tayin edilir.
- [FONT=0) Uyanış için yorum:[Dönetici: [Dönetici:0) Uyku modlarını kullanıyorsanız, uyandırma kaynağının stabil olduğundan emin olun (örneğin, yanlış RSS yapıştırılmış mantık veya yazılım histerileri).
- [FONT:0) Gürültülü ortamlardaki test:[Dönetici:0) Daha uzun süre kalkan bir kablo kullanın, ferrite beads ekleyin ve diferansiyel hat sürücüleri (RS-485) aşırı koşullar için düşünün.
- [FONT:0)Clear Belgeleri:[Dönetici:[Dönetici:[Dönetici:0)[Dönlendirme:[Dönlendirmeler:[Dönlendirmeler:[Dönlendirmeler:)))
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Birden fazla PIC mikrokontrolörler arasındaki sağlam veri iletişimi, UART, I2C ve SPI protokollerinin sağlam bir anlayış gerektirir, dikkatli donanım tasarımı ve donanım mühendisliği ile birlikte yapılır.Her bir arayüz yapılandırması için, kesmeye veya DMA tabanlı transferler kullanarak, ve hata algılama ve tamponlama teknikleri uygulamanız gerekir, gömülü sistemler için ölçeklenebilir, güvenilir bir şekilde yapılandırılabilir.[Döneticileri ile başlayın.) Daha sonra daha derin dalışlar için, güven kazanır.