c/c++语言开发共享初始化与c库open()的串行通信会导致TX在RPi上发送一位

我正在尝试在RPI和FPGA之间建立串行通信。 但是,使用标准C库open()来初始化串行接口时会出现问题:我使用示波器监视通过RX和TX线路发送和接收的内容。 对open的调用会导致RPI的TX线变为低电平,持续一位的长度。 我没有看到其他计算机/ Linux PC的这种行为。 关键是,FPGA假设有效传输,因为他认为它是一个起始位,但事实并非如此。

我检查了安装在RPI上的minicom。 一样。 启动minicom会导致TX线发送一位。 一旦minicom启动,通信就会按预期运行,并且所有字节都具有正确的帧大小。 有没有办法在打开调用初始化串行通信时抑制TX线变低? 这是预期的行为吗?

    这是一个超级牵强的预感,但这个代码似乎有点可疑,来自PL011 串口驱动程序中的pl011_startup()函数:

     /* * Provoke TX FIFO interrupt into asserting. */ 

    在启动端口时, 似乎它正在使TX线紊乱,这可以解释您所看到的脉冲。 当然,在得出结论之前肯定需要进行更多的调查。

    所以,我想我的“答案”归结为:听起来很奇怪,也许这与司机有关?

    当然,解决这个问题的一种方法是在FPGA端应用一些注意事项,假设您有更多的控制权。 “正确”的框架将处理这一点,并明确表示可以丢弃虚假发送。

    更新 :我的意思是,如果“正确”的消息总是由某个字节序列构成,则FPGA可能无论如何都能丢弃无效(“无帧”)数据,从而对随机脉冲免疫。 例如,可以将消息定义为始终以SOH (标题的开头)或SOT (文本的开始)符号(分别具有值0x01和0x02的字节 )开始。

      以上就是c/c++开发分享初始化与c库open()的串行通信会导致TX在RPi上发送一位相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560216.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