初始化与c库open()的串行通信会导致TX在RPi上发送一位

初始化与c库open()的串行通信会导致TX在RPi上发送一位,第1张

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

总结

以上是内存溢出为你收集整理的初始化与c库open()的串行通信会导致TX在RPi上发送一位全部内容,希望文章能够帮你解决初始化与c库open()的串行通信会导致TX在RPi上发送一位所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1226455.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存