为什么我不能通过RS232成功发送消息?

2019-07-14 17:23发布

在过去的一周里,我一直希望从STM32F407发送UART消息,并使用白蚁通过ugreen RS232转USB电缆在笔记本电脑上读取它。我已经使用STMCube生成代码并通过阅读“stm32f4xx_hal_uart.c”文件顶部的相关说明(并观看大量视频和在线阅读)添加代码。我在示波器上检查了传输的消息,并且它与ASCII表示相匹配。例如,我发送'Q',它是0101 0001,我收到'W',它是0101 0111.范围上的读数显示: 1.png 白蚁输出与示波器上显示的信号相同。 2.png 我已确认波特率/奇偶校验/ HWcontrol在白蚁和我的代码中是匹配的。为了获得正确的字符,我尝试降低和提高波特率。
我尝试过不同的字符集来尝试查找导致显示错误字符的模式。
另外我尝试过不同的终端,比如Putty或Teraterm。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
iettke
2019-07-15 05:27
如果逻辑电平反转,有时可以“作弊”并将TTL信号馈入RS232输入。该方法的可靠性取决于RS232输入上使用的芯片。 4.png 图2.传输的波形。最重要的是你传输的'Q'的位模式。在底部是RS232输入如何读取它。

请注意,RS232输入正在寻找一个正边沿来指示起始位。直到数据的第二位才会发生这种情况,因此此后的所有内容都是向右一位并且在接收器看到它时反转。幸运的是,你的MSB是停止位的正确逻辑电平,因此接收器将其解释为有效帧,对其进行解码并显示“W”。

出于测试目的,您可以反转TTL输出。这可能会起作用,因为它正在“工作”。

一周热门 更多>