论文部分内容阅读
本文介绍了带有行业标准串行外设接口(Serial Peripheral Interface,SPI)的独立以太网控制器ENC28J60 在AVR单片机接口开发设计中的应用,以及单片机控制ENC28J60的程序及计算机与ENC28J60进行网络通信的有关程序设计段。
一、概述
带SPI接口的ENC28J60由七个主要功能模块组成:1. SPI 接口:充当主控制器和ENC28J60 之间通信通道;2. 控制寄存器:用于控制和监视ENC28J60;3. 双端口RAM缓冲器:用于接收和发送数据包;4. 判优器:当DMA、发送和接收模块发出请求时对RAM 缓冲器的访问进行控制;5. 总线接口:对通过SPI 接收的数据和命令进行解析;6. MAC (Medium Access Control)模块:实现符合IEEE 802.3 标准的MAC 逻辑;7. PHY(物理层)模块——对双绞线上的模拟数据进行编码和译码。该器件还包括其他支持模块,诸如振荡器、片内稳压器、电平变换器(提供可以接受5V 电压的I/O 引脚)和系统控制逻辑。
二、器件结构接口示意框图
ENC28J60 中所有的存储器都是以静态RAM 的方式实现的。ENC28J60 中有三种类型的存储器:控制寄存器、以太网缓冲器和PHY寄存器,控制寄存器类存储器包含控制寄存器(Control Register,CR)。它们用于进行ENC28J60 的配置、控制和状态获取。可以通过SPI 接口直接读写这些控制寄存器。PHY 寄存器用于进行PHY 模块的配置、控制和状态获取。PHY 寄存器用于进行PHY 模块的配置、控制和状态获取。不可以通过SPI 接口直接访问这些寄存器,只可通过MAC 中的MII (Media Independent Interface)访问这些寄存器。
ENC28J60的接口示意框图如图1所示:
三、工作原理
如图1所示,在ENC28J60中接口SO、SI、SCK和CS可与许多单片机(本远程监控系统中使用单片机的是ATMEGA1280-16AU)上的串行外设接口SPI(如图2中PB0、PB1、PB2和PB3)直接相连。另外,在ENC28J60的SPI 端口要求SCK 在空闲状态时为低电平,并且不支持时钟极性选择。在SCK 的每个上升沿移入数据,命令和数据通过SI 引脚送入器件。ENC28J60 在SCK 的下降沿从SO 引脚输出数据。当执行操作时CS 引脚必须保持低电平,当操作完成时返回高电平。
主机和从机之间的SPI 连接系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的 SS 引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。该移位寄存器可存储8位二进制数,主机在SCK 引脚上产生时钟脉冲以交换数据。主机的数据從主机的MOSI 移出,从从机的MOSI 移入;从机的数据从从机的MISO 移出,从主机的MISO 移入。主机通过将从机的SS 拉高实现与从机的同步。如图3所示:
配置为SPI 主机时, SPI 接口不自动控制 SS 引脚,必须由用户软件来处理。对 SPI 数据寄存器写入数据即启动SPI 时钟,将8 比特的数据移入从机。传输结束后SPI 时钟停止,传输结束标志SPIF 置位。如果此时SPCR 寄存器的SPI 中断使能位SPIE 置位,中断就会发生。主机可以继续往SPDR 写入数据以移位到从机中去,或者是将从机的SS拉高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。
配置为从机时,只要SS 为高,SPI 接口将一直保持睡眠状态,并保持MISO 为三态。在这个状态下软件可以更新SPI 数据寄存器SPDR 的内容。即使此时SCK 引脚有输入时钟,SPDR 的数据也不会移出,直至SS 被拉低。一个字节完全移出之后,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,就会产生中断请求。在读取移入的数据之前从机可以继续往SPDR 写入数据。最后进来的数据将一直保存于缓冲寄存器里。
SPI 系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束后才能对SPI 数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI 数据寄存器读取当前接收到的字符。否则第一个字节将丢失。
四、网络编程以及程序实现
本文以调谐器为例进行说明,使用iccavr-v7.17b软件对单片机ATMEGA1280-16AU进行编程,其中在protocol.c中需要对主控制器的网络通信IP地址、子网掩码等进行初始化,如
电脑端接收字节数据的程序段如下:
电脑端接收字节数据的程序段如下:
一、概述
带SPI接口的ENC28J60由七个主要功能模块组成:1. SPI 接口:充当主控制器和ENC28J60 之间通信通道;2. 控制寄存器:用于控制和监视ENC28J60;3. 双端口RAM缓冲器:用于接收和发送数据包;4. 判优器:当DMA、发送和接收模块发出请求时对RAM 缓冲器的访问进行控制;5. 总线接口:对通过SPI 接收的数据和命令进行解析;6. MAC (Medium Access Control)模块:实现符合IEEE 802.3 标准的MAC 逻辑;7. PHY(物理层)模块——对双绞线上的模拟数据进行编码和译码。该器件还包括其他支持模块,诸如振荡器、片内稳压器、电平变换器(提供可以接受5V 电压的I/O 引脚)和系统控制逻辑。
二、器件结构接口示意框图
ENC28J60 中所有的存储器都是以静态RAM 的方式实现的。ENC28J60 中有三种类型的存储器:控制寄存器、以太网缓冲器和PHY寄存器,控制寄存器类存储器包含控制寄存器(Control Register,CR)。它们用于进行ENC28J60 的配置、控制和状态获取。可以通过SPI 接口直接读写这些控制寄存器。PHY 寄存器用于进行PHY 模块的配置、控制和状态获取。PHY 寄存器用于进行PHY 模块的配置、控制和状态获取。不可以通过SPI 接口直接访问这些寄存器,只可通过MAC 中的MII (Media Independent Interface)访问这些寄存器。
ENC28J60的接口示意框图如图1所示:
三、工作原理
如图1所示,在ENC28J60中接口SO、SI、SCK和CS可与许多单片机(本远程监控系统中使用单片机的是ATMEGA1280-16AU)上的串行外设接口SPI(如图2中PB0、PB1、PB2和PB3)直接相连。另外,在ENC28J60的SPI 端口要求SCK 在空闲状态时为低电平,并且不支持时钟极性选择。在SCK 的每个上升沿移入数据,命令和数据通过SI 引脚送入器件。ENC28J60 在SCK 的下降沿从SO 引脚输出数据。当执行操作时CS 引脚必须保持低电平,当操作完成时返回高电平。
主机和从机之间的SPI 连接系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的 SS 引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。该移位寄存器可存储8位二进制数,主机在SCK 引脚上产生时钟脉冲以交换数据。主机的数据從主机的MOSI 移出,从从机的MOSI 移入;从机的数据从从机的MISO 移出,从主机的MISO 移入。主机通过将从机的SS 拉高实现与从机的同步。如图3所示:
配置为SPI 主机时, SPI 接口不自动控制 SS 引脚,必须由用户软件来处理。对 SPI 数据寄存器写入数据即启动SPI 时钟,将8 比特的数据移入从机。传输结束后SPI 时钟停止,传输结束标志SPIF 置位。如果此时SPCR 寄存器的SPI 中断使能位SPIE 置位,中断就会发生。主机可以继续往SPDR 写入数据以移位到从机中去,或者是将从机的SS拉高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。
配置为从机时,只要SS 为高,SPI 接口将一直保持睡眠状态,并保持MISO 为三态。在这个状态下软件可以更新SPI 数据寄存器SPDR 的内容。即使此时SCK 引脚有输入时钟,SPDR 的数据也不会移出,直至SS 被拉低。一个字节完全移出之后,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,就会产生中断请求。在读取移入的数据之前从机可以继续往SPDR 写入数据。最后进来的数据将一直保存于缓冲寄存器里。
SPI 系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束后才能对SPI 数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI 数据寄存器读取当前接收到的字符。否则第一个字节将丢失。
四、网络编程以及程序实现
本文以调谐器为例进行说明,使用iccavr-v7.17b软件对单片机ATMEGA1280-16AU进行编程,其中在protocol.c中需要对主控制器的网络通信IP地址、子网掩码等进行初始化,如
电脑端接收字节数据的程序段如下:
电脑端接收字节数据的程序段如下: