gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:41:03 24 4
gpt4 key购买 nike

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

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

最佳答案

这是一个 super 牵强的预感,但是this code似乎有点可疑,来自 PL011 serial port driver 中的 pl011_startup() 函数:

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

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

所以,我想我的“答案”可以归结为:这听起来很奇怪,也许是司机的问题?

当然,解决此问题的一种方法是在 FPGA 端多加注意,前提是您可以更好地控制它。 “适当的”框架会解决这个问题,并明确表示可以丢弃虚假发送。

更新:我的意思是如果“正确的”消息总是由一些字节序列构成,FPGA 可能无论如何都能够丢弃无效(“未成帧”)数据,从而成为免疫随机脉冲。例如,消息可以定义为始终以 SOH( header 开始)或 SOT(文本开始)符号(分别为 bytes with the values 0x01 and 0x02)开头。

关于c - 初始化与 c 库 open() 的串行通信导致 TX 在 RPi 上发送一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14579974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com