Answers:
这个答案仍然是正确的,并且更详细地说明了更改的性质,但是当前Raspbian的大多数用户应该只运行
sudo raspi-config
Select,Interfacing Options / Serial
然后指定是否要使用串行控制台(可能是否),然后是否要启用Serial Port硬件(可能是)是)。然后/dev/serial0
在访问串行端口的任何代码中使用。
Raspberry Pi3,Pi3B +,Pi3A +,PiZeroW上的BCM2837具有2个UART(与其前代产品一样),但是为了支持蓝牙功能,功能齐全的PL011 UART从接头引脚移到了蓝牙芯片,并且迷你UART可在接头引脚8和10。
(Pi4上的SOC带有附加的UART,但是引脚8和10和蓝牙的默认串行使用与BCM2837相同的2个UART。)
这对于串行接口的用户有许多后果。
在/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.
不支持奇偶校验,并且吞吐量受到限制,但后者不应影响大多数用途。
有一个杀手级功能“源自系统时钟的波特率”使miniUART无效,因为该时钟可以动态更改,例如,如果系统进入低功耗模式或处于低功耗模式。
修改remove /boot/config.txt
通过在末尾添加以下行来消除此依赖性:
core_freq=250
这样可以解决问题,并且影响不大。在SPI clock frequency
和ARM Timer
还取决于系统时钟。
出于某些奇怪的原因,使用最新的4.4.9内核的Pi3的默认值为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-如果您使用的是jessie新版本,则不需要此步骤。使用以下方法更新系统:
sudo apt-get update
sudo apt-get upgrade
步骤3-装置树设定如下:
将设备树添加到/boot/config.txt以禁用Raspberry Pi 3蓝牙。
sudo nano /boot/config.txt
在文件末尾添加
*如果您想将蓝牙更改为微型端口(坏)
dtoverlay=pi3-miniuart-bt
*如果要禁用蓝牙(良好)
dtoverlay=pi3-disable-bt
退出编辑器,保存您的更改。
第4步-重新启动PI
sudo reboot
步骤5-
a)禁用串行控制台使用以下命令编辑文件
sudo nano /boot/cmdline.txt
删除单词“ console=serial0,115200
”或“ console=ttyAMA0,115200
”
退出并保存更改
b)启用串行控制台使用以下命令编辑文件
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的答案是正确的,但是如果您只是讲了最新的阿拉伯文字,那么答案会很复杂。我需要做的只是将以下行添加到我的config.txt中(例如,在您插入fat32分区上的SD卡的Windows中):
dtoverlay=pi3-disable-bt
然后将其插入,pi将直接在控制台引脚上打印内容。
9600
。因此,如果我core_freq=250
在ma python脚本中设置然后配置我的波特率,那应该可以工作?另外,如果您可以查看一下,那就太好了:raspberrypi.stackexchange.com/questions/47379 / ...谢谢!