คอนโซลอนุกรม Pi3 ของฉันสร้างขยะและล้มเหลวในการตอบสนองต่อแป้นพิมพ์
คอนโซลอนุกรม Pi3 ของฉันสร้างขยะและล้มเหลวในการตอบสนองต่อแป้นพิมพ์
คำตอบ:
คำตอบนี้ยังคงเป็นที่ถูกต้องและอธิบายในรายละเอียดมากขึ้นลักษณะของการเปลี่ยนแปลง แต่ผู้ใช้ส่วนใหญ่ของ Raspbian ปัจจุบันก็ควรจะทำงาน
sudo raspi-config
เลือกInterfacing Options / Serial
แล้วระบุถ้าคุณต้องการอนุกรมคอนโซล (อาจจะไม่ได้) แล้วถ้าคุณต้องการอนุกรมฮาร์ดแวร์พอร์ตเปิดการใช้งาน (อาจ ใช่). จากนั้นใช้/dev/serial0
รหัสใดก็ได้ที่เข้าถึงพอร์ตอนุกรม
BCM2837 บน Raspberry Pi3, Pi3B +, PiZeroW มี 2 UART (เช่นเดียวกับรุ่นก่อน) อย่างไรก็ตามเพื่อรองรับการใช้งานบลูทู ธ ทำให้ PL011 UART ที่โดดเด่นครบถ้วนถูกย้ายจากหมุดส่วนหัวไปยังชิปบลูทู ธ และ mini UART ทำขึ้นบนหมุดหัว 8 และ 10
สิ่งนี้มีผลที่ตามมาจำนวนมากสำหรับผู้ใช้อินเตอร์เฟสแบบอนุกรม
/dev/ttyAMA0
ก่อนหน้านี้ใช้ในการเข้าถึง UART ตอนนี้เชื่อมต่อกับบลูทู ธ
miniUART พร้อมใช้งานแล้วในวัน/dev/ttyS0
นี้
ในซอฟต์แวร์ระบบปฏิบัติการล่าสุดจะมีตัว/dev/serial0
เลือกอุปกรณ์ที่เหมาะสมเพื่อให้คุณสามารถแทนที่/dev/ttyAMA0
ด้วย/dev/serial0
และใช้ซอฟต์แวร์เดียวกันใน Pi3 และรุ่นก่อนหน้า
น่าเสียดายที่มีผลอื่น ๆ อีกหลายอย่าง: -
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.
ไม่มีการสนับสนุนสำหรับพาริตี้และปริมาณงานมี จำกัด แต่สิ่งหลังไม่ควรส่งผลต่อการใช้งานส่วนใหญ่
มีคุณสมบัตินักฆ่าเดียว "Baudrate ที่ได้จากนาฬิกาของระบบ" ซึ่งทำให้ miniUART ไร้ประโยชน์เนื่องจากนาฬิกานี้สามารถเปลี่ยนแบบไดนามิกได้เช่นหากระบบเข้าสู่โหมดพลังงานลดลงหรือในโหมดพลังงานต่ำ
การแก้ไขการ/boot/config.txt
ลบการพึ่งพานี้โดยการเพิ่มบรรทัดต่อไปนี้ในตอนท้าย: -
core_freq=250
วิธีนี้ช่วยแก้ไขปัญหาและดูเหมือนว่าจะมีผลกระทบเพียงเล็กน้อย SPI clock frequency
และARM Timer
ยังขึ้นอยู่กับเวลาของระบบ
ด้วยเหตุผลที่แปลกประหลาดบางอย่างค่าเริ่มต้นสำหรับ Pi3 ที่ใช้เคอร์เนล 4.4.9 ล่าสุดคือ DISABLE UART เพื่อเปิดใช้งานคุณจะต้องเปลี่ยน ใน
enable_uart=1
/boot/config.txt
(วิธีนี้แก้ไขได้ด้วยcore_freq
ดังนั้นจึงไม่จำเป็นอีกต่อไป)
ในที่สุดหากคุณไม่ได้ใช้บลูทู ธ (หรือมีการใช้งานที่ไม่ต้องการมาก) ก็เป็นไปได้ที่จะสลับพอร์ตกลับในทรีอุปกรณ์ มีความเป็นpi3-miniuart-bt
และโมดูลที่อธิบายไว้ในpi3-disable-bt
/boot/overlays/README
ในที่สุดสิ่งนี้ก็ใช้ได้กับ pi3 ของฉัน (ระบบปฏิบัติการ: debian jessie)
โปรดปฏิบัติตาม6 ขั้นตอนเหล่านี้อย่างระมัดระวัง
ขั้นตอนที่ 1 - ติดตั้ง Raspbian Jessie บนการ์ด SD และบูต Pi เมื่อเชื่อมต่อกับเครือข่ายเข้าสู่ระบบผ่านทางเทอร์มินัลหรือเดสก์ท็อปและเชลล์กำหนดค่าระบบด้วย:
sudo raspi-config
ขยายระบบไฟล์และเปิดใช้งานอนุกรมในหน้าขั้นสูงออกและรีบูต
ขั้นตอนที่ 2 - สิ่งนี้จะไม่จำเป็นถ้าคุณมีเจสซีรีลีสใหม่อัปเดตระบบด้วย:
sudo apt-get update
sudo apt-get upgrade
ขั้นตอนที่ 3 - การตั้งค่าทรีอุปกรณ์ดังต่อไปนี้:
เพิ่มทรีอุปกรณ์ใน/boot/config.txtเพื่อปิดใช้งานบลูทู ธ Raspberry Pi 3
sudo nano /boot/config.txt
เพิ่มที่ท้ายไฟล์
* ถ้าคุณต้องการเปลี่ยน blutooth เป็น miniuart port (ไม่ดี)
dtoverlay=pi3-miniuart-bt
* ถ้าคุณต้องการปิดการใช้งาน blutooth (ดี)
dtoverlay=pi3-disable-bt
ออกจากตัวแก้ไขการบันทึกการเปลี่ยนแปลงของคุณ
ขั้นตอนที่ 4 - รีบูต pi
sudo reboot
ขั้นตอนที่ 5 -
ก) เพื่อปิดการใช้งาน Serial Console แก้ไขไฟล์โดยใช้
sudo nano /boot/cmdline.txt
ลบคำว่า " console=serial0,115200
" หรือ " console=ttyAMA0,115200
"
ออกและบันทึกการเปลี่ยนแปลงของคุณ
b) เพื่อเปิดใช้งาน Serial Console แก้ไขไฟล์โดยใช้
sudo nano /boot/cmdline.txt
เปลี่ยนไฟล์เป็นสิ่งต่อไปนี้:
dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
ออกและบันทึกการเปลี่ยนแปลงของคุณ
ขั้นตอนที่ 6 - รีบูต pi
sudo reboot
----------------- นั่นคือทั้งหมดขอให้สนุก ---------------------------- ---
คำตอบของ Naseer นั้นถูกต้อง แต่ค่อนข้างละเอียดถ้าคุณเพิ่งจะใช้ rasbian รุ่นล่าสุด สิ่งที่ฉันต้องทำคือเพียงเพิ่มบรรทัดต่อไปนี้ใน config.txt ของฉัน (จากหน้าต่างที่คุณเสียบการ์ด SD บนพาร์ติชัน fat32):
dtoverlay=pi3-disable-bt
จากนั้นเสียบเข้ากับแล้ว pi จะพิมพ์ข้อมูลโดยตรงบนหมุดคอนโซล
9600
และมันชอบบอดอัตรา ดังนั้นควรทำงานถ้าฉันตั้งcore_freq=250
แล้วกำหนดอัตราการส่งข้อมูลของฉันในสคริปต์ ma python? นอกจากนี้ยังจะดีถ้าคุณสามารถดูได้ที่: raspberrypi.stackexchange.com/questions/47379/…ขอบคุณ!