关于串口通信的疑惑

编过一点点串口通信程序(摄像机云台),当时有些问题没想明白,现在瞎琢磨了下。

你真的了解串口吗(示波器串口波形分析)

停止位怎么还有1.5位,不设停止位怎么也能用?

1. 也许大家都用了默认值。

2. 停止位和空闲的电平是一样的,多闲一会好像也没啥问题。

怎么从错误中恢复?

见过自动从高到低尝试波特率,需要在串口终端的键盘上不断敲击q键,单板机上的程序循环接收,收到'q'后退出。

电线不是下水管,电线上的信号会消失。之前错误的信息不(怎么)影响后续恢复过来。

比如RX期望8个data bit,TX只发5个data bit. 芯片内部根据设定的接受波特率算出采样率,每隔一段时间采样,可能把停止位和空闲当成数据位的1,倒不至于就“阻塞”住不动,像recv()一样不返回。然后是长长的空闲电平(慢速通信)。TX把参数设成和RX一样后,起始位为0,RX可以接收对。

反之,RX期望5个data bit, TX发8个data bit,RX被“晕眩”的时间可能更长,因为数据位的0可能会被当成起始位。不过还是不至于就死翘翘了。

电子工程师和软件工程师看问题的角度不同,起码模拟电视和socket编程(尤其是tcp编程)不同。

Modem Commands

The command line used in every modem starts with ‘AT’ otherwise ‘at’ so these commands are named as AT commands. There are many commands which are used for controlling modems (wired dial-up) like ATD – Dial, ATA – Answer, ATH – Hook control & ATO – Come back to the online data state. These are supported by modems like mobile phones, GSM or GPRS.

posted @ 2022-08-20 13:31  华容道专家  阅读(54)  评论(0)    收藏  举报