Raspberry Pi üzerinde kullanılan SoC’ler iki dahili UART’a mevcuttur. ;  bir PL011’e ve bir mini UART’a sahiptir. Farklı donanım blokları kullanılarak uygulanırlar, bu nedenle biraz farklı özelliklere sahiptirler. Bununla birlikte, her ikisi de 3,3V’luk cihazlardır, yani bir RS232’ye veya farklı voltaj seviyeleri kullanan başka bir sisteme bağlanırken ekstra özen gösterilmesi gerektiği anlamına gelir. İki protokol arasındaki voltaj seviyelerini dönüştürmek için bir adaptör kullanılmalıdır. Alternatif olarak, 3.3V USB UART adaptörleri çok düşük fiyatlarla satın alınabilir. 

Varsayılan olarak, kablosuz / Bluetooth modülü (Raspberry Pi 3 ve Raspberry Pi Zero W) bulunan Raspberry Pis’te, PL011 UART, Bluetooth modülüne bağlanırken mini UART, birincil UART olarak kullanılır ve bir Linux konsoluna sahiptir. üstünde. Diğer tüm modellerde, PL011 birincil UART olarak kullanılır. 

Linux aygıt terimlerinde, varsayılan olarak, / dev / ttyS0, mini UART’a ve / dev / ttyAMA0, PL011’e karşılık gelir. Birincil UART, yukarıda açıklandığı gibi Raspberry Pi modeline bağlı olan Linux konsoluna atanmış olandır. Ayrıca, her zaman birincil UART’a (etkinse) atıfta bulunan / dev / serial0, ve benzer şekilde her zaman ikincil UART’a (etkinse) atıfta bulunan / dev / serial1 de vardır. 

Mini UART ve CPU çekirdek frekansı 

Mini UART’ın baud hızı VC4 GPU’daki VPU’nun çekirdek frekansına bağlıdır. Bu, VPU frekans regülatörü çekirdek frekansı değiştirdikçe, UART’ın baud hızının da değiştiği anlamına gelir. Bu UART’ı varsayılan durumda sınırlı kullanım yapar. Varsayılan olarak, mini UART birincil UART olarak kullanılmak üzere seçilmişse, devre dışı bırakılır. Etkinleştirmek için, config.txt’ye enable_uart = 1 ekleyin. Bu aynı zamanda çekirdek frekansını 250MHz’e sabitleyecektir (force_turbo, VPU turbo frekansına sabitleneceği zaman). Mini UART birincil UART değilse, örneğin Bluetooth denetleyicisine bağlanmak için kullanıyorsanız, config.txt dosyasına core_freq = 250 eklemelisiniz, aksi takdirde mini UART çalışmaz. 

Enable_uart bayrağının varsayılan değeri, UART’ların gerçek rollerine bağlıdır, böylece ttyAMA0 Bluetooth modülüne atanırsa, enable_uart varsayılan olarak 0’dır. UART’lar bir Cihaz Ağacı Yerleşimi kullanılarak yeniden atanırsa (aşağıya bakın), enable_uart varsayılanları hala bu kurala uyacaktır. 

Linux’un UART konsolunu kullanmasını devre dışı bırakma 

Varsayılan bir Raspbian kurulumunda, birincil UART (seri0) Linux konsoluna atanmıştır. Seri bağlantı noktasını başka amaçlarla kullanmak, bu varsayılan davranışın değiştirilmesini gerektirir. Başlangıçta, systemd herhangi bir konsol girişi için Linux çekirdeği komut satırını kontrol eder ve burada tanımlanan konsolu kullanır. Bu davranışı durdurmak için seri konsol ayarının komut satırından kaldırılması gerekir. 

Bu raspi-config yardımcı programını kullanarak veya manuel olarak yapılabilir. 

Ayarları manuel olarak değiştirmek için, çekirdek komut satırını sudo nano /boot/cmdline.txt ile düzenleyin. Seri0 cihaza başvuran konsol girişini bulun ve baud hızı ayarı dahil, onu kaldırın. console= serial0,115200 gibi bir şeye benzeyecektir. Çizginin geri kalanının aynı kaldığından emin olun, çünkü bu yapılandırmadaki hatalar Raspberry Pi’nin önyüklemesini durdurabilir. 

Değişikliğin etkili olması için Raspberry  Pi’yi yeniden başlatın. 

GPIO pinlerinde UART çıkışı 

Varsayılan olarak, UART gönderme ve alma pinleri, GPIO başlığında 8 ve 10 numaralı pinler olan sırasıyla GPIO 14 ve GPIO 15’tedir. 

Çekirdek github ağacında çeşitli UART Aygıt Ağacı Yerleşimi tanımları bulunabilir. En kullanışlı iki kaplama pi3-disable-bt ve pi3-miniuart-bt’dir. 

pi3-disable-bt Bluetooth aygıtını devre dışı bırakır ve UART0 / ttyAMA0’ı GPIO 14 ve 15’e geri yükler. Modemi başlatan sistem hizmetini de devre dışı bırakmak için gereklidir, böylece UART: sudo systemctl disable hciuart’ı kullanmaz. 

pi3-miniuart-bt, mini UART’ı (ttyS0) kullanmak için Raspberry Pi 3 ve Raspberry Pi Zero W Bluetooth işlevini değiştirir ve UART0 / ttyAMA0’ı GPIO’lara geri yükler 14 ve 15’e bakın. Aşağıdaki sınırlamalar). Ayrıca / dev / serial0 ve / dev / serial1’i oluşturan udev kurallarına sahip bir sisteminiz yoksa, /lib/systemd/system/hciuart.service dosyasını düzenlemek ve ttyAMA0’ı ttyS0 ile değiştirmek de gereklidir. Bu durumda, her zaman doğru olacağından / dev / serial1 kullanın. Cmdline.txt, kullanıcının erişebileceği bağlantı noktasına atıfta bulunmak için diğer adı serial0 kullanıyorsa, ürün yazılımı bu kaplamanın kullanılmış olup olmadığına bakmadan uygun bağlantı noktasıyla değiştirir. 

Klasörde UART’a özgü başka kaplamalar da var. Cihaz Ağacı Kaplamaları ile ilgili detaylar için /boot/overlays/README kısmına bakın veya açıklamalar ve kullanım bilgileri için dtoverlay -h overlay-name komutunu çalıştırın. 

Cihaz Ağacı Yerleşimlerinin nasıl kullanılacağına dair tüm talimatlar için bu sayfaya bakın. Kısaca, Cihaz Ağacı Kaplamalarını etkinleştirmek için config.txt dosyasına bir satır ekleyin. Dosya adının –overlay.dts bölümünün kaldırıldığını unutmayın. 

PL011 ve mini UART arasındaki ilgili farklar 

Mini UART daha küçük FIFO’lara sahiptir. Akış kontrolü eksikliği ile birlikte, bu, daha yüksek baudratlardaki karakterleri kaybetmeye daha yatkın hale getirir. Aynı zamanda PL011’den daha az yeteneklidir, esas olarak VPU saat hızına baud hızı bağlantısı nedeniyle. 

Mini UART’ın PL011’e kıyasla belirli eksiklikleri şunlardır: 

  • No break detection 
  • No framing errors detection 
  • No parity bit 
  • No receive timeout interrupt 
  • No DCD, DSR, DTR or RI signals 
Please follow and like us: