第2节 电平转换电路与SCI通用编程原理
所有型号MCU的串行通信接口(Serial Communication Interface,SCI) ,都具有发送引脚TxD、接收引脚RxD,它们是TTL电平引脚。要利用这两个引脚与外界实现异步串行通信,还必须将TTL电平转为RS-232电平,这可利用上节介绍的MAX232来完成。本节从通用角度讨论SCI的电路设计、基本编程结构与编程原理,为实际编程做准备。
具有SCI接口的MCU,一般具有发送引脚(TxD)与接收引脚(RxD),不同公司或不同系列的MCU,使用的引脚缩写名可能不一致,但含义相同。SCI的外围硬件电路,主要目的是将MCU的发送引脚TxD与接收引脚RxD的TTL电平,通过RS-232电平转换芯片转换为RS-232电平。图7-4,给出一个基本SCI电平转换电路。
基本工作过程是:
发送过程:MCU的TxD(TTL电平) 经过MAX232的11(T1IN) 送到MAX232内部,在内部TTL电平被“提升”为232电平,通过14(T1OUT) 发送出去。
接收过程:外部232电平经过MAX232的13(R1IN) 进入到MAX232的内部,在内部232电平被“降低”为TTL电平,经过12(R1OUT) 送到MCU的RxD,进入MCU内部。
进行MCU的SCI编程时,只针对MCU的发送与接收引脚,与MAX232无关,MAX232只是起到电平转换作用。
7.2.2 C的基本编程原理
从基本原理角度看,串行通信接口SCI的主要功能是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入MCU内部;发送时,把需要发送的一个字节的并行数据转换为单线输出。图7-5给出了一般MCU的SCI模块的功能描述。为了设置波特率SCI应具有波特率寄存器。为了能够设置通信格式、是否校验、是否允许中断等,SCI应具有控制寄存器。而要知道串口是否有数据可收、数据是否发送出去等,需要有SCI状态寄存器。当然,若一个寄存器不够用,控制与状态寄存器可能有多个。而SCI数据寄存器存放要发送的数据,也存放接收的数据,这并不冲突,因为发送与接收的实际工作是通过“发送移位寄存器”和“接收移位寄存器”完成的。编程时,程序员并不直接与“发送移位寄存器”和“接收移位寄存器”打交道,只与数据寄存器打交道,所以MCU中并没有设置“发送移位寄存器”和“接收移位寄存器”的映像地址。发送时,程序员通过判定状态寄存器的相应位,了解是否可以发送一个新的数据。若可以发送,则将待发送的数据放入“SCI数据寄存器”中就可以了,剩下的工作由MCU自动完成:将数据从“SCI数据寄存器”送到“发送移位寄存器”,硬件驱动将“发送移位寄存器”的数据一位一位地按照规定的波特率移到发送引脚TxD,供对方接收。接收时,数据一位一位地从接收引脚RxD进入“接收移位寄存器”,当收到一个完整字节时,MCU会自动将数据送入“SCI数据寄存器”,并将状态寄存器的相应位改变,供程序员判定并取出数据。

具有SCI接口的MCU,一般具有发送引脚(TxD)与接收引脚(RxD),不同公司或不同系列的MCU,使用的引脚缩写名可能不一致,但含义相同。SCI的外围硬件电路,主要目的是将MCU的发送引脚TxD与接收引脚RxD的TTL电平,通过RS-232电平转换芯片转换为RS-232电平。图7-4,给出一个基本SCI电平转换电路。
基本工作过程是:
发送过程:MCU的TxD(TTL电平) 经过MAX232的11(T1IN) 送到MAX232内部,在内部TTL电平被“提升”为232电平,通过14(T1OUT) 发送出去。
接收过程:外部232电平经过MAX232的13(R1IN) 进入到MAX232的内部,在内部232电平被“降低”为TTL电平,经过12(R1OUT) 送到MCU的RxD,进入MCU内部。
进行MCU的SCI编程时,只针对MCU的发送与接收引脚,与MAX232无关,MAX232只是起到电平转换作用。
7.2.2 C的基本编程原理
从基本原理角度看,串行通信接口SCI的主要功能是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入MCU内部;发送时,把需要发送的一个字节的并行数据转换为单线输出。图7-5给出了一般MCU的SCI模块的功能描述。为了设置波特率SCI应具有波特率寄存器。为了能够设置通信格式、是否校验、是否允许中断等,SCI应具有控制寄存器。而要知道串口是否有数据可收、数据是否发送出去等,需要有SCI状态寄存器。当然,若一个寄存器不够用,控制与状态寄存器可能有多个。而SCI数据寄存器存放要发送的数据,也存放接收的数据,这并不冲突,因为发送与接收的实际工作是通过“发送移位寄存器”和“接收移位寄存器”完成的。编程时,程序员并不直接与“发送移位寄存器”和“接收移位寄存器”打交道,只与数据寄存器打交道,所以MCU中并没有设置“发送移位寄存器”和“接收移位寄存器”的映像地址。发送时,程序员通过判定状态寄存器的相应位,了解是否可以发送一个新的数据。若可以发送,则将待发送的数据放入“SCI数据寄存器”中就可以了,剩下的工作由MCU自动完成:将数据从“SCI数据寄存器”送到“发送移位寄存器”,硬件驱动将“发送移位寄存器”的数据一位一位地按照规定的波特率移到发送引脚TxD,供对方接收。接收时,数据一位一位地从接收引脚RxD进入“接收移位寄存器”,当收到一个完整字节时,MCU会自动将数据送入“SCI数据寄存器”,并将状态寄存器的相应位改变,供程序员判定并取出数据。



