问题标签 [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 投票
1 回答
1389 浏览

c - 更改 LPC 1768 的波特率 UARTx 不起作用

我在更改 lpc1768 上的 uart 波特率的方式上遇到了一些问题。

要初始化和配置我的 uart,我使用以下代码,它适用于 9600 波特或 38400。

但是要将波特率从 9600 更改为 38400,我尝试将 DLM/DLL 和 FDR 寄存器更改为适当的值(与上面的代码相同)。但这不起作用......(波特率未定义)。

我的 pclk 是 18MHz

只改变这三个寄存器是不够的?我错了吗 ?

0 投票
1 回答
1013 浏览

python - pySerial 不喜欢低值

在使用 MCU 时,我正在尝试通过 RS232 链接与 PC 桌面进行通信。

我做了一个非常简单的测试程序:每n毫秒发送一次“Hello world!\n” 。

最相关的链接连接参数是:

  • 端口:/dev/ttyUSB0
  • 波特率:57600 bps
  • 8 个数据位
  • 1 位停止
  • 无奇偶校验和硬件控制

为了检查我是否收到了从 MCU 到 PC 的数据,我将 /dev/ttyUSB0 设置为:

进而,

所以,我正确地接收到来自 MCU 的数据。

但是,这里的问题是,当我想将 Python 与 pySerial 模块一起使用时,数据是绝对错误的:

在这一点上,我已经为这个字符串更改了“ Hello world!\n”输出字符串(MCU 端):0xde, 0xad, 0xbe, 0xef。而且,我用 pySerial 得到的是:

有用!我又改了一次,现在是这样:0x00, 0x01, 0x02, 0x03, 0x80, 0x81, 0x82, 0x83。结果:

结论:pySerial 将字节值更改为小于 128 的相同值加上 128。

我不知道为什么会这样。我在其他场合(2.4 版)使用了 pySerial 模块,一切正常。我在 Ubuntu 11.10 和 Ubuntu 10.04 中尝试了 2.5 和 2.6 版本,但没有用。有什么线索吗?

PD:同情我的英文写作。我没有像我应该的那样精通英语。

0 投票
1 回答
944 浏览

usb - 在没有 JTAG 的情况下将代码嵌入到 MSP430

我是这个主题的新手,想学习如何将代码嵌入到 MSP430 中。我有一个分线板 MSP430-H5438,但我没有使用 JTAG 接口。我已经准备好 IAR 生成的代码(十六进制文件)(ADC、SPI 接口),但是我无法将它们加载到 IC 中。我正在使用 USB-UART 桥接器将设备连接到 PC,使用 BSL 脚本编写软件,但没有结果。在没有 JTAG 接口的情况下将 MSP430 连接到 PC 是否是错误的方法?我在这里绕圈子吗?提前致谢。

0 投票
4 回答
5874 浏览

c - C:拆分整数并将其转换为 ASCII

我想将整数拆分为数字,然后将每个数字转换为 ASCII(在 C 编程语言中)。

例子:

另外,如果整数只有 2 位长(十六进制),我仍然需要 3 次拆分:

提前谢谢了!

0 投票
5 回答
8371 浏览

c++ - 如何检查 WriteFile 函数是否完成

我想检查 WriteFile 函数是否已完成对 UART 的写入,以便我可以在同一个 ComDev 上调用 ReadFile 而不会导致异常。

似乎WriteFile 函数可以在写入完成之前返回。

我使用 Sleep(1000) 作为解决方法,但我该如何等待适当的时间?

0 投票
2 回答
1441 浏览

linux - Linux 用户空间:如何将 16550 兼容的 UART 永久置于环回模式

市场上有一个兼容 16550 的 UART,我想配置它。Linux 驱动程序由制造商提供,我必须通过用户空间程序持续配置(多)UART。

持久性意味着即使我的配置器退出后配置仍保留在芯片内。

我遇到的问题是内核驱动程序中的 uart_ops 操作似乎通过其 .startup 和 .shutdown 操作影响了 MCR(调制解调器控制寄存器)的内容。手头的任务是通过将 MCR 寄存器的第 5 位(从 0 到 7)设置为 1 将 UART 置于环回模式。我通过制造商提供的 IOCTL 来做到这一点(顺便说一句,还有其他方法吗?),但是要访问 IOCTL,我必须提供一个文件描述符:这意味着一个 open()。然后,当我的配置器退出时,系统 close() 文件描述符。

因此,调用了 uart_ops.shutdown() 函数并且我的 MCR 的内容丢失了。后续应用看不到UART处于loopback模式,所以没办法测试。

怎么做?打开端口/关联设备节点,然后在 MCR 中启用环回,然后从不关闭描述符(通过睡眠或无限循环)?这是一个可以接受的解决方案吗?后续应用程序能否在环回模式下看到 UART?

如何避免在后续应用程序测试环回模式之前调用 uart_ops.shutdown 函数及其执行的 MCR 覆盖?

谢谢你。

编辑:

有问题的 UART 是 Exar XR17D158 (http://www.exar.com/connectivity/uart-and-bridging-solutions/pci-uarts/pci-uarts-universal-3-3v-or-5v/xr17d158) 和驱动程序可在此处找到:http ://www.exar.com/common/content/document.ashx ?id=20639&languageid=1033 作为 uart_ops.startup 和 uart_ops.shutdown 成员传递的 serialxr_startup 和 serialxr_shutdown 位于第 806 行和第 902 行在 xr17c15x.c 文件中。

0 投票
2 回答
6331 浏览

microcontroller - 通过 8051 微控制器上的中断进行 UART 传输

我的平台是一个 c8051F120 微控制器。我想使用中断通过 UART0 发送(=tx)字节。到目前为止,我的设计如下:

我很确定通过 Timer2(不是上述代码的一部分)对 UART0 寄存器和计时进行的初始化是正确的,因为我可以使用阻塞功能:

当我想切换到中断设计时,当然我也设置了

有人在我的设计中发现试图使用中断的缺陷吗?或者,有人有这方面的示例代码吗?谢谢!对 jszakmeister 大喊一声,他回答了我关于阅读 TCNT 寄存器的问题。

0 投票
2 回答
17679 浏览

embedded - 通过 USB 模拟 UART

有人知道是否可以通过 USB 模拟 UART(简单串行发送和接收)?这将如何实现?

我在 Microchip 网站上找到了这个链接,但不是很及时。

http://www.microchip.com/forums/m522571-print.aspx

有任何想法吗?谢谢。

0 投票
2 回答
4273 浏览

c - UART DMA Tx/Rx 架构

可能重复:
UART ISR Tx Rx 架构

我现在正在使用 TI micro,它包括一个 DMA UART 驱动程序和一个支持并行任务的操作系统。UART驱动的功能包括:

  • 静态无效 HalUARTInitDMA(void);
  • 静态无效 HalUARTOpenDMA(halUARTCfg_t *config);
  • 静态 uint16 HalUARTReadDMA(uint8 *buf, uint16 len);
  • 静态 uint16 HalUARTWriteDMA(uint8 *buf, uint16 len);
  • 静态无效 HalUARTPollDMA(void);
  • 静态 uint16 HalUARTRxAvailDMA(void);
  • 静态无效 HalUARTSuspendDMA(void);
  • 静态无效 HalUARTResumeDMA(void);

我正在尝试与另一个外围设备通信,该外围设备接受以回车符终止的消息,然后以回车符响应消息。

我很好奇构建这种类型的通信状态机的最佳方法是什么。我的问题是为 UART 端口设计回调函数,使其...

  1. 不会挂起系统等待响应。(某种超时)
  2. 如果响应被读取得太快,它会将响应连接在一起
  3. 回车将表示消息的结束

基本理论是这样的:

这个想法有几个明显的缺陷。我希望有人可以就如何进行这种类型的交流分享一些想法?

谢谢!

0 投票
1 回答
5865 浏览

windows - 串口中断条件

我正在通过 COM 端口与多个设备建立通信。

为了进行存在性检查,我想实现当前设备可以在其 UART TX 上设置所谓的 BREAK 条件。(中断条件是发送方将其 TX 设置为低 8 位以上的条件。)

但是如何在 Windows 下的 PC 端检测到这种情况呢?我找到了一些设置休息条件或发送定时休息的功能,但不是检测一个。