Ahududu Pi3, Pi3B +, PiZeroW'da seri çalışmayı nasıl yaparım?


Yanıtlar:


65

Bu cevap hala doğru olduğunu ve daha ayrıntılı olarak değişikliklerin doğasını açıklar, ama sadece çalışmalıdır akım Raspbian kullanıcılarının çoğu sudo raspi-configSeç Interfacing Options / SerialBir isterseniz o zaman belirtmek Seri konsolu (muhtemelen hayır) İsterseniz daha sonra Seri Port donanım etkin muhtemelen ( Evet). Ardından /dev/serial0Seri Port'a erişen herhangi bir kodda kullanın .

Raspberry Pi3, Pi3B +, PiZeroW üzerindeki BCM2837'de 2 adet UART var (öncekilerde olduğu gibi), ancak Bluetooth işlevselliğini desteklemek için tam özellikli PL011 UART başlık pimlerinden Bluetooth çipine ve başlık pimleri üzerinde bulunan mini UART'a taşındı 8 ve 10.

Bunun seri arayüz kullanıcıları için bir takım sonuçları vardır.

/dev/ttyAMA0Daha önce UART şimdi Bluetooth bağlanır erişmek için kullandı.
MiniUART şimdi mevcuttur /dev/ttyS0.
Son işletim sistemi yazılımının bir hayır vardır /dev/serial0değiştirmek böylece uygun aygıtı seçme /dev/ttyAMA0ile /dev/serial0ve PI3 ve önceki modellerde aynı yazılımı kullanın.

Maalesef başka birçok sonuç var: -

The mini UART is a secondary low throughput UART  
  intended to be used as a console.
The mini Uart has the following features:
• 7 or 8 bit operation.
• 1 start and 1 stop bit.
• No parities.
• Break generation.
• 8 symbols deep FIFOs for receive and transmit.
• SW controlled RTS, SW readable CTS.
• Auto flow control with programmable FIFO level.
• 16550 like registers.
• Baudrate derived from system clock.

Eşlik için destek yoktur ve işlem sınırlıdır, ancak ikincisi çoğu kullanımı etkilememelidir.

MiniUART'ı gereksiz kılan "sistem saatinden türetilmiş Baudrate" özelliği, bu saat dinamik olarak değişebileceği için miniUART'ı işe yaramaz kılıyor.

Değiştirme /boot/config.txtsonuna aşağıdaki satırı ekleyerek kaldırır ve bu bağımlılığı: -

core_freq=250

Bu sorunu düzeltir ve çok az etkisi olduğu görülmektedir. SPI clock frequencyVe ARM Timerayrıca sistem saatinin bağlıdır.

Tuhaf bir nedenden ötürü, en son 4.4.9 çekirdeği kullanan Pi3 varsayılanı DISABLE UART. Bu özelliği etkinleştirmek için değiştirmeniz gereken enable_uart=1yer /boot/config.txt. (Bu ayrıca düzeltir, core_freqböylece artık gerekli değildir.)

Son olarak, eğer Bluetooth kullanmıyorsanız (veya hiç kullanılmayan kullanımlarınız varsa) portları Cihaz Ağacında tekrar değiştirmek mümkündür. Burada açıklanan bir pi3-miniuart-btve pi3-disable-btmodülü vardır /boot/overlays/README.


Harika bir açıklama için @Milliways teşekkür ederiz. Yine de gitmediğim şey ... Ahududu ile UART kullanarak bağlanan ve bir baud hızı tercih eden bir Radyo Modülüm var 9600. Bu yüzden core_freq=250baud oranımı ma python betiğinde ayarladıysam ve konfigüre edersem işe yarar mı? Ayrıca, bir göz atarsanız harika olurdu: raspberrypi.stackexchange.com/questions/47379/… Teşekkürler!
Georg

