6 Ağustos 2020 Perşembe

Pic programlama EUSART / AUSART: Geliştirilmiş / Adreslenebilir Evrensel Asenkron Alıcı Verici

Gelişmiş / Adreslenebilir Evrensel Asenkron Alıcı Alıcı Verici (EUSART / AUSART), seri I / O iletişimini işlemek için bir çevre birimidir. 
Ana program yürütmesinden bağımsız olarak bir giriş veya çıkış seri veri aktarımı gerçekleştirmek için gerekli olan tüm saat jeneratörlerini, vardiya kayıtlarını ve veri tamponlarını içerir. Seri İletişim Arabirimi (SCI) olarak da bilinen EUSART, tam çift yönlü asenkron sistem veya yarım çift yönlü senkron sistem olarak yapılandırılabilir.
  • Full-Duplex modu, terminaller ve kişisel bilgisayarlar gibi çevre sistemleriyle iletişim için kullanışlıdır.
  • Half-Duplex Synchronous modu, A / D veya D / A entegre devreler, seri EEPROM'lar veya diğer mikrodenetleyiciler gibi çevresel aygıtlarla iletişim için tasarlanmıştır.
Bu cihazlar tipik olarak baud hızı üretimi için dahili saatlere sahip değildir ve harici saat sinyalinin bir ana senkron cihaz tarafından sağlanmasını gerektirir.
EUSART modülü aşağıdaki özellikleri içerir:
  • Tam çift yönlü asenkron iletim ve alma
  • İki karakterli giriş arabelleği
  • Tek karakterli çıktı arabelleği
  • Programlanabilir 8 bit veya 9 bit karakter uzunluğu
  • 9 bit modunda adres algılama
  • Giriş arabelleği taşması hata tespiti
  • Alınan karakter çerçeveleme hatası algılama
  • Yarı çift yönlü senkronize master
  • Yarı çift yönlü senkron köle
  • Senkron modlarda programlanabilir saat polaritesi
  • Uyku modunda çalışma
EUSART çevre birimi ayrıca aşağıdaki ek özellikleri de uygulayarak Yerel Bağlantı Ağı (LIN) veri yolu sistemlerinde kullanım için idealdir:
  • Baud hızının otomatik tespiti ve kalibrasyonu
  • Arada uyanma
  • 13 bit Break karakter iletimi

EUSART / AUSART Kullanımı

Seri İletişim, yalnızca iki kablo kullanarak iki elektronik cihaz arasında veri göndermenin bir yoludur. EUSART / AUSART standart sıfıra dönüşsüz (NRZ) formatını kullanarak veri iletir ve alır. NRZ iki seviye ile uygulanır: '1' veri bitini temsil eden bir Gerilim Çıkışı Yüksek (VOH) veya işaret durumu ve '0' veri bitini temsil eden bir Gerilim Çıkışı Düşük (VOL) veya boşluk durumu. NRZ, aynı durumdaki art arda iletilen veri bitlerinin, her bit iletimi arasında sıfır veya nötr bir seviyeye dönmeden aynı çıkış seviyesinde kalması anlamına gelir. Boşta durumu çıkış pimini bir işarete (yani yüksek duruma) koyar. İletim Senkronize veya Asenkronize bir şekilde gerçekleşebilir.

Senkron

Senkron seri iletişim tipik olarak tek bir master ve bir veya daha fazla slave bulunan sistemlerde kullanılır. Ana cihaz, baud hızı üretimi için gerekli devreyi içerir ve sistemdeki tüm cihazlar için saati sağlar. Bağımlı cihazlar, dahili saat oluşturma devresini ortadan kaldırarak ana saatten yararlanabilir.
Senkron modda iki sinyal hattı vardır:
  • Çift yönlü bir veri hattı
  • Bir saat çizgisi
Köleler, seri verileri ilgili alma ve gönderme kayıtlarının içine ve dışına kaydırmak için master tarafından sağlanan harici saati kullanır. Veri hattı çift yönlü olduğundan, senkron çalışma yalnızca yarı çift yönlüdür. Yarı dubleks, ana ve bağımlı cihazların veri alıp iletebileceğini, ancak her ikisini aynı anda yapamayacağı anlamına gelir. EUSART / AUSART, ana veya bağımlı cihaz olarak çalışabilir. Start ve Stop bitleri senkron iletimlerde kullanılmaz

eşzamanlı olmayan

