串口通信(1)

我想用树莓派与传感器连接,完成控制与通信。

一、起初,能发出正确的指令、但接收到的是远超9字节的返回,且发出的正确指令并非每一次都能成功发出

经过排查,我将怀疑重点定在了自己使用的是miniuart上,通过从/dev/ttyS0向/dev/ttyAMA0的调整,问题得到了一定程度的缓解。

然而这一调整也许是非必要的,原因在于:经过这一调整问题虽有缓解、但依然没有彻底解决。直到做了其它调整之后,问题才彻底解决。所以也许从一开始就做“其他调整”的话,也许在/dev/ttyS0上,也能得到正确、理想的解决。

二、换到/dev/ttyAMA0之后,能正确发出命令、能正确的收到回复。然而发出命令并非每一次都能成功,收到的回复也并非每一次都能收到,即便收到了回复,也不完整

尤其是收到的回复信息很奇怪,总会丢掉最初的3个字节。例如预期收到123456789,实际收到的或者收不到、或者就是只能收到456789。

几经排查,最终发现是agetty进程在竞争使用/dev/ttyAMA0资源。并且这个agetty进程不仅仅是竞争使用、而且似乎是在不断地改变波特率(它可能是在几个常用波特率之间进行变化以扫描可能来临的登录请求)。

/sbin/agetty -o -p — \u –keep-baud 115200,57600,38400,9600 – vt22

正是因为它在不断地改变波特率,所以我的程序即便内部设置了19200的波特率,程序在发出或接收数据的时候,依然会因为波特率在变化,导致首发信息一会儿正常、一会儿异常;而且在“偶尔正常时”,收到的数据也会被agetty进程“吃掉一些字节”。

三、通过设置解决问题

在raspi-config关于“串口”的设置中,我发现它有2个问询对话:是否支持串口登录、是否激活串口。我之前应该是没有注意到这两个问题,全部选择了“是”引起agetty被启动激活。

关闭“支持串口登录”、使能“支持串口”,问题得到解决。此刻,我从树莓派向外部设备发出指令、已经可以正常的接收到预期的回复内容了。

以上是我关于当前这个问题产生的整个过程的记录、猜测,以及解决方法。

每天学习一些新的知识,尽可能保持自己的学习动力。

Related Posts

电容选型备忘

以下是当前的选型和可能的问题: 位置 型号 尺寸 容值/耐压 ESR 单价 主边 RYHV100V68UF10*10 D10L10.5 68uF/100V 45mR ¥2.43 副边 HV0J827M0607PZ D6.3L7.7 820uF/6.3V 22mR ¥0.99 感觉这两个电容的ESR都太大了,重新考虑更换一下。主边电容我感觉应该是没有问题的,原因是主边电容存在的意义是“稳压”而不是“蓄能”。从PSE设备输出的电压/电流,应该可以近似认为是“横流的”,这是因为PSE设备是“大品牌”的产品,它们的输出能力不会太“拉跨”。当然,如果PSE的确是质量很差的,那么对于我而言,我的主边电容就要更甚重的进行选择、甚至是对主边的输入位置进行更多的优化,才能确保拥有干净平直的输入电压。 但我还是想先把问题简化一下,姑且认为前面的PSE能够给我一个非常稳定的电压,那么我的主边电容就只担负着偶尔的稳压作用。甚至大胆一些的说,主边电容即使不存在,也是可以的。 之所以要做如上的假设和简化,是因为我想将现在的问题焦点更聚焦一些:我就是遇到了输出电容、输出电压的问题。 上面是简化之后的示意图,按照上面提到的,C18现阶段认为是稳压电容,因而可有可无。对我而言真正的问题出现在C19这颗电容上:它的存在引起了纹波、且纹波巨大。 状态 型号 尺寸 容值/耐压…

风扇备忘

一、初试四线风扇 买了个风扇,4线的:红、黑、黄、蓝。按照商家的介绍是:红(+)、黑(-)、黄(FC)、蓝(PWM) 分别利用树莓派上面的PWM1和PWM0(副)进行了一下测试,都可以正常工作。 之所以在使用PWM0时用的副引脚,而没有使用PWM0的主引脚,是之前没有看到,主引脚距离现在用到的这些引脚也挺远的,就不准备再调整了。 至于FC反馈,也各自尝试了一下,没有问题。 接下来再买一个风扇,然后就尝试一下两个风扇同时、分别用pwm0和pwm1一起驱动,看看效果。 二、两套风扇同时应用 还真是“一步一坑”哈。今天第二个风扇到货了,我就忙不迭的也装了上去。结果两个风扇运行起来,发现存在着一些问题:其中总有一个风扇会“失速”。而且一旦进入失速状态,除非重启电脑,否则无论是停掉进程再启动、还是重新电脑上的服务,都不能让已经进入“失速”状态的风扇,重新回到正常状态。

关于GPIO4引脚的设置和更改

toor@raspberrypi:~ $ pinctrl get 44: ip pu | hi // GPIO4 = inputtoor@raspberrypi:~ $ pinctrl set 4 dhCan’t set pin value, not an outputtoor@raspberrypi:~ $ pinctrl set…

串口占用问题备忘

toor@raspberrypi:~ $ sudo lsof /dev/ttyAMA0COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEagetty 585 root 0u CHR 204,64 0t0 134 /dev/ttyAMA0agetty 585 root 1u CHR 204,64 0t0…

关于主回流mos管的选择

我当前选择使用的是 BUK7M6R3-40EX ,电气性能上应该也是足够使用的。然而焊接太麻烦了、PCB走线也有一些困难,所以考虑更换一个: 从 BUK7M6R3-40EX 更换成 BUK7275-100A-VB。

临时备忘一下关于整流桥的困惑

之前使用的是:MB10F-13,耐压1000V、电流0.8A,MBF封装。 今天入手:KMB210F,耐压100V、电流2A,应该也是MBF封装的。 我的困惑是对于我当前期望的应用场景,这里的整流桥更正确、合理的选型应该是哪一个、为什么?