Ahududu pi 2 ile çalışmak için kullanılan bir wiringPi koduyla /boot/config.txt dosyasında / dev / serial0 ve enable_uart = 1 denedim, ancak yine de seri iletişim başlatılamıyor (return koşulu -1). Ben de boşuna / dev / S0 denedim. Ne eksik olabilirim? (ayrıca seri portu raspi-config'den kurtardı). (raspbian dahil her şey günceldir)
ozgeneral

1
@ OE1 Bir sorunuz varsa, Yorumlar bölümünde değil, yeni bir soruda sorun.
Milyonlar

Kafam biraz karıştı. Pariteyi desteklemediğini ne demek istiyorsun? Pi3'ümün konuştuğu bir cihazım var ve EVEN paritesine sahip olması gerekiyor, yoksa sistemim konuşmuyor. Cevabınızı ve naseer cevabını takip ettikten sonra, Pi3'üm programımı çalıştırarak EVEN paritesi için ayarlanmış olan bu cihaza SUCCESSFULLY konuşmasını sağladım.
ThN

1
USB-UART dönüştürücüsünün 3.3V uyumlu ve 5V uyumlu olmaması gerektiğini ekleyebilir misiniz?
MaNyYaCk

20

Sonunda bu benim pi3'üm için işe yaradı (os: debian jessie)

lütfen bu 6 adımı dikkatlice izleyin .

Adım 1 - Raspbian Jessie'i bir SD karta takın ve bir ağa bağlandığınızda Pi'yi açın Terminal veya masaüstü ve kabuktan giriş yapın Sistemi aşağıdaki şekilde yapılandırın:

sudo raspi-config

Dosya sistemini genişletin ve seriyi gelişmiş sayfada etkinleştirin, çıkın ve yeniden başlatın.

Adım 2 - jessie yeni sürümünüz varsa bu gerekli değildir Sistemi aşağıdakilerle güncelleyin:

sudo apt-get update

sudo apt-get upgrade

Adım 3 - Cihaz Ağacı ayarları aşağıdaki gibidir:

Raspberry Pi 3 bluetooth'u etkisiz hale getirmek için /boot/config.txt dosyasına cihaz ağacı ekleyin .

sudo nano /boot/config.txt

Dosyanın sonuna ekle

* blutooth'u miniuart portuna değiştirmek istiyorsanız (kötü)

dtoverlay=pi3-miniuart-bt

* Blutooth’u devre dışı bırakmak istiyorsanız (iyi)

dtoverlay=pi3-disable-bt

Değişikliklerinizi kaydederek düzenleyiciden çıkın.

Adım 4 - pi'yi yeniden başlatın

sudo reboot

Adım 5 -

a) Seri Konsolu devre dışı bırakmak için dosyayı kullanarak dosyayı düzenleyin.

sudo nano /boot/cmdline.txt

" console=serial0,115200" veya " console=ttyAMA0,115200" kelimesini kaldır

Çıkın ve değişikliklerinizi kaydedin

b) Seri Konsolu Etkinleştirmek için dosyayı kullanarak dosyayı düzenleyin.

sudo nano /boot/cmdline.txt

Dosyayı aşağıdaki gibi değiştirin:

dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Çıkın ve değişikliklerinizi kaydedin

Adım 6 - pi'yi yeniden başlatın

sudo reboot

----------------- Hepsi bu, eğlenin ---------------------------- ---


Rpi2'de bu çalışır ve bir bluetooth röle panosuna bağlı ve AT komutları ile mesajlar gönderdim. Fakat bu şekilde bir arduinodan veri alabilir miyim?
marciokoko

10

Naseer'ın cevabı doğrudur, ancak en son rasbian'ı yakaladıysanız biraz ayrıntılı. Yapmam gereken tek şey, config.txt dosyasına şu satırı eklemektir (örn. Fat32 bölümündeki SD kartı taktığınız pencerelerden):

dtoverlay=pi3-disable-bt

Ardından fişi takın, pi doğrudan konsol pimlerine bir şeyler basar.


Bu nasıl çalışabilir? Bluetooth UART, GPIO pinlerine bile bağlı değil!
Dmitry Grigoryev

4
@DmitryGrigoryev PI 3'te benim için çalışıyor.
15

2
Bu benim için de işe yaradı, bu konunun birkaç küçük konuyu açıklığa kavuşturmaya yardımcı olduğunu gördüm: raspberrypi.org/forums/…
Chris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.