Asenkron iletişimde iki pim kullanılır. Biri İletim (Tx) ve diğeri Alma (Rx). Bir cihazın Tx'i ikinci cihazın Rx'ine bağlanır. Her karakter iletimi bir Başlangıç ​​bitinden sonra sekiz veya dokuz veri bitinden oluşur ve her zaman bir veya daha fazla Durdur bitiyle sonlandırılır. Başlangıç ​​biti daima bir boşluktur ve Durdurma bitleri her zaman işarettir. İletilen her bit 1 / (Baud Hızı) süresi boyunca devam eder. Sistem osilatöründen standart baud hızı frekansları elde etmek için çip üzerinde ayrılmış 8 bit / 16 bit Baud Rate Generator kullanılır.
Asenkron seri iletişim için birçok format vardır ve popüler olanı RS-232 standardıdır. RS-232, bir Bit biti ve ardından bir grup veri biti ve ardından kuruluma bağlı olarak bir veya iki Dur biti içerir. Ortak bir kurulum 8N1'dir, bu da bir Başlangıç ​​biti, SEKİZ veri biti, Eşlik biti yok ve sonra BİR Durdurma biti anlamına gelir. Herhangi bir parite bilgisi dahil edilmemiştir, bu da bit hatalarını kontrol etmenin basit bir yoludur.
Sekiz veri biti 256 farklı kombinasyon oluşturabilir ve bu kombinasyonlar Amerikan Bilgi Değişimi Standart Kodu (ASCII) çizelgesine göre önceden atanır. Her harf, hem büyük hem de küçük harf ile birlikte bir bilgisayar klavyesinde bulunan özel karakterlerin her birinin benzersiz bir ASCII kodu vardır. Bu, mikrodenetleyicinin metin mesajlarını, alıcı uç olarak yorumlanabilen ve karakterlere dönüştürülebilen dijital veri olarak aktarmasına izin verir.
EUSART / AUSART önce En Az Önemli Biti (LSb) iletir ve alır. EUSART / AUSART'ın vericisi ve alıcısı işlevsel olarak bağımsızdır, ancak aynı veri formatını ve baud hızını paylaşır. İletilen bitin toplamından tek veya çift bir parite belirlenebilir, ancak donanım tarafından desteklenmez. Yazılımda uygulanabilir ve dokuzuncu veri biti olarak saklanabilir.
LIN (Yerel Bağlantı Ağı), 9 bit karakter verileri ve diğerleri gibi başka standartlar da vardır. Bunlardan herhangi biri yazılımda oluşturulabilir, ancak bu çok fazla işlem süresi gerektirir, böylece işlemin çoğunu işlemek için özel bir donanım devresine sahip olmak uygulamanın daha hızlı ve daha güvenilir çalışmasını sağlayabilir.
PIC® MCU'daki EUSART / AUSART çevre birimi, gönderilecek verileri ( TXREG kaydı ) ve alınan verileri ( RCREG kaydı ) saklamak için kayıt arabelleklerine sahiptir .
Zamanlama bu seri iletişim için önemlidir, bu nedenle iki iletişim cihazı arasında ortak bir Baud hızı veya saniye başına bit zamanlaması oluşturulur. Otomatik baud hızı algılaması çoğu EUSART / AUSART çevre birimine yerleştirilmiştir.
EUSART modülünün çalışması üç kayıt aracılığıyla kontrol edilir:
  • Aktarım Durumu ve Kontrolü (TXSTA)
  • Durum ve Kontrol Alma (RCSTA)
  • Baud Hızı Kontrolü (BAUDCON)

Baud Hızı Hesaplaması

Baud Rate Generator (BRG), hem eşzamansız hem de eşzamanlı EUSART (Evrensel Eşzamanlı / Eşzamansız Alıcı / Verici) işleminin desteğine adanmış 8 bitlik veya 16 bitlik bir zamanlayıcıdır. Varsayılan olarak, BRG 8 bit modunda çalışır. BAUDCON kaydının BRG16 bitinin ayarlanması 16 bit modunu seçer.
SPBRGH: SPBRG kayıt çifti, serbest çalışan baud hızı zamanlayıcısının süresini belirler. Asenkron modunda baud hızı süresinin çarpanı kayıt ve BRG16 biraz BRGH TXSTA biti tarafından belirlenir BAUDCON kayıt. Eşzamanlı modda BRGH biti yoksayılır.
Baud hızı hatasını azaltmak için yüksek baud hızını (BRGH = 1) veya 16 bit BRG'yi (BRG16 = 1) kullanmak avantajlı olabilir. 16-bit BRG modu, hızlı osilatör frekansları için yavaş baud hızları elde etmek için kullanılır.
SPBRGH: SPBRG kayıt çiftine yeni bir değer yazmak, BRG zamanlayıcısının sıfırlanmasına (yani silinmesine) neden olur. Bu, BRG'nin yeni baud hızını vermeden önce zamanlayıcı taşmasını beklememesini sağlar. Etkin alma işlemi sırasında sistem saati değiştirilirse, alma hatası veya veri kaybı meydana gelebilir. Bu sorunu önlemek için, sistem saatini değiştirmeden önce alma işleminin Boşta olduğundan emin olmak için RCIDL bitinin durumunu kontrol edin.
Baud hızı denklemleri aşağıdaki tabloda gösterilmektedir. Denklem, BAUDCON kaydındaki ayarlara dayanmaktadır .

Örnek Baud Hızı Hesaplaması

16 MHz FOSC, 9600 istenen baud hızı, Asenkron mod, 8 bit BRG olan bir cihaz için:
(1)
dd=FSC64 SPHSPR, )
SPBRGH için çözme: SPBRG:
(2)
\ begin {align} SPBRGH: SPBRG = {{İstenen Baud Hızı üzerinden FOSC \} \ over64} -1 \ end {align}
(3)
\ begin {align} = {{16000000 \ 9600'den fazla} \ 64'den fazla} -1 \ end {align}
(4)
\ begin {equation} = [25.042] = 25 \ end {denklem}
Gerçek Baud Hızı için Çözme:
(5)
\ begin {align} Hesaplanan Baud Hızı = {16000000 \ 64 üzeri 25+1} \ end {align}
(6)
\ begin {equation} = 9615 \ end {equation}
Hesaplama Hatası:
(7)
\ begin {align} Error = {HataHesaplamaBaudHızıİstenenBaudHızı \ İstenen Baud Hızı üzerinden} \ end {align}
(8)
\ begin {align} = {96159600 \ 9600'den fazla} \ end {align}
(9)
\ begin {equation} = 0.0016 \ end {equation}
% 0,16 Hata

Hiç yorum yok:

Yorum Gönder

Her yorum bilgidir. Araştırmaya devam...