树莓派连接串口时无法开机
- 我的情况
- 我的思考
- 我的解决过程
- 重点
- 参考
我的情况
因为项目需要,因此需要使用树莓派控制电机,而电机是一上电就会给树莓派发送数据,而这时树莓派还正处于开机时,结果就是开机失败。当将串口断开时就又可以正常开机了。串口的连接方式是使用了树莓派的GPIO口ttyAMA0对应的RX和TX。
我的思考
我个人认为是因为开机时树莓派要检查GPIO口,而检测到有一个口电压不对,因此出现了错误,导致无法开机。
我的解决过程
首先就是打开bing和Google进行搜索解决方法,找了好久,并没有解决。最终我把目光投向了chatgpt
首先是问他这个问题
这时我还没说我是通过USB连接的串口还是GPIO连接的串口,他居然判断是否是GPIO连接的串口,于是我感兴趣的把目光投向了他说的GPIO引脚的占用问题
于是他这给出了这个答案,我便继续追问
经过这样的设置后,仍旧没有解决问题,但是给了我思路,同时我发现我的树莓派的config.txt不起作用,起作用的是/boot/comfirm/config.txt(好像是这个),
重点
于是我询问他怎么开机时关闭对GPIO的检查
我把它写到了我对应的起作用的config.txt文件中,的确连接电机时可以开机了。但是问题出现了,我打开串口时接收不到电机发给我的数据了,这也不太行 啊
原因时我通过gpio readall命令读取到那两个串口的引脚的模式改成了in而正常能够读取数据的格式应该是ALT0,虽然我不知道这是啥模式。
于是它给我推荐了一种开机后修改引脚模式的指令,于是我通过该指令可以设置指定的GPIO口为ALT0模式这时电机的数据就可以接收到了
经过整个过程后我发现,仅关闭串口RX对应的GPIO检查就可以开机了,因为只是这个口对开机产生了影响。而设置RX是用的是物理口编号,而开机后修改模式后用的是BCM编号。总之解决了连接电机开机并开机后又能接收数据,解决了我的问题。
参考
[1] chatgpt :https://chat.openai.com