【篇五】串口通信

本章总结的6点

  1. 通信相关概念
  2. 串口通信相关概念
  3. 串口通信原理
  4. 串口原理框图讲解
  5. 串口扩展高级功能
  6. 串口通信与CPU中断关系

信相关概念

    * 重量的两点 :1: 信号的表示方式 和 解析方法 
                            2: 信号的传输方法
    * 相关概念:  1:同步通信和异步通信
                    * 发送方和接收方是否按照同一个时钟节拍工作,是叫做同步,否叫做异步
                2:电平信号和差分信号
                    * 用来描述通信线路的传输方式的,如何在通信线路上表达1和0的问题
                    * 电平信号中有一个参考电平线(一般是GND),信号线的值为和参考电平线的电压差 决定了信号值
                    * 差分信号没有参考值, 两跟信号线的电压差决定了信号值

                    *总结:电平信号的2根信号线电平差容易受到干扰,传输容易失败,差分信号不容易受到干扰,质量比较稳定,现在普片使用差分信号
                          虽然相同信号线条件下,电平信号比差分信号要传输多,但是实际差分信号要稳定,靠干扰强,因此发送一个周期可以更短
                3:并行接口和串行接口 
                    * 串行和并行主要是考虑通信线的根数,就是发送方和接收方同时可以传递的信息量
                    * 电平信号, 同时发送2位二进制位 需要3根线 (2根信号线,1根电平线)
                    * 差分信号, 同时发送2位二进制位 需要4根线  (没2根一对,进行差分)

                    *总结:虽然并行比串行发送要快,但是串行还是主流,因为可以省信号线,对传输线要求低,在串行时可以提交发送周期

                4:最终胜出的是异步,差分,串行,比如USB,网络

串口通信相关概念

    *使用电平信号:RS232电平,TTL电平
    *RS232电平中, 电平信号的 -3V到-15V表示1; 3V到15V表示0 ,适合于小于15米的距离,如电脑后面接口
    * TTL电平中, 5V表示1, 0V表示0, 适合用在距离短,如电路板内部的两个芯片
    

     * 可知,左边的PC_TXD 经过 rs232电平转换后 ,右边的转成了 TTl电平 TXD0
    * 波特率:
         指的是串口通信的速率,(每秒钟传输多少个2进制位),发送方和接收方波尔率必须设置相同,才能通信成功
    * 起始位,数据位,奇偶校验位,停止位
         串口通信是按照周期为单元进行传输的,每个单位由 一个起始位,数据位,一个奇偶校验位,一个停止位组成的

串口通信原理和概念

    * 三根通信线 Rx、Tx、 GND
    * 单工通信和双工通信
        》单工是单方向,双工是双方同时收发,同时只能单方向但是方向可以改变的叫半双工
        》只能A发B收则单工, A发B收或者B发A收(两个不能同时)叫半双工,A发B收同时B发A收叫全双工
    * 串口通信最少需要两根(GND和信号线)可以实现单双工,也可以使用3根线(Tx,Rx,GND)来实现全双工
    * 串口通信基本的通信约定参数:(波特率,数据位,奇偶校验位,停止位),任何一个参数设置错误,就有可能乱码
    * 发送:信息已二进制的方式在信号线上传输,每隔一段固定时间(1/波特率)发送,逐个二进制位的传输
    * 接受:接收方通过定时读取信号线的电频高低,来区分接受到的1或者是0,开始读取的时间为起始标志位,依次读取数数据位,奇偶校验位,停止位,然后就结束
    * DB9接口是串口通信早期比较常用的一种规范化接口,是标准接口     ,有9根线,其中三根必不可少,为 
        GND,Tx,Rx,剩余6根和流控(AFC)有关,现在我们做串口都是用来调试,一般禁用流控,所以这六根没用

串口原理框图讲解

S5pv210 串口 (UART):Universal Asynchronous reveiver and Transceiver(通用异步收发器)
  原理框图


  * Peripheral BUS 为外设总线,可知串口挂在外设总线和cpu通信
  * 分为上线两部分 Transmitter(发送) 和 Receiver(接受),彼此是独立工作的
  *Transmitter(发送)
     》 编程将需要发送的数据通过 Tx信号线写进发送缓冲区
       》 Transmit Buffer Register为缓冲寄存器, 用来存储并缓冲需要发送的数据,
       》 Transmit Shifter(发送移位器),是一个硬件,会自动的把数据一位位的移位发送出去
  *Transmitter(发送)
       》 由 Receive Buffer Register(接受缓冲区) 和 Receive Shifter(接受移位器构成)
       》 通过Rx信号线,将接受的数据进入移位器,存取接受缓冲区,接受完一帧后,会产生一个中断给CPU,cpu进行读取数据
  * Buad-rate Generator  (波特率发生器) ,作用是产生发送和接受的节拍时钟,即发送移位器和接受移位器的工作频率
  * 编程人员工作:读和写相关寄存器,和初始化时钟

串口扩展高级功能

    * FIFO模式及作用 (fist in fist out)
        》 其实是一种数据结构
        》 典型串口缺陷:发送、接受只能是一字节,每次只能处理1帧数据,在复杂CPU中,需要频繁中断CPU进行上下文切换,效率低下
        》 解决方式:扩展串口控制器发送、接受缓冲区大小,cpu一次可以发送更多数据到缓冲区,cpu不用频繁来往,
            但是串口原来的发送和接受缓冲区还是一字节长度,是不能变的,我们现在将要发送的数据写进FIFO寄存器就可以,
            FIFO再将数据一个个写进串口缓存区,不需要cpu来做了
    * DMA模式及作用 (Direct memory access)
        》 直接访问内存,本来是DSP中的一种技术,DMA技术的核心就是在交换数据时不要要cpu参数,自己就可以完成,很类似于FIFO解决的问题,频率切换CPU
        》 FIFO模式是轻量级的解决方案(只是通过寄存器实现),只能暂时解决cpu效率问题,
          DMA是从根本上解决方案,(使用内存实现)适合如大场景,大量数据发送和接受场景,如大数据
    * IrDA模式及作用
        》 就是红外线通信(电视机遥控器),发送方固定间隔像接收方发送信号(1和0),接收方固定间隔时间接受
        》 和串口通信非常像,210利用串口实现了红外的发送和接受
        》 201有一个串口配置可开启IrDA模式,开启后,像串口写数据,这些数据就会以红外方式像外发射出去(需要硬件支持),然后接受

串口通信与CPU中断关系

    * 发送方一般不需要中断即可完成发送,接受方必须要CPU中断来接受,文档地址 08》 1.3 》1.3.7 INTERRUPT/DMA REQUEST GENERATION
    * 发送方使用中断流程:先设置好中断,并绑定好一个中断处理程序,然后发送方丢一帧数据给Transmitter,Transmitter发送耗费一段时间来发送这一帧数据,这段时间类发送方CPU
      可以去做别的事情,等Transmitter发送完成会产生一个TxD中断,该中断会导致实现绑定的中断处理程序执行,在程序中CPU会切换回来继续给Transmitter放一帧数据,然后CPU切换离开,
    * 发送方不使用中断里流程:发送方实现禁止中断,(也不需要中断处理程序了),发送方CPU给一帧到Transmitter,然后Transmitter耗费一段时间来发送数据,这段时间cpu
      在这等待,发送完成后,cpu再给它一帧数据发送,直到发送完,
      这种场景没有中断无法通知cpu,但是这里有个发送缓冲区状态寄存器, Transmitter发送完成,该寄存器标志位会改变,CPU通过不断查询来知道发送是否已经完成

    * 接收方使用中断: 原理同发送方式,因为串口通信是异步,发送方占主导权,接收方只有时刻等待,才不会丢失数据,如果一直等待,cpu耗不起,所以不得不使用中断或者轮训

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源14

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值