问题标签 [uart]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5630 浏览

avr - 在 FreeRTOS 中为 USART 接收创建新任务

我正在使用带有 AVR Studio 5 的 EVK1105 开发板作为我的 AVR 项目的开发 IDE。我在其中使用 FreeRTOS。我在这块板上有 3 个 USART 端口。一个外部模块通过 USART-RS232 模式连接到我的 AVR32 板。它以 19230 波特率、7 数据位、奇校验、停止位 1 和正常通道模式将连续串行数据发送到我的 USART0 板上。为此,我创建了一个新任务。在每 9 个数据字节之后,它发送 '\n' 和 '\r'。所以在我的任务中,我继续在字符串缓冲区中收集 9 个数据字节,然后在 USART1 上传输它。我正在使用轮询方法从正在接收端口的 USAR0 收集数据。但是我在接收数据时遇到了问题。我不知道是时间问题还是调度程序在收集数据时切换了任务。但我没有得到所需的数据。

以下是我已经检查过的故障排除 1. 将我的外部模块连接到我的 PC 超级终端,这给了我完美的结果。2. 实现了使用从 USART0 接收的相同操作,并且无论接收到什么都将传输到 USART1,就像没有 FreeRTOS 一样。它工作正常。

请提出一些想法可能出了什么问题。我正在使用队列在 Tx 和 Rx 任务之间进行通信,以将字符串缓冲区从 USART0 传递到 USART1。处理队列有问题吗?如何解决队列问题?

我在 Rx Task 的无限任务循环中使用了 50 毫秒的延迟。它会产生问题吗?如果我不使用任何延迟,操作系统就会崩溃。请提出一些好的做法来在 FreeRTOS 中创建新任务,这样我就不会遇到任何时间问题。

0 投票
1 回答
1713 浏览

microcontroller - 在 PIC 16 上使用 USART 的正确方法

我正在尝试使用 PIC 16 上的 USART 功能接收 1 个字符。

发射器和接收器都是 PIC 16。

我可以检查调用接收函数的方式在概念上是否正确

提前谢谢了!

0 投票
2 回答
2031 浏览

arm - Atmega 和 ARM UART 连接。奇怪的行为

所以,这是一个复杂的问题,与 AVR 无关,但我认为问题在于 Atmega。

  • 我有基于 ARM NUC745 的 FOSCAM WI-FI 相机,它在 uClinux 下运行。那台相机上有一个 UART 端口,它与我的 Atmega 板相连。同时ARM板上的UART用于控制台输出和输入。

  • 我可以通过相机提供的网络界面发送命令,这些命令通过 ARM 板通过 UART 发送到 Atmega 板。

  • 我为 Atmega 编写了一个程序来读取来自 ARM 的 UART 数据。所有数据似乎都被 Atmega 接收了。关于接收到的数据,Atmega 通过 UART 将数据从 Atmega 发送到 ARM 板。在 VMLAB 中,我可以看到数据正在示波器中输出。但 ARM 板不接收该数据。当我将 Atmega 板与 ARM 板断开连接并将 ARM 板连接到 iMac 上的终端时,Atmega 发送的所有数据迅速出现在终端中,我为 ARM 板编写的程序接收到所有数据。

这是很奇怪的行为。似乎终端连接和 Atmega 串行连接不同,我不明白为什么:(((

抱歉,我无法正确格式化代码

这是Atmega的代码

和 ARM linux 的代码

有人可以帮我解决这个问题吗

0 投票
1 回答
2096 浏览

matlab - 通过 Matlab 进行虚拟 Com-Port 通信

使用 matlab 连接我的 Com-port 时,很多次(5 次中有 4 次)我收到错误

??? Error using ==> serial.fopen at 72 Port: COM21 is not available. Available ports: COM3, COM10, COM17, COM18.

但是,有时它会按预期连接并响应。谁能告诉我这有什么问题?

顺便说一句,我正在使用这个片段通过 USB 将我的微控制器连接到 PC

0 投票
2 回答
3689 浏览

c# - “端口 COMx 不存在” - 在 SerialPort 的 Open() 上引发异常

我的标题描述了我的问题......无法解决它。

它是通过 USB 电缆连接的串行 COM 设备(已安装适当的驱动程序)。我还可以看到系统检测到 COM 端口并存在于以下注册表项中:HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM

请指教。

更新:很抱歉没有像它必须的那样具有解释性。可能我知道为什么会发生这种情况:我的应用订阅了从 HKLM\HARDWARE\DEVICEMAP\SERIALCOMM 添加/删除值的事件。应用程序在注意到它后立即尝试打开端口。但是那个时候端口可能还没有准备好,所以这就是为什么我得到“端口不存在”的原因。只需 Thread.Sleep(2000) 解决了我的问题。

但是这个睡眠解决方案似乎不是很好的解决方案。也许我应该在其他地方检查在注册表中连接的设备?因此,当它真正存在并准备好连接时,我将连接到它。

谢谢您的反馈!喜欢堆栈溢出!

0 投票
3 回答
1729 浏览

serial-port - uart 和 pic 18f452 的问题

我对 pic18f452 和 uart 有疑问,我使用最简单的代码:

在永远的while循环之间我有这个代码

我的硬件液晶模块也有它工作得很好但是我在电脑上收到的数据是这样的废料

我已经检查了所有连接时间都没有错,我也更换了 MAX232 ic,但没有运气?!我的硬件就是这样 在此处输入图像描述

最后我所有的连接都正常(极性和其他一切?)编辑:我使用 mikroc 作为编译器

0 投票
2 回答
10997 浏览

arm - 在小型 ARM 微控制器中实现 uart 接收缓冲器的正确方法?

我正在为一个小型应用程序寻找接收缓冲区的想法,该应用程序通过 rs485 处理 921.6Kbaud 的 15 字节数据包。我正在考虑使用循环缓冲区作为 UART ISR 和 main 之间的接口。因为它是一个微处理器,我想把

在里面

主要的一部分,但我被告知这是不可接受的。

在类似情况下,人们如何处理他们的 UART?

0 投票
2 回答
1616 浏览

microcontroller - 图 16F913 UART 通讯设置

我在下面附上了我的代码(我正在闪烁一个 LED 以便能够看到循环正在发生 BTW)。

我没有通过 UART 发送任何数据,我有 Pic 16F913,引脚 17 是我想要获得的输出,我将它连接到 RF-42N 蓝牙模块,我知道该模块可以工作,因为如果我将 rx 连接到 tx,我会得到一个回声。然后我尝试了以下设置将字母“z”发送到蓝牙模块(并希望在我的手机上阅读,使用 blueterm)。我没有得到任何数据,我不知道默认的 FOSC 设置为什么,所以我尝试了 SPBRG 的各种值,希望我能够“猜出”正确的值,但似乎都没有工作。

我正在使用 Hi-Tech C 编译器(免费版)。

我希望这对每个人来说都是足够的信息,我只是不知道我错过了什么,我已经为此奋斗了好几个小时。

// 主文件

// UART.h

0 投票
1 回答
4050 浏览

timer - Avr-gcc:定时器/计数器中断与 UART 冲突?

请考虑以下示例(在 Arduino IDE 0022、Ubuntu 11.04、Arduino AtMEGA 2560 上尝试过),我正在尝试启动定时器/计数器中断并同时使用 ArduinoSerial类:

例如,通过串行打印输出将是:

...然后所有处理都将停止(由 LED 引脚 13 和 34 都没有动作表示);我想,这就是你在芯片世界中所说的 BSOD :) 从表面上看,一旦 ISR 例程第一次启动,就会停止。

如果您取出“寄存器更新部分”,则串行打印输出会按预期永远运行 - 而且(如预期),没有 ISR 正在运行。然而,如果“寄存器更新部分”被留下,而两条“ Serial.println(...”行被注释了——那么程序只打印“Hello from setup”——但中断确实运行(如引脚 34 上的脉冲所证明的那样)。

这似乎告诉我,你不能同时在 ATMega2560 上运行定时器 ISR 和 UART——这很愚蠢,因为我之前曾成功地在 ATMega328 上使用过同样的方法。

所以,我想知道我想要做的事情(串行打印输出和引脚脉冲)在这种架构下是否根本不可能 - 或者我只是在设置中遗漏了一些东西?

提前感谢您的任何答案,干杯!

(只是想注意这个 Serial 类实际上是在 Arduino IDE 包中 HardwareSerial.cpp 中的一个类定义上运行的;并且这个类定义了接收 USART 中断例程;认为这可能是问题所在 - 但我再次使用了相同的方法在 ATMega328 中,我看到它工作的地方..)

编辑:在Avr-gcc 上重新发布:定时器/计数器中断与 UART 冲突?- Arduino 论坛

0 投票
1 回答
1008 浏览

c - UART不能RX GPS NMEA语句

我的 UART 配置为 4800 波特率,我无法使用下面粘贴的 UART 代码接收 NMEA 语句(GPS 评估板)。GPS+Terminal 和 UART+Terminal 单独工作正常。但是 GPS+UART ,我永远无法接收任何句子 GPS 默认 buad rate 是 4800

知道UART哪里出了问题吗???