初始化与c库open()的串行通信会导致TX在RPi上发送一位
发布时间:2020-12-16 07:03:15 所属栏目:百科 来源:网络整理
导读:我正在尝试在RPI和FPGA之间建立串行通信.但是,使用标准C库open()来初始化串行接口时会出现问题:我使用示波器监视通过RX和TX线路发送和接收的内容.对open的调用会导致RPI的TX线变为低电平,持续一位的长度.我没有看到与其他计算机/ Linux PC的这种行为.关键是
我正在尝试在RPI和FPGA之间建立串行通信.但是,使用标准C库open()来初始化串行接口时会出现问题:我使用示波器监视通过RX和TX线路发送和接收的内容.对open的调用会导致RPI的TX线变为低电平,持续一位的长度.我没有看到与其他计算机/
Linux PC的这种行为.关键是,FPGA假设有效传输,因为他认为它是一个起始位,但事实并非如此.
我检查了安装在RPI上的minicom.一样.启动minicom会导致TX线发送一位.一旦minicom启动,通信将按预期运行,并且所有字节都具有正确的帧大小.在打开调用初始化串行通信时,有没有办法抑制TX线变低?这是预期的行为吗? 解决方法
这是一个超级牵强的预感,但是
this code看起来有点可疑,来自PL011
serial port driver中的pl011_startup()函数:
/* * Provoke TX FIFO interrupt into asserting. */ 在启动端口时,似乎它正在使TX线紊乱,这可以解释您所看到的脉冲.当然,在得出结论之前肯定需要进行更多的调查. 所以,我想我的“答案”归结为:听起来很奇怪,也许这与司机有关? 当然,解决这个问题的一种方法是在FPGA端应用一些注意事项,假设您有更多的控制权. “正确的”框架将处理这一点,并明确表示可以丢弃虚假发送. 更新:我的意思是,如果“正确的”消息总是由某个字节序列构成,则FPGA可能无论如何都能丢弃无效(“无帧”)数据,从而对随机脉冲免疫.例如,可以将消息定义为始终以SOH(标题开始)或SOT(文本开始)符号(分别为bytes with the values 0x01 and 0x02)开始. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |