问题标签 [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.
microcontroller - 如何使用微控制器 8051 通过中断 4 从 UART 获取字符串
我有点难以从中断 4 函数中获取字符串。但是当我尝试获取单个字符并在 LCD 2*16 中显示时效果很好。但是当我尝试从“dot[i]”变量中获取字符串以显示给 LCD 时,它不起作用。
这是我的代码:
对于我使用 Keil v4 的编译器
arm - Atmel SAM4S Xplained UART
我有一个 SAM4s Xplained 并想使用 UART1 但找不到示例或帮助。我自己尝试过,但它不起作用。
到目前为止,这是我的代码:
conf_uart.h
conf_uart.c
我尝试了不同的东西。作为示例,我激活了自动回显,但我的计算机上没有收到任何内容,我的 SAM4 上也没有收到任何内容。
embedded - PIC 18F87J50 USART 配置和 ISR 故障
我在使用 PIC 18F87J50 的项目中遇到问题,特别是在我与它的 2 个 USART 通道协调时。
有2个主要问题。
1.) 无法设置目标波特率:
我正在使用 Open1USART() 和 Open2USART() 函数来初始化我正在使用的两个 USART 通道。我希望它们都配置为 14,400 波特。这些函数有 2 个参数。第一个是配置 USART 的位字段(异步与同步模式、8 位与 9 位等)。第二个是配置 USART 波特率的 SPBRG 值(取决于系统时钟速率)。
我打电话给两个像:Open1USART(USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_BRGH_LOW & USART_RX_INT_ON & USART_TX_INT_OFF, 346);
在我的设置中,SPBRG 的 346 似乎给了我 14,400 波特(在 O 型示波器上证实,一位的宽度约为 70us)。
问题是这只适用于 USART 2。在 USART 1 上,相同的 SPBRG 值给了我 57,600 的波特率。此外,在使用 SPBRG 值(并查看示波器时序以了解实际波特率影响)时,我看到了一些有趣的事情。
波特率随着我将 SPBRG 值从 0 增加而降低。SPBRG 为 87 给我 57,600 波特,173 -> 28,800 ......但它在大约 255 处重置。在 255 时,我的波特率约为 19,000。但是在 256 时,我的波特率非常高(~1,000,000)。然后,当我将 SPBRG 数字进一步向上移动时,波特率会越来越慢,但永远不会低于 19,000 波特标记,也永远不会一直下降到我需要的 14,400。
好的,所以我溢出了 SPBRG 字节,对吧?但是 USART 1 和 2 的配置方式完全相同,我可以在 USART 2 上使用 > 255 的 SPBRG 值。它们都具有相同的 BRGH 设置(低)和 BRG16 设置(高)。此外,根据这篇文章(PIC18F2680 上的 UART 接收中没有触发中断),似乎 TRISC6-7 是正确设置的重要位。我按照帖子的建议设置了这些(6 低,7 高)。
如果有帮助,我可以分享一些代码片段。
2.) ISR 不为每个传入字节触发:
我为 USART1 和 2 打开了 UART RX 中断。我没有以正确的波特率在 USART1 上说话,所以没有收到我的外围设备的回复。但是,在 USART2 上,我正在以 14,400 波特率说话,并且我的外围设备正在适当地回复(通过范围验证)。通过示波器,我可以看到我希望收到的所有 16 个字节,并且在线上的时序看起来很棒。但是,我的这个端口的 RX 中断只触发前 2 或 3 个字节。我需要连续接收 8 个字节才能知道外围设备正在回复什么......但我从来没有超过 2 或 3。
所以中断正在触发,但不是针对所有字节。
我知道我需要保持我的 ISR 非常短,以免错过下一个传入字节的中断,但即使我将 ISR 剥离到它的核心功能(删除调试打印输出等),我仍然只看到前 3 个字节。在示波器上,我可以看到前 3 个字节和其余字节之间没有区别(至少在位时序上没有)。前三个字节的值始终为 0xFF(这是预期的)。其余字节是不同的值,但这是我能看到的唯一区别,它并不能真正解释为什么没有 ISR 触发器。上面提到的另一个问题的链接当然似乎也与这个问题有关。但 ISR 正在触发,但并非一直如此。
您可以提供的任何帮助或见解将不胜感激,我将与我的客户再次核对,以确保我可以添加更多代码片段。
driver - 需要帮助将 Arduino R3 用作串口转 USB 转换器(进行编程)
我已经研究过(并且学到了很多东西),但我在编程方面的经验很少,到目前为止只真正了解基本草图。我想使用 Arduino R3(更具体地说,是 USB 到串行转换器芯片)来编写一个全尺寸的业余无线电。
我已将我的收音机适当地连接到 Arduino(5V、Rx、Tx、Gnd)并将 Arduino 置于三态模式(显然你必须这样做..),但我似乎缺乏合适的驱动程序。我基本上希望我的 Arduino R3 能够完全像这样运行:CP2102。请注意,我并不是超级便宜。要在我住的地方得到这样的东西至少需要一个月的时间。也有人说我应该去掉Atmega芯片。最终目标是我在 com 端口上拥有一个带有驱动程序的设备,而不仅仅是一个“未知设备”。
所以,我的问题是:让 Atmega 保持开启状态,还是将其移除?我需要哪些驱动程序?
谢谢!
编辑:我在发布后几乎完全找到了我需要的东西。出于某种原因,我无法让它工作,但也许你可以帮助我理解?这是链接LINK如果有人热衷于帮助我!
澄清一下:以前已经做过了,但我感觉人们忽略了他们认为显而易见的事情,但对于像我这样尚未专业的修补匠来说却不是:/
非常感谢!
discovery - stm32f0 uart编程
我试图让usart在我的stm32f0-discovery上工作,但现在我发现关于这种“缺乏”的文档有没有人有任何usart为stm32f050工作的例子?
谢谢。
巴特·特尼森
microcontroller - 发送UART中断
我需要与需要 UART 在其 RXD 引脚(我的 TXD)上中断 1 秒的芯片交谈。
我使用 ZW0301 控制器,它的 UART 控制器不支持中断命令。是否可以模拟break 命令?禁用 UART 控制器(将引脚置于 GPIO 模式)并将 TXD 置于低电平可能就足够了。或者这行不通?
一个好的描述的链接表示赞赏。
c - linux系统打开设备文件失败
我在基于 omap4 的系统中工作。它有 4 个 UART 端口,因此内核可以:
当我从用户空间打开时:
它成功打开,我可以用它进行读写。
但是当我打开时:
它失败了。
我仍然可以在我的系统中看到/dev/ttyO3
节点,为什么我无法打开它?任何的想法?
interrupt - 具有高波特率循环缓冲器的 PIC 中断驱动 UART
我正在尝试从具有 PIC 18f4550 的传感器以波特率 = 38400 读取数据。使用 FIFO 循环缓冲区,我可以将传感器中的数据存储到数组中。
传感器将响应请求命令并返回 15 个字节的测量值(与我创建的循环缓冲区相同)。我必须抓取所有15 个字节并将 \r\n 放在末尾以分隔每个测量值,因为没有分隔符。
所以我使用了两个指针,inputpointer和outputpointer来存储字节和传输字节。因为18f4550只有一个硬UART,所以我用它来读取数据并向传感器发送命令,同时使用软件UART通过RS232输出到笔记本电脑。
当缓冲区被读取并发送到串行端口时,我请求进行新的测量。
它工作得很好,但我只想知道当头指针超出尾指针时是否有更好的方法来避免FIFO溢出,即当有大量数据被缓冲但它们无法及时输出时。
这是代码:16MHZ PIC 18f4550 mikroC 编译器
}
serial-port - beaglebone 串口中断
我需要在 Beaglebone 中为串行(uart)端口设置中断,这样当串行端口接收到任何信息时,会自动激活中断(功能),对接收到的数据进行处理。
我已经搜索了这样做的方法,但没有成功。我曾在微控制器中处理 uart 端口的中断问题,尽管我可以在 Beaglebone 中做同样的事情。
有什么建议吗?
提前致谢。
uart - UTXEN 不会设置
芯片为PIC24FJ256GB210
UART #3 上的#UTXEN 位不会设置。
它使用完全相同的指令序列在 UART #1 上设置良好。UART #2 也是如此。
作品...
失败...
所以我想,“啊,这是我想要的一个位,而在所有只读位之上移动的完整字会以某种方式导致问题。我将只设置一个位”。
不,仍然不会设置那个位。
失败...
- 更新 -
我可以在 MpLab 中设置该位。有什么不同 ?
我真的很困惑。这里还有什么可以防止该位被设置?