- 1、本文档共110页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理与应用(倪云峰)全书第6章讲述
微型计算机、单片机系统大都采用总线结构。这种结构采用一组公共的信号线作为微型计算机各部件之间的通信线,这组公共信号线就称为总线。单片机的常用总线有并行总线与串行总线两种。 串行总线可以显著减少引脚数量,简化系统结构。随着外围器件串行接口的发展,单片机串行接口的普遍化和高速化使得并行扩展接口技术日渐衰退,后来推出了删去并行总线的非总线单片微机,需要外扩器件(存储器、I/O等)时,采用串行扩展总线,甚至用软件虚拟串行总线来实现。 常用的串行总线包括RS-232、CAN、RS-485、I2C总线、SPI总线等。其中,RS-232、RS-485、CAN为外总线,它们是系统之间的通信用总线;I2C、SPI是内总线,主要用于系统内芯片之间的数据传输。 本章主要介绍SPI、RS-485和I2C总线的原理。 串行外围设备接口(Serial Peripheral Interface,SPI)总线技术是 Motorola公司推出的一种同步串行外设接口,允许单片机等微控制器与各种外部设备以同步串行方式进行通信以交换信息。由于SPI总线一共只需3~4条数据线和控制线即可实现与具有SPI总线功能的各种I/O器件的连接,而扩展并行总线则需要8条数据线、8~16条地址线、2~3条控制线,因此,采用SPI总线接口可以简化整个电路的设计,节省更多常规电路中的接口器件和I/O口线,提高了系统的可靠性。 6.2.1 SPI总线的工作原理 Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口。SPI用于CPU与各种外围器件进行全双工、同步串行通信。这些外围器件可以是简单的TTL移位寄存器、复杂的LCD显示驱动器、A/D和D/A转换子系统或其他的MCU。 SPI总线的主要特点如下: (1) 全双工三线同步传送。 (2) 可设置为主机或从机的工作方式。 (3) 可程控串行时钟的极性和相位。 (4) 具有结束发送中断标志和写冲突保护标志。 (5) 主机方式时,位频率可以有四种(可编程设置),最高可达1.05 MHz;从机方式时,位频率由外部时钟决定,最高可达2.1 MHz。 (6) 有多主机方式出错保护,防止多个MCU同时成为串行总线的主机。 (7) 可方便地与各种串行扩展器件接口。 6.2.2 SPI总线的通信时序 SPI 模块和外设进行数据交换时,根据外设工作要求,其输出串行同步时钟的极性和相位可以进行配置。图6.2为SPI总线工作的四种方式,其中使用最为广泛的是SPI0和SPI3方式(实线表示)。 时钟极性(CPOL)对传输协议没有重大影响,若CPOL?=?0,则串行同步时钟的空闲状态为低电平;若CPOL?=?1,则串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置为选择两种不同的传输协议之一进行数据传输。若CPHA?=?0,则在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;若CPHA?=?1,则在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设时钟的相位和极性应该保持一致。SPI总线接口时序如图6.3和图6.4所示。 6.2.3 硬件电路设计 MC14489是Motorola公司生产的5位7段LED译码驱动芯片,能直接驱动LED数据显示器。MC14489使用一个外接电阻Rx即可控制每一段的输出电流,有三线串行接口(SPI),可直接与具有SPI接口的CPU相连,也可通过软件模拟与没有SPI接口的CPU配合工作。 2. 引脚介绍 图6.5给出了MC14489芯片的引脚图。 引脚3:VDD为电源的正极输入,范围为4.5~6 V。 引脚14:VSS为地。 引脚11:CLOCK为串行数据时钟输入端,时钟频率范围为0~4 MHz。 引脚12:DATAIN为串行数据输入端。 引脚18:DATAOUT为串行数据输出端,用于将MC14489各级级联使用。 3. 硬件连接电路 图6.6为AT89C52与MC14489的硬件连接电路。AT89C52不带SPI串行总线接口,所以使用软件来模拟SPI的操作,包括串行时钟、数据输入和数据输出。 AT89C52的P2.0、P2.1和P2.2引脚分别连到MC14489的DATAIN、CLOCK和,用来模拟SPI接口;BANK1~BANK5连接到LED的阴极;a~h连接到LED的阳极。 void DSPCMD(uchar CMD);//单字节命令函数,写入MC14489内部设置寄存器void DSPDATA(uchar DSCMD,uchar DSDATA1,uchar DSDATA2);//多字节命令函数,写入MC14489显示寄存器void main(){
文档评论(0)