基于I2C总线的多通道IO端口外扩系统设计与实现毕业论文
2020-03-14 12:19:22
摘 要
近几年来,随着单片机技术的飞速发展,单片机被广泛用于各个领域。由于单片机自身有限的IO端口和用户在进行需要用到大量的GPIO端口的开发设计时对IO端口大量需求之间形成的供需矛盾冲突,所以设计出一款结构简单,扩展性强,可移植性优良,能够提供大量的GPIO端口并用于扩展不同的单片机的IO端口的具有统一的电气特性标准的模块化外扩系统是非常有必要的。
本文基于I2C总线,采用得到广泛应用的STM32F4系列单片机来进行多通道IO端口外扩系统的设计。I2C总线是一款结构简单,扩展性强的8位串行数据传输总线。我们运用单片机的GPIO端口,通过软件模拟I2C的手段,使外扩系统模块化也是本次设计的一大亮点。在设计期间,我们查找了很多IO端口扩展芯片,并进行相互比较。在利用软件设计方面,我们学习了如何使用软件Altium Designer并用其画出所设计的外扩系统的原理图。与此同时,我们也利用MDK5对软件模拟I2C这一方案进行了编程,得到了一个完整的外扩系统设计方案。
关键词:I2C总线、GPIO端口、STM32F4系列单片机、IO端口扩展芯片、软件模拟I2C
Abstract
In recent years, with the rapid development of single chip microcomputer technology, single chip microcomputers have been widely used in various fields. Due to the conflict between the IO ports of the microcontroller and the user's need for a large number of GPIO ports in the development and design of the IO ports, the design of a simple structure, scalability, portability It is very important that a modular external expansion system with a uniform electrical characteristic standard can provide a large number of GPIO ports and is used to extend the IO ports of different microcontrollers.
Based on the I2C bus, this paper uses the widely used STM32F4 series microcontrollers to design multichannel IO port external expansion systems. The I2C bus is an 8-bit serial data transmission bus with a simple structure and high extensibility. We use the GPIO ports of the microcontroller to modularize the external expansion system through software simulation of I2C. This is also a major highlight of this design. During the design period, we looked for a lot of IO port expansion chips and compared them with each other. In the use of software design, we learned how to use the software Altium Designer and use it to draw the schematic of the design of the external expansion system. At the same time, we also used MDK5 to program the software simulation I2C program and obtained a complete external expansion system design.
Key words: I2C bus, GPIO port, STM32F4 series microcontroller, IO port expansion chip, software simulation I2C
目录
第一章 绪论 1
1.1 课题的研究背景、目的及意义 1
1.1.1 研究背景 1
1.1.2 研究目的 1
1.1.3 研究意义 1
1.2 国内外研究现状 3
1.3 课题研究内容 4
1.4 设计所要达到的预期目标 5
第二章 I2C总线的特点及工作原理 6
2.1 I2C总线的特点 6
2.2 I2C总线与其他总线的对比 7
2.3 I2C总线的结构以及工作原理 8
2.4 I2C总线的工作时序 9
2.4.1 数据位的有效性 9
2.4.2 I2C总线工作时序的四个典型信号 9
2.4.3 I2C总线的数据传输格式 10
2.5 本章小结 12
第三章 外扩电路的硬件设计部分 13
3.1外扩系统芯片选型 13
3.1.1 PCA9554/PCA9554A芯片介绍 13
1. 字节控制芯片工作 13
2. IO端口的四种工作状态 14
3. 芯片上的中断引脚 14
3.1.2 同类芯片比较 14
3.2 主控芯片的芯片选型 16
3.2.1 STM32F4系列单片机的优点 16
3.2.2 选用STM32F4系列单片机的原因 16
3.2.3 有关STM32F4芯片上的I2C总线接口 16
3.3 其它芯片的介绍 18
3.4 基于I2C总线的多通道IO端口外扩系统的电路原理图 19
3.5 本章小结 21
第四章 外扩系统软件设计部分 22
4.1 I2C总线通信的整个过程 22
4.2模拟主控芯片I2C总线初始化子程序的编写 24
4.3模拟I2C总线工作时序子程序的编写 25
4.4 本章小结 29
第五章 结论与展望 30
中外参考文献 31
附录A 32
致谢 34
第一章 绪论
1.1 课题的研究背景、目的及意义
1.1.1 研究背景
自从第一次工业革命整个世界步入科技时代开始直到科技发达的今天,人们的各种要求随着科学技术的发展都会渐渐得到满足,在满足这些需求的同时,科技也在向更高更深的层次去发展,以满足人们更具体的需求。
现如今,人们的生活更是离不开科技,自动化、智能化成了家常便饭,单片机技术在大多数情况下可以实现。但是,人们需求的步伐并不会因为被满足而停滞不前,为了一些复杂的需求或人性化的设计,设计的系统可能会越来越复杂,占用单片机的资源会越来越多,而单片机的引脚或一些其他的器件的限制迫使我们会进行一些模块化的设计,这样可以大幅度的简化总体设计,减小系统封装体积并且提高系统可靠性。
例如,采用I2C总线进行多通道IO端口的外扩系统设计。尤其是在实际应用中,由于单片机应用的领域越来越广泛,经常会出现IO端口资源不够,所需要的接口远多于单片机自身所拥有的接口,形成十分突出尖锐的端口供需矛盾,通常利用8155、8255、8259、74LS245或74HC164等外扩IO端口芯片进行外接就可以解决问题,但是构成系统因此就会十分复杂,增加线路数量,增大封装体积,增加封装成本,降低系统可靠性,导致系统故障率增高。然而利用I2C总线进行多通道IO端口外扩系统设计,通过软件模拟I2C总线工作时序只需要单片机的两个GPIO口,接线数量大幅度减少,简化系统复杂程度,减小系统封装体积,减低封装成本,提高系统可靠性。
1.1.2 研究目的
首先,能够从最大限度地利用单片机的IO端口资源,使单片机能够提供足够的IO端口给整个系统。这是本次设计所要达到的最基本的目的。
其次,通过简化IO端口外扩系统的复杂程度,提高系统的可靠性,防止由于外扩系统过于复杂而导致整个系统故障率过高,这样复杂的系统设计出来既增加成本,又使故障率极高,到最后这种外扩系统反倒画蛇添足,成了累赘,得不偿失。
第三,使这样的外扩系统模块化,提高系统移植性,使之移植使用起来简易便捷。
1.1.3 研究意义
首先,随着科技的发展,I2C总线的应用涉及到许许多多的领域,无论是我们的生活还是工作,无论用于大型工业还是微电子行业,小到一部手机,大到一条智能的工业生产流水线,都会用到单片机技术。I2C总线用于连接单片机与外部设备的通信,对电气仪器控制方面起到非常关键的作用,同时许多芯片多提供了I2C接口,应用广泛,因此用I2C总线进行多通道IO端口的外扩系统设计意义重大。
其次,由于现在机器所拥有的功能多元化、综合化,常常需要一个单片机与多个外围器件相连,需要大量的IO端口,因此设计一个多通道IO端口外扩系统是有必要的。
第三,现如今,集成电路模块化设计方便于构建整个系统,而使多通道IO端口的外扩系统模块化也需要利用I2C总线的进行设计,加强其移植性、通用性。
有以上三点可知,本次基于I2C总线的多通道IO端口的外扩系统设计实用性强,方便快捷,可靠性好,意义重大。
1.2 国内外研究现状
先来说说,现如今的高速数据传输为什么用串行传输方式而不是并行传输方式?
目前,从单片机技术发展的状况可以看出,最近几年串行传输方式产生了完全取代并行传输方式的趋势,USB替代了IEEE 1284,SATA代替了PATA,PCI Express替换了PCI。
虽然,从原理来看,并行传输方式要比串行传输方式更好。的的确确在实际时钟频率比较低的情况下,并行总线因为可以同时传输多位信号,速率的确比I2C快。但是,随着单片机技术的发展,逐渐升高的时钟频率使得并行总线内线与线之间的相互干扰越来越严重。并行总线因为有大量的并行而紧密地排列着的数据线,尤其是当时钟频率特别高的时后,所要传输的数据因线与线之间互相干扰而已经毁坏到无法恢复的地步。而I2C总线因为数据线非常少,线与线之间干扰小,易控制,反而可以通过提高时钟频率来大幅度提高数据传输速率。这就是为什么当今高速数据传输都采用串行方式的原因。
再说说,I2C总线的发展历史。
I2C总线历史悠久,第一代具有I2C总线功能的集成电路出现于30多年前,是简易的串行总线,用于控制电视机内的各种芯片。随着时代发展,科学进步,I2C总线也在不断改进,例如:利用差分信号以改进抗噪声能力,改进总线仲裁以便更容易将总线连在一起。不断改进的I2C总线的版本一共有4个,这4个版本象征着电子通信行业的规范,而最新的版本推出于2012年,总线的数据传输速度从一开始的的100kHz提升到5MHz。1992年推出第一个版本,运行速度为400kHz;1998年改进为第二版,新增了高速模式和一些节能选项,2007年出现的第三版将运行速度提升至1MHz,一直到2012年第四版增加了一个5MHz的可选项。
目前,全球许多家半导体器件公司正马不停蹄地研究对I2C总线的改进并开发扩大其应用,这成为了新版本I2C总线的发展方向。首当其冲的就是I2C总线自身的抗噪声能力:虽然I2C总线可靠性好,但是并没有方法来解决如何丢弃错误的数据包,因为I2C总线为方便对其应用设计,将结构简单的优点完整地传承下来。
NXP公司推出了一个从硬件下手的解决方案,可以直接将I2C总线由单端切换为差分配置。这有效地增强了抗噪声能力,同时也顺便改善了因不同电源域而导致的接地偏移问题。这都是在确保当前软件可以使用、没有改变协议的前提下,提出的解决方案。
而另一个研究的方向是关于多主机的仲裁:每条I2C总线有127个I2C地址,而每个外围器件都有一个固定不变的基址。一部分设备使用引脚来改变地址,还有一部分设备只有一个地址。假如每个设备都只有1个I2C地址,而在系统中必须使用5个设备,可以利用多路复用器把上游总线分成5个独立的下游总线,这样就可以在每个下游总线上使用相同的I2C地址外围器件而不会发生地址冲突的问题。
1.3 课题研究内容
基于I2C总线对多通道IO端口外扩系统进行设计,首先需要了解I2C总线的工作时序和I2C总线的数据传输特点,以便于所设计的IO端口外扩系统应该如何进行数据传输。尤其是I2C总线的初始化、四个典型信号以及I2C总线独特的寻址方式,因为本次设计的基础就是能够成功地进行数据传输,所以单片机如何通过I2C总线将数据传输给下游的IO端口是十分重要的,I2C总线的工作时序就是关键所在。
其次,结合I2C总线的工作时序,选用带有I2C总线端口的IO口扩展芯片就是本次设计的主体。芯片自身的地址就是选择的重要标准之一,如果满足数据传输的畅通,芯片之间的地址必须互不相同,互不重叠。
第三,单片机的选择也是关键。主控芯片的选择,决定了是采用硬件I2C总线还是I2C总线软件模拟。因为市面上有各种各样的单片机,可以说是琳琅满目。有的公司做出的单片机芯片带有直接就可以使用的I2C总线接口,有的公司推出的单片机芯片就没有I2C总线接口,有的公司生产的芯片有特定的接口但是使用起来不是很方便。这也是本次外扩系统设计需要考虑的问题之一。
这就是本文的关键所在,也是课题探究的主要内容。
1.4 设计所要达到的预期目标
第一,可以扩展出大量的IO端口。通过改变扩展芯片自身的固定地址来大量的运用扩展芯片到我们所设计的外扩电路上,使得所扩展的IO端口数目特别多。
第二,所扩展出的IO端口之间互不影响,互不冲突。能够使每一个扩展出来的IO口都能够与主控芯片独立而又畅通的进行数据传输,不与其他的IO端口发生地址冲突。
第三,所设计出的系统在硬件接线上能够具有优良的移植性,能够用在不同的单片机芯片上。可以将设计出来的外扩系统移植到其他的单片机上,在硬件方面不会有特别大的改动。
第二章 I2C总线的特点及工作原理
2.1 I2C总线的特点
I2C总线是由荷兰PHILIPS公司于20世纪80年代推出一款十分简单串行总线,该总线用于集成电路间相互连接,具有两线式、半双工、串行通信、多主控接线以及能够连接各种各样的从机的特点。
首先,两线式的特点是指在物理结构上,I2C总线结构简单,仅有SCL时钟线和SDA数据线两线构成。然而,这单单是从硬件结构角度上分析的。数据传输通信中最基本的一个步骤——从寻址角度来看,通过各个外围硬件设置其各不相同、各不重叠的地址,I2C的软件寻址从根本上彻彻底底地避免了外围器件片选线地址的缺点,间接使得I2C总线在硬件系统方面得到进一步简化。
其次,由于I2C总线中只有一根SDA数据线用于双向传输数据,所以I2C总线的数据传输方式为半双工通信。另外,由于I2C总线独特而又简洁的结构设计,I2C总线不仅仅是以半双工通信的数据传输方式进行数据传输,更是作为一种串行总线以串行通信的方式进行工作。
最后,多主控多从机并联的特点也是I2C总线的一大亮点,简单的结构使得I2C总线能够在硬件方面轻而易举地并联各种各样的外围器件,而只需要外围器件有I2C接口或支持I2C总线协议,具有很好的扩展性。
例如:2008年气象水文海洋仪器学术交流会上,刘钧介绍了第二代自动气象站系统是如何设计的,各个分采集器通过I2C总线挂接到主采集器而构成整个系统。2016年,刘芮辰、李树江、刘帅在一篇论文中介绍他们设计的智能家居控制系统时,提到利用I2C总线进行数据通信的扩展,加强设备组合的灵活性,从根本上使得未来可能普及的智能家居生活在灵活便捷上产生了新的飞跃。
然而,不是所有的单片机都具有I2C总线接口,这个问题限制了对于这一部分单片机的应用。这似乎是个问题,利用单片机的GPIO口,通过软件编程模拟I2C总线的工作时序,可以解决这个问题,同时利用这一方法也避免了一部分具有硬件I2C总线接口的单片机由于内部线路过于复杂导致在通信过程中出现bug的弊端,同时又大大增加了I2C总线应用的移植性。
总而言之,I2C总线结构简单、扩展性强是其最为主要,也是最为突出的两个特点。也正因为如此,由I2C总线构成的系统才能应用得如此广泛,本次设计也是基于这两大特点来设计这个外扩系统。
2.2 I2C总线与其他总线的对比
I2C总线作为串行总线,与并行总线相比较:
首先,从物理结构上来看,传统的8位并行总线传输速度是串行总线的8倍。但由于时代发展,科学技术革新,单片机的工作频率爆炸式的增长,使得结构简单的串行总线的传输速率得到飞快的增长。然而,并行总线由于结构上的复杂,各个数据线之间的电磁干扰随着数据传输速率的增加而加强,并行总线的数据传输技术的发展遭遇瓶颈。因此,由于目前科技发展的现状,反倒是串行总线比并行总线的传输速率快得多。
其次,并行总线线路较多,结构复杂,易受干扰,占用单片机资源较多,而I2C总线结构简单,能最大限度地应用单片机最小系统的资源功能,同时可以简化电路,缩小封装体积,节约资源,一举三得。
第三,不是所有的单片机都有I2C总线接口,但可以利用任何单片机都有的GPIO口,采用软件模拟I2C总线的工作时序,来代替硬件I2C的功能。这种方法使得I2C总线的应用可移植性高,扩展性更强。
I2C总线与同为串行总线的SPI总线进行比较:
与SPI总线相比,虽然I2C总线没有SPI总线数据传输速率快,但结构简单,可扩性好,扩展性强是I2C总线的优点。尤其是I2C总线具有独有的软件寻址方式和多主机连接的特点,使得I2C总线相比于适合应用于数据流传输的SPI总线来说,更适合应用于多主设备的字节传输设备。
由上述两点可知,本次设计用I2C总线是最合适不过的。
2.3 I2C总线的结构以及工作原理
根据I2C总线具有多主控多从机的特点,可以有多个主控或外围器件与总线相连接,如图1所示。由图可知,I2C总线系统由时钟线SCL和数据线SDA构成。主控芯片依照I2C总线协议向外围器件采用不需要连接片选线的纯软件寻址方式进行寻址并进行数据传输。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: