MC9S12串行总线接口

  • 格式:doc
  • 大小:28.00 KB
  • 文档页数:4

MC9S12系列单片机片内串行总线接口:

所谓串行通信是指微控制器与外设之间使用一根数据信号线一位一位地传输数据。串行通信线路少,在远距离传输时可以极大地降低成本,所以适合远距离数据传输,也常用于要求不高的近距离传输。

串行总线的数据传输方式分为全双工、半双工和单工方式。

全双工是指发送数据的接收和发送可以同时进行。

半双工是指数据发送方能够接收数据,接收方也能够发送数据,但是数据的发送和接收不能同时进行。

单工方式是指数据发送方只能发送数据,而接收方只能接受数据。

1. SPI总线接口

SPI(Serial Peripheral Interface,串行外设接口)是一种高效的同步串行接口,这种接口技术主要用于MCU与外部的接口芯片交换数据,已逐渐成为一种工业接口标准。在SPI中,只允许有一个主机,但是可以有多个从机,主机提供同步时钟信号给从机,主机的MISO和MOSI引脚要跟从机的MISO和MOSI引脚相连。

1)SPI的引脚

SPI接口常用于主从的分布系统中,一个标准的SPI系统包括一个MCU和若干个外部设备。SPI使用4条信号线,具体如下:

1)串行时钟线SCK

SCK是主从机之间数据传输的同步时钟信号。SCK信号由主机产生并且通过硬件给从机;

2)主机输入、从机输出数据线MISO

MISO是SPI模块的两根串行数据线之一。当配置为从机时,该引脚用来由SPI模块向外发送数据;当配置为主机时,该引脚用来接受数据;

3)主机输出、从机输入数据线MOSI

MOSI是SPI模块另一根串行数据线。当配置成主机时,该引脚用来由SPI模块向外发送数据;当配置成从机时,该引脚用来接受数据;

4)低电平有效的从机选择线SS

此引脚在主机和从机模式中具有不同的功能。从机模式下,该引脚是一次数据传输开始前允许SPI工作的片选信号;主机模式下,该引脚可以控制MODE标志位,保证一个系统只有一个主机。

2)SPI模块的寄存器:

SPI模块提供了5个寄存器,包括SPI控制寄存器(SPICR1)、控制寄存器2(SPICR2)、SPI波特率寄存器(SPIBR)、SPI状态寄存器(SPISR)、SPI数据寄存器(SPIDR)。

1) SPI控制寄存器(SPICR1)

该寄存器可读可写,复位后的初始值为0x04。在多数情况下该寄存器只需在复位初始化后根据需要写入一次即可。

2) 控制寄存器2(SPICR2)

该寄存器用来设置模式错误检测以及双工模式。SPICR2寄存器有四个有效位,其余为保留位。该寄存器可任意读写,但向保留位写无效。

3) SPI波特率寄存器(SPIBR)

该寄存器用来设置SPI通信的时钟频率。SPIBR寄存器有6个有效位,其余为保留位。该寄存器可任意读写,但向保留位写无效。

4) SPI状态寄存器(SPISR)

该寄存器的位指示了SPI的工作状态。任意可读,写无效。

5) SPI数据寄存器(SPIDR)

任意可读,通常当SPIF=1时读;任意可写。

3)SPI的工作模式

1)主机模式

当SPICR1中的MSTR位被置1时,SPI工作在主机模式。在主机模式下,主机产生串行时钟,用来同步主从方的移位寄存器。当SPI的数据寄存器SPIDR中写入数据后,数据传送开始。对于主机来说,数据的收发是同步的。在实际操作中,数据的流动可能只有一个方向,这根据具体需要而定。

2)从机模式

当SPICR1中的MSTR位清零时,SPI工作在从机模式下。在这种情况下,从机不产生串行时钟,从机的SCK引脚变为输入口。SS引脚也作为从机的片选信号,处于输入状态,在数据传送前被拉低,并保持到数据传送结束。 3)双工模式

选择SPOC=1可以使SPI系统工作在双工模式。在这种模式下,无论是主机模式还是从机模式都只有一个引脚进行数据的传输。数据传输的方向通过SPICR2寄存器的BIDIROE位来选择。

2. SCI总线接口

SCI是一种采用NRZ格式的异步串行通信接口,它内置独立的波特率产生器和SCI收发器,可以选择发送8或9个数据位。SCI是双全工异步串行通信接口,主要用于MCU与其他计算机或者设备之间的通信,几个独立的MCU也能通过SCI实现串行通信,形成网络。

SCI模块主要包括SCI波特率寄存器(高寄存器SCIBDH和低寄存器SCIBDL)、SCI控制寄存器1和2(SCICR1和SCICR2)、SCI状态寄存器(SCISR1和SCISR2)、SCI数据寄存器(数据高寄存器SCIDRH和数据低寄存器SCIDRL)。

SCI的工作方式与使用方法都比较灵活,可以采用简单易懂且便于实现的查询方式,也可以采用高效但复杂的中断方式。无论是查询方式还是中断方式,实现串行通信的编程首先均需进行SCI的初始化,主要是完成波特率、收发数据格式、通信方式等的设置。

3. I2C总线接口

在现代电子系统中,由众多的集成电路(IC)之间需要进行通信。为了提高硬件的效率和简化电路设计,Philips公司开发了一种用于内部IC控制的双向两线串行总线I2C总线。在I2C总线系统中,每个器件都有一个独立的地址,可以收发数据(如RAM)也可以只接收数据(如LCD驱动器)。I2C总线是一个多主总线,发送器和接收器可以在主模式或从模式下工作,这取决于它是要启动数据传输还是仅仅寻址。I2C总线的操作完全由挂接在总线上的主器件传送出的地址和数据决定。SCL和SDA均为双向I/O线,通过上拉电阻接正电源。器件的输出必须是集电极开路或漏极开路,使之具备线与的功能。

I2C总线的工作原理:

1) I2C总线接口电路

I2C总线的时钟线SCL和数据线SDA都是双向传输线。为了使各节点电路输出实现“线与”,时钟线SCL和数据线SDA必须都是漏极开路或集电极开路的结构,在使用中必须加上拉电阻,各节点必须共地。

2) I2C总线上的数据信号

I2C总线传输时,时钟线SCL为高的时候必须保持数据线SDA上的逻辑状态(高为1,低为0);在时钟线SCL为低时,才允许数据线上的电平状态变化。

I2C总线上起始信号定义为在时钟线保持高电平时,数据线上出现由高变低的信号;

I2C总线上终止信号定义为在时钟线保持高电平时,数据线上出现由低变高的信号。

起始和终止信号都由主控制器产生。应答信号在每次数据传送后的第九个周期由接收器产生,低电平有效。这一时刻,发送器应释放总线,使之为高,以便被控器发出应答信号。当主控制器为接收方时,若接收到最后一个字节,必须给被控器发出一个应答信号,使被控器释放数据线,以便主控器发送终止信号,终止数据的传送。

3) I2C总线上的数据传送

I2C总线每次传送的数据是8位,从起始信号开始,其后传送的字节数是没有限制的,首先发送最高位,每8个数据位后,必须有一个由接收器产生的应答信号,所有数据传送结束后,主控器发出终止信号。

I2C包括I2C总线地址寄存器(IBAD)、I2C总线分频寄存器(IBFD)、I2C总线控制寄存器(IBCR)、I2C总线状态寄存器(IBSR)、I2C总线数据I/O寄存器(IBDR)。