我正在修改/开发SDIO UART驱动程序.
并想知道:
tty驱动程序在读/写操作期间如何与UART驱动程序交互?我对缓冲管理很感兴趣.
我在网上搜索,但没有找到必要的信息.
有人可以对此有所了解吗?
先感谢您.
寻找一些帮助来测试具有OMAP L138的硬件流控制的UART实现。为了测试实现,我使用minicom了模拟串行链接的另一端的方法,并且正在寻找一些有关如何配置它的见解。
我有一个简单的应用程序,它通过UART将消息从OMAP发送到minicom。如果OMAP和minicom均配置为不使用硬件流控制,则此操作将按预期进行。当我打开硬件流控制时,在minicom上看不到任何输出。
这是我遵循的步骤列表:
stty我启用rts / cts握手stty -F /dev/ttyS1 crtscts。使用命令,stty -F /dev/ttyS1 -a我可以确认已启用crtscts。上面的两个更改确保在终端程序和UART驱动程序中启用了硬件流控制。OMAP上的UART也已配置为使用硬件流控制。
但是,上面列出的对minicom的更改似乎不足以使流量控制正常工作。启动应用程序后,来自OMAP的RTS(发送请求)信号变低,从而向minicom指示它要发送数据。如果配置正确,minicom应将OMAP的CTS(清除发送)信号拉低,并开始接受数据,直到达到指定的接收缓冲区阈值为止。这不会发生。OMAP的CTS输入始终为高。只是为了踢一下,我尝试在OMAP和voila上将RTS与CTS短路,期望的消息确实会在minicom上显示!这是一张图像,显示了两者如何连接。

从我的尝试来看,好像我在配置minicom的方式中缺少了一些东西。任何建议表示赞赏。
我使用的是MPLABX v1.80,xc32 V1.21和Microchip的示例uart代码(基本示例).
我在项目属性中选择了模拟器.我在项目属性中为窗口输出启用了UART1.
我尝试使用UART1和UART2进行编译.但是我似乎无法找到输出的位置.
示例代码如下:http: //ww1.microchip.com/downloads/en/DeviceDoc/PIC32_UART_CodeExample_041613.zip
谢谢你的帮助.
我正在尝试使用DMA为RX和TX与UART外设进行通信.我正在使用ST提供的HAL库(使用STCubeMX生成).
我正在处理一个1.5MBaud的UART通道 - 所以为了不丢失任何数据,我已经在直接模式下配置DMA,使用循环缓冲器,并处理半传输中断以处理数据,并保持DMA在线获取更多数据.
问题是有时我可以在UART的状态寄存器中看到帧错误位是打开的,有时溢出错误标志也是打开的.
我可以处理丢失的字节(在结构化数据包上使用crc),但问题是外设停止接收数据 - 但DMA不会引发错误,或停止传输.
因此,如果我尝试接收数据,并且系统上的标志挂起.
我看到HAL提供了一个应该处理UART_Error的__weak函数,但它永远不会被调用 - 并且HAL句柄中的状态保持正常.只看一下注册表就可以看出存在问题.
我该如何检测/处理这类错误?
谢谢
我一直在寻找Beaglebone Black(BB)支持的UART波特率。我无法在BB系统参考手册或西塔拉处理器本身的数据表中找到它。我正在使用pyserial和Adafruit BBIO库通过UART进行通信。
这是否支持合理范围内的任何值还是更标准的值(9600、115200等)?
谢谢你的帮助。
-更新-它与PySerial支持的波特率有关。这给出了潜在波特率的列表,但没有列出将与特定硬件一起使用或不与特定硬件一起使用的特定波特率。
我想从串行端口绘制实时数据。我认为R是完成这项工作的好工具。我在尝试从串行端口(COM4)读取数据时遇到了麻烦。我已经验证了数据是通过terra项传入的(并在尝试R之前关闭了会话),但是我似乎无法在R中得到任何东西。
我检查了一些地方,包括这些线程: 如何在Windows上调用使用scan()的脚本? 如何在脚本中包括交互式输入以从命令行运行
我还在R论坛上找到了这个旧主题:https : //stat.ethz.ch/pipermail/r-help/2005-September/078929.html
这些已经使我走了这么远,但实际上我似乎无法从串行端口将任何数据输入到R中。
此时,我可以使用VBA在excel中流式传输数据,但是我想在R中进行此操作,以便更好地实时绘制和过滤数据。
编辑:感谢到目前为止的帮助。在编写此编辑文件时,我刚刚开始工作,所以代码如下:
#
# Reset environment
#
rm(list = ls()) # Remove environemnent variables
graphics.off() # Close any open graphics
#
# Libraries
#
library(serial)
#
# Script
#
con <- serialConnection(name = "test_con",
port = "COM11",
mode = "115200,n,8,1",
buffering = "none",
newline = 1,
translation = "cr")
open(con)
stopTime <- Sys.time() + 2
foo <- ""
textSize <- 0
while(Sys.time() < stopTime)
{
newText <- read.serialConnection(con)
if(0 < nchar(newText)) …Run Code Online (Sandbox Code Playgroud) 与RS-232通讯时,断点和错误指示实际上会亮起。有时,CTS也会发光。
因此,一段时间内打印的数据会变成垃圾。稍后,在重置一些实际条款后,它会得到纠正。
这是显示错误的屏幕截图:

BREAK的真正含义是什么?休息一下会怎样?
我试图在DMA模式下实现UART,以便在每次按下按钮时发送一个简单的字符串.
所以我使用CubeMX生成代码,我已经在正常(非圆形)模式下配置了UART2 TX DMA,也没有FIFO和没有突发.
每当我在调试模式下运行代码时,我看到我第一次尝试发送字符串,它工作正常并发送字符串,但在DMA IRQ处理程序中,它调用TxHalfCpltCallback而不是TxCpltCallback,并且UART gState将保留在BUSY中模式,所以我不能用它来传输更多的字符串.
我的问题是为什么它调用TxHalfCpltCallback而不是TxCpltCallback?我应该如何处理它(因为HAL引用表示它等待发送缓冲区的后半部分!什么?)
而且,发送下一半数据是否会重新关联UART的gState?
我想请某人给我们一个在项目中配置UART的示例.
我正在从事一个项目,该项目需要在不同的引脚上交替使用至少 2 个串行通信(2 个 TX 和 RX)。我想知道是否可以为此任务对 Arduino Nano 进行编程。我在互联网上进行了研究,发现硬件(ATmega328)的处理器只有一个 UART,默认情况下这个 Arduino 有专用的 1 个引脚 TX 和一个 RX,但也看到在 Arduino UNO 中是可能的,它有相同的处理器,使用 SoftwareSerial 库处理 2 个串行通信,Arduino Nano 有可能吗?
试图为 STM32F4 UART 推出我自己的代码。该芯片的一个特点是,如果您像 GNAT 编译器那样使用字节寻址来设置单个位,则半字的另一个字节中的相应位将被设置。数据表说使用半字寻址。有没有办法告诉编译器这样做?我试过 CR1_register'Size use 16;
但这没有效果。写入整个 16 位字有效,但您无法设置命名位。