在项目中,我用secureCRT试图连接我的开发板,一直连不上,如下图:
接下来的事情,就是敲击键盘,都无法有任何反应。开始以为是RX和TX的断线造成的。当然肯定不是这个问题。下面看一下我的串口的原理图:
我用的是J30这个串口,上面J29也是一个串口,我们会发现有个差别,上面2脚和下面2脚,名称不一样。一个是RXDC1,一个CTSC1。我搜了一下,CTS这个东西。这个东西叫流控。那什么是流控?下面上一下百度的结果,大家理解一下。
还是先引用一些文字,来自Telit公司GM862 QUAD/PY的数据手册
Pin Signal I/O Function
20 C103/TXD I Serial data input (TXD) from DTE
29 C106/CTS O Output for Clear to send signal (CTS) to DTE
33 C107/DSR O Output for Data set ready signal (DSR) to DTE
37 C104/RXD O Serial data output to DTE
43 C108/DTR I Input for Data terminal ready signal (DTR) from DTE
45 C105/RTS I Input for Request to send signal (RTS) from DTE
注意上面各个功能的I/O的方向,看到这些缩写的全称,结合信号流向,是不是更容易理解呢
DTE是数据发送的主动方,DCE是数据的接受方。
CTS是让DTE明白的,也就是说DCE需要把自己的CTS给DTE看,让他知道DEC已经准备好接受数据了。
RTS是DTE给DCE看的,告诉DCE,DTE有数据要发。
DB9只有9根线,遵循RS232标准。定义如下:
DTR,DSR------DTE设备准备好/DCE设备准备好。主流控信号。
RTS,CTS------请求发送/清除发送。用于半双工时,收发切换。属于辅助流控信号。半双工的意思是说,发的时候不收,收的时候不发。那么怎么区 分收发呢?缺省时是DCE向DTE发送数据,当DTE决定向DCE发数据时,先有效RTS,表示DTE希望向DCE发送,一般DCE不能马上转换收发状 态,DTE就通过监测CTS是否有效来判断可否发送,这样避免了DTE在DCE未准备好时发送所导致的数据丢失。
全双工时,这两个信号一直有效即可。
我的理解是,这个串口根本没有流控的功能,所以,我在开始连接串口的时候,右边点选了流控,所以,默认终端会认为对方没有发送完(也就是没有启动完),然后,不接收终端的任何输入。然后只要去掉点选的流控,就ok了,这个是点小问题,记下来。希望对大家有帮助。