浅析串口Uart的理解

一、什么是串口?

        简单的说就是一个通讯方式,MCU与MCU通过串口通信可以实现数据的传输,MCU跟电脑通过串口通信可以实现打印调试。

二、连接方式        

        TxD代表串口的输出口,RxD代表串口的接收口 

        当两个MCU通过串口相连时,芯片1的TxD输出,芯片2的RxD接收数据,故芯片1的TxD引脚接芯片2的RxD。同理,芯片1的RxD接芯片2的TxD。串口之间采用的是TTL通信,所以直接连上就好了。

 

        当MUC串口跟电脑连接时,连接方式也是一样交叉连接,TxD连另外设备的RxD。但是一般电脑留出给用户的接口是封装了,采用的是RS232接口。而RS232一般为9针,且所采用的电平方式是RS232电平。两者需要通信就需要进行电平的转换。

        芯片串口和rs232的电平标准是不一样的:

  •  单片机的电平标准(TTL电平):+5V表示1,0V表示0;
  • Rs232的电平标准:+15/+13 V表示0,-15/-13表示1。

现在市面上有很常见的USB转串口的,自带TTL电平转换电路,所以一边只需插电脑,一边交叉连接RX,TX,接VCC和GND就好了。

 

三、串口的功能框图

è¿éåå¾çæè¿°

上面的图,抽象成4个模块。

1.接口引脚(输入输出的接口);

2.串口通信时读写操作的寄存模块(数据流经(存储)的过程);

3.发送接收控制器的模块(根据定好的协议,波特率和寄存器状态来控制数据寄存器的操作);

4.波特率发生器模块(产生时钟,提供给控制器来控制发送和接收);

四个模块,各司其职。

接收数据,读数据大致过程:

        数据从RX接口传过来,经过IrDA SIR编解码模块(串行红外协议,串口可以连接红外发生器,要使能红外模式才有用),当控制器使能接收,就开始去在RX线上搜索起始位。找到后把数据放进接收移位寄存器。接收完成后,将接收移位寄存器上的数据传送给接收数据寄存器,最后通过总线传给MCU。

                            (接收过程都在接收控制器掌握之中)

写数据,发送数据大致过程:

        MCU通过总线下发指令写数据到发送数据寄存器,当写完后,将发送数寄存器上的值一位一位的传给发送移位寄存器 。当控制器使能发送后,把数据通过Tx发送出去。

                              (发送过程在发送控制器掌握之中)

 

四、通信的协议

        现在已经知道数据是通过TX发送,通过RX接收,那么数据的格式又是怎样的呢?

        

(1)起始位:当未有数据传送时,会一直处于逻辑‘1’。当发送逻辑‘0’时代表开始传送数据;

(2)数据位:紧接着起始位的是数据位,在stm32上数据位的个数可以有8位或9位来构成字符,根据控制寄存器USART_CR1的bit12(M位)来选择。数据位通常采用ASCII码,从最低位开始传送,靠时钟定位。

(3)奇偶检验位:校验方法有奇校验(odd)、偶校验(even)、0 校验(space)、1 校验(mark)以及无校验(noparity)。

         奇校验:要求有效数据和校验位中“1”的个数为奇数 ;
         偶校验:与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数 ;
         0/1校验:不管有效数据中的内容是什么,校验位总为0或者1。

(4)停止位:它是一个数据结束的标志,其为一个高电平逻辑‘1’。而逻辑‘1’持续的时间不固定,可以是1位,1.5位。2位的高电平。可以选择停止位的时长,原因是为了有更好的容错性。每个设备都有各自的时钟,而时钟之间难免就会有差异不同步,而前面数据位都是固定时长的,停止位不只是代表传输的结束,也提供计算机校正时钟的机会。停止位的位数越多,对时钟同步的差异有更好的容错性,但不好的是整体传输的速度就会变慢了。

 

五、补充

1.知道了串口的原理,其实是可以用普通的IO口去模拟串口来实现通信的。相对于直接使用串口硬件电路,

好处是:节省成本(毕竟少了一个硬件电路);IO较多时可以使用IO模拟串口而不需要再加一个硬件电路来实现串口通信;

但缺点是:会占用CPU的资源。使用IO模拟串口时,CPU需要根据预设的时钟定时往IO口输出高低电平模拟串口发送的数据帧。而串口硬件电路只需CPU去寄存器读数据即可,而移位和数据传输操作可由硬件电路自动实现,更多释放CPU的性能;

 

 

参考链接:https://blog.csdn.net/qq_38410730/article/details/79887200

                  https://www.cnblogs.com/ChurF-Lin/p/10793111.html

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值