AVR单片机与串行AD的SPI接口设计
- 格式:pdf
- 大小:414.75 KB
- 文档页数:3
根据网上的资料整理制作的基于M8的USB接口的ASPISP下载线。
做了30几块,有30几位使用,除个别由于焊接问题,没有发现大的问题。
现提供全部资料。
资料中,已经增加了VISTA下的USBISP驱动程序。
现在在XP和VISTA 下都可以使用。
JTAG与ISP下载区别JTAG是Joint Test Action Group(联合测试行动小组)的缩写,是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。
JTAG用来对芯片进行测试的基本原理是在器件内部定义一个TAP(Test Access Port;测试访问口)通过专用的JTAG测试工具对内部节点进行测试。
标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
TMS:测试模式选择。
此引脚用来实现TAP 控制器各个状态之间的切换。
TCK:测试时钟。
JTAG 操作是与TCK 同步的。
TDI:测试数据输入--需要移位到指令寄存器或数据寄存器(扫描链)的串行输入数据。
TDO:测试数据输出-- 自指令寄存器或数据寄存器串行移出的数据。
现在,JTAG接口还常用于实现ISP(In-System Programmable;在线编程),对EEPROM、FLASH等器件进行编程和在线调试。
JTAG编程方式是在线编程,传统开发流程中先对芯片进行预编程再装到板上的模式因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。
AVR 的JTAG功能(只有部分型号才有)使得AVR的调试工作非常简单,可以通过JTAG 接口对Flash、EEPROM、熔丝位和锁定位进行编程。
使用AVR studio软件和JTAG硬件(AVR JTAG编程器,AVR JTAG仿真器)可以进行程序下载(亦即编程)和程序在线调试。
通过JTAG功能,工程师可以方便的观察各个寄存器的变化和程序的运行情况,十分适合单片机的学习与系统开发。
单片机与外部设备的SPI接口设计与实现1.引言单片机与外部设备的通信是嵌入式系统设计中的重要环节。
SPI(Serial Peripheral Interface)是一种常用的串行通信协议,用于实现单片机与外设之间的数据传输。
本文将探讨单片机与外部设备之间的SPI接口设计与实现。
2.SPI接口简介SPI接口是一种同步的数据总线协议,通常由一个主设备和一个或多个从设备组成。
SPI接口包含四个信号线:时钟线(SCK)、主输出从输入线(MISO)、主输入从输出线(MOSI)和片选线(SS)。
通过时钟线的同步操作,主设备可以与从设备进行双向数据传输。
3.SPI接口的工作原理SPI接口的工作原理如下:首先,主设备通过片选线选择从设备,并将数据发送到MOSI线上;随后,主设备通过时钟线提供时钟信号,从而同步数据的传输;同时,从设备将数据通过MISO线发送给主设备;最后,主设备将片选线置高,表示数据传输结束。
4.SPI接口的硬件设计在实现SPI接口的硬件设计时,需要考虑以下几个方面:4.1 片选线的设计片选线的数量由从设备的数量决定。
如果只有一个从设备,可以直接连接到片选线上。
如果有多个从设备,需要使用多个片选线,并通过逻辑门进行选择。
4.2 时钟线的设计时钟线的频率由主设备的时钟频率决定。
需要根据从设备的要求,选择适当的时钟频率。
时钟频率过高可能导致数据传输出错,过低可能导致传输速度较慢。
4.3 数据线的设计数据线包括主输出从输入线(MISO)和主输入从输出线(MOSI)。
需要根据从设备的要求,确定数据线的数量和宽度。
通常,每个从设备都需要一个MISO线和一个MOSI线。
5.SPI接口的软件实现在单片机中实现SPI接口的软件需要编写相应的驱动程序。
以下是SPI接口软件实现的基本步骤:5.1 硬件初始化首先,需要初始化单片机的IO口,并设置片选线等相应的引脚。
5.2 时钟设置根据从设备的时钟要求,设置单片机相应的时钟频率。
简单方便自制的几个AVR/51 ISP编程器(下载线)AVR单片机有许多优点,我也是个忠实支持者,是从51过度到AVR的,中途还学PIC,初学51时买了学习板,液晶屏等不少东西,有经验后,学AVR时就从自制的下载线开始了,注意,这只是个开始,简单的东西总存在着一些局限性,但对于初学者来说,这可是个非常有用的东西,有了它就可以开始学习AVR单片机,甚至是一些开发了,这些编程器都是出自网上流传的,虽然我也不是很清楚出自那位高人,但感谢原作者.以下分享我的自制经验.1.由于AVR的编程方式有并行高压和串行ISP (In System Program 在系统编程)方式,高压并行编程能修复一些错误的配置位,但这并不常用,因为并行通信其布线会较多,不便于在成品中预留编程接口,也不便自制,而串行的ISP是基于SPI(Serial Peripheral interface)通信方式的,SPI通信时只需三根数据线, 分别是SCK,MISO,MOSI,再加上VCC,GND,Reset共需6根线,而VCC是可选的,用于向目标芯片供电,或由目标板反供电给编程器.那么设计目标板时,最少只要保留6根线,以后就可随时烧写,升级芯片上的程序了.而无需将芯片取下.这是ISP方式的最大特点,具体6根线连到那个引脚,不同型号不一样,要看芯片引脚定义图,例如ATtiny2313引脚定义如下:至于编程接头,尽可能以官方的10针接口为准,也可像我一样自定义一个6针的,因为我更喜欢水晶头,其实都是排列不同而已,只要再制作一条线进行转换就什么都搞定了.2.基于并口的ISP下载线,我最初也是自制了这款,这种下载线可以下载AVR全系列和AT89S系列51单片机,成本较低,不过需要PC机有并行口,许多笔记本电脑现在都没有并口了,比较麻烦,市场上卖的USB转并口,大都是用于打印机的,无法使用.以上是原理图,74HC244是用于信号的隔离驱动的,它从目标板经4148供电,由于ISP编程器只有4根是信号线,实际上我用了74HC125取代74HC244,以减小体积和引脚焊点数.下面是我使用的原理图,和成品图片:元件全装在内部,整体就很美观了,注意下载线不宜过长,最好50cm以内,PC上位机软件很多都可以支持的像双龙的SLISP,PonyProg2000(但51的型号很少,2.0a 版中也只有两个),智峰的progisp试过都成功烧写和效验.不足是烧写速度偏慢,综合来说还算满意.如果首次不成功,可能是软件设置问题,双龙的几乎不用(或说是不能)作什么设置,PonyProg200和Progisp或许需要设置一下才能把它使用得更好,比如Ponyprog用直接IO方式要比API方式快些,而Progisp它的端口引脚是可以自定义的,如果不同,把它设为和原理图一样不可以了.否则根本就用不了.3.基于串口的ISP下载线.,因为之前还在用51做些板子,初看这电路时,觉得由于reset在默认上拉,认为不适合51系列(51是高电平复位),并且更重要的是ponyprog2000的器件列表也没 89s52这型号,所以一直没去做过.但如果只对AVR编程来说,这个也是非常好用的.其中6,7端口必须直连,Ponyprog程序用来检测是否插入此接口,制作完成后试过还可以,速度和并口的差不多,只是必须要用PC机上的物理串口,用USB转串口的就无法使用.我起初觉得可能是驱动能力问题,曾用74HC125对它隔离驱动,花了时间却不成功,用示波器观察四条线的时序,发现原来是USB转串口线有问题,它的SCK(7脚),输出像随机的方波,而从物理串口出来的SCK时序,其频率在20K 左右,并连续稳定,如下图,这也许是USB转串口芯片的问题,才20K频率,难道被当燥声给滤掉了??请有了解的朋友请帮我分析一下,但这条转换线是好的,目前正在用它为ARM系统进行通迅,下载都很正常,芯片型号没打开看,驱动名称是Prolific USB-to-Serial Comm Port.有WHQL的,应该没问题,下面是我的原理图(我参考并口那个画的),实物,与波形.示波器测量时是直接测量转接口,未接下载线,通道1(绿)是物理串口的,通道2(黄)就是USB转串口的,已用示波器量了9个脚,不会错的,由于目前在学ARM9系统,已对这些问题放低了,对它有研究的朋友请告诉小弟,解决这小点问题,可以把它当USB的编程器用了!此线直接插到物理串口上,仍然可用.4.当制作完成这样简单的编程器后,就可以开始学习AVR或8051单片机了,熟悉后可以制作一个USB接口的编程器,USBASP,它内部是用一块ATMega8单片机来模似USB时序的,所以制作它的前提是至少需要一个编程器,例如上面的,将程序写入单片机中.这最好是在熟悉AVR的情况下制作.我是根据网上的公板图自己重画了这张原理图,来方便自己制作.晶振必须为12MHz,否则不可能完成USB时序的模似,单片机可以用低压版的ATMega8L 8PU超频使用,USB的数据线上的电压是3.3V,最高不超过3.6伏,那两个稳压管也就必须是3.6伏的,至于其它元件,其取值有些偏差影响也不大,JP1跳线是强制低速工作的,比如烧写那些有内部有RC振荡的单片机,首次使用就可能要用低速模式,因为其默认就是使用1M的内部振荡.由于USB供电已足够使用,JP5通常保持断开就可以了,JP3只在烧写或更新此编程器固件时使用,平时必须断开,整个电路其实很少东西,JP2连接USB线,或USB公头时要注意顺序不要搞错,上面这个PCB是专为万用板,有人叫洞洞板画的,并且4个LED位置是焊插针的,用来引出到外壳,这个单片机是直插的,建议不要焊上去,而是使用IC插座,当把电路做完,用表量一下确认无误后,插入USB口,此时PC端应该提示为无法识别的USB设备,不必理会,接着开始烧写固件,先短接JP3,再用另一个编程器通过编程口将程序写入Mega8单片机.此过程和平时烧写目标板是一样的.确认成功烧写和效验后,接着烧写熔丝位,这步主要就是设置单片机为外部晶振工作模式,设置熔丝时要小心,如果点错的话,先点恢复默认,再去修改.否则后果难以意料.下面分别是Ponyprog,progisp和SLISP的熔丝设置界面:注意不要设错,完成后将JP3取下,拔下并重插USB,如无意外,你会看到发现新硬件这样的提示,然后装USB驱动,就算大功告成了.至于软件目前就智峰的Progisp支持得比较好.因为经常用,最好是搞外壳保护它,我是在壳体店买的小盒,总之都是小问题了.那个低速开关我是用另一个8脚的单片机.实现按键检测,电平求反输出,和将状态保存到片内EEPROM进行记忆来实现的自锁开关,因为这是我后来扩展的,并且是用了PIC的12F629单片机,这些用AVR单片机(如Tiny13)实现都很简单,就不多说了,不过想它反应得好些要下些功夫,或者是直接用机械的自锁开关来实现.至此,可以慢慢享受自己的成果所带来的乐趣了.USBASP制作资料已打包,有兴趣的朋友可下载学习研究:(用浏览器打开,单线程下载)/self.aspx/.Public/MCU/u sbasp.rar。
基于AVR单片机的SPI接口设计与实现作者:杨启帆赵腊才来源:《电脑知识与技术》2016年第27期摘要:利用AVR单片机和SPI接口在硬件、软件设计上的便利性,以ATmega128MCU与ADT7516、SI8902模数转换芯片之间的硬件设计和通信过程为基础,实现了电源监控电路中的参数采集和智能控制功能。
测试表明SPI接口通信正常,AVR单片机控制稳定,满足对电源输出电路的实时监视和控制要求。
同时给出了ATmega128芯片SPI接口的配置过程,以及模数转换芯片的配置过程、通信时序的实现方法。
关键词:串行外设接口;AVR单片机;模数转换器;数据采集;嵌入式系统中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2016)27-0238-031 引言SPI(Serial Peripheral Interface,串行外设接口)是由Motorola公司设计的一种串行接口,具有电路简单、通信可靠、控制容易、通信速率快等优点,在嵌入式系统中应用广泛,单片机生产商包括Atmel、TI、MICROCHIP、FREESCALE等公司均提供具有SPI接口的单片机(MCU),允许MCU与各种外围接口设备以串行方式通信;同时各接口供应商提供了丰富的SPI外围接口产品,包括:LCD模块,Flash/EEPROM存储器,以及数模/模数转换器等器件。
下面以Atmel公司的ATmega128 MCU为例,利用其SPI接口对外围温控模数转换器(ADC) ADT7516、隔离模数转换器(ADC)SI8902进行参数配置和数据采集,实现对电源供电的管理,包括对各路电源电压、电流的监视,及各路电源的通断控制功能。
2 硬件电路设计2.1 ATmega128串行外设接口(SPI)ATmega128是Atmel公司推出的一款低功耗、高性能、多功能8位MCU,资源广泛,功能强大;结合多种监测电路,极大增强了嵌入式系统的可靠性;ATmega128提供了一个串行外设接口(SPI),它包括两条数据线:主机输出从机输入(MOSI),主机输入从机输出(MISO)和两条控制线:串行时钟线(SCK),片选控制线(SS)。
基于AVR单片机SPI的串行ADC接口设计本文所进行是为提高ADC转换的精度、加快工作速度的研究,主要介绍AVR单片机的SPI与MAX187的接口设计,提供了软件编程实现。
1、AVR单片机的SPI接口SPI(Serial Peripheral Interface---串行外设接口)总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串行方式进行通信、数据交换,广泛应用于各种工业控制领域。
基于此标准,SPI系统可以直接于各个厂家生产的多种标准外围器件直接接口。
SPI接口通常包含有4根线:串行时钟(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有效的从机选择线SS。
在从机选择线SS使能的前提下,主机的SCK脉冲将在数据线上传输主/从机的串行数据。
主/从机的典型连接图如图(1)所示:图(1)主/从机的连接图串行外设接口SPI允许ATmega16和外设之间进行高速的同步数据传输。
ATmega16 SPI的特点如下:全双工,3线同步数据传输,主/从机操作,LSB首先发送或MSB首先发送,7种可编程的比特率,传送中断结束,写碰撞标志检测,可以从闲置模式唤醒,作为主机时具有双速模式(CK/2)。
如图(2)所示,系统包括两个移位寄存器和一个主时钟发生器。
通过将需要的从机的SS引脚拉低,主机启动一次通信过程。
主机和从机将需要的数据放到相应的移位寄存器,主机在SCK引脚上产生时钟脉冲以交换数据。
主机的数据从MOSI移出,从从机MISO移入。
从机的数据从MISO移出,从从机MOSI移入。
主机通过将从机的SS拉高实现与从机的同步。
图(2)SPI 主机- 从机的互连下面将介绍SPI的几个特殊寄存器:1.1 SPI的控制寄存器—SPCRSPIE 为SPI 中断使能,置位后,只要SPSR 寄存器的SPIF 和SREG 寄存器的全局中断使能位置位,就会引发SPI 中断。
SPE 置位将使能SPI,DORD 置位时数据的LSB首先发送;否则数据的MSB首先发送。
114收稿日期:2010-12-17作者简介:王宗刚(1979-),男,在读电气工程硕士,主要研究方向为嵌入式系统开发。
基于AVR 单片机的SPI 接口的实现王宗刚1,潘峥嵘2(1河西学院机电工程系 甘肃张掖,734000)(2兰州理工大学电气工程与信息工程学院 甘肃兰州,730050)摘 要:介绍了ATmega16单片机的SPI串行通讯原理,并设计了串行Flash存储器AT45DB021B与ATmega16单片机的硬件接口电路,这种方式对于简化电路设计和扩展系统存储容量具有重要意义。
关键词:ATmega16;SPI;AT45DB021BAbstract: This paper introduces the SPI serial communication principle of A Tmega16 microprocessor. The hardware interface circuit was designed between serial Flash ROM A T45DB021B and A Tmega16 microprocessor. This method has an important significance for simplifying circuit design and expanding system storage capacity.Key words: A Tmega16 ; SPI ; A T45DB021B中图分类号:TP334 文献标识码:B 文章编号:1001-9227(2011)02-0114-030 引 言SPI(Serial Peripheral Interface,串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行数据通讯,且传输速度比通过串行异步通信(SCI)方式快。
SPI的接口相对简单,只需要4根连接线:串行时钟(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有效的从机选择线(/SS),就可完成所有数据通讯和控制操作,具有电路简单、通讯可靠等优点,广泛应用于LCD显示、FLASH存储器等外围器件与MCU之间的通讯[1]。
0前言同步串行通讯口(SPI)是工业标准的同步串行外设接口,其控制总线只需要4根控制线就可以扩展具有SPI的各种I/O器件[1],因此在工程控制领域有着广泛的应用。
TLC2543串行A/D转换器是采用CMOS技术的12位逐次逼近式A/D转换器,它可以直接和具有SPI 接口的单片机相连,接口非常简单。
由于它是一款高速高精度、接口简单、价格低廉的12位串行A/D器件,很适合用于单片机的测控系统[2]。
本文以AVR单片机AT90S8535和串行A/D转换器TLC2543为例,设计了AT90S8535与TLC2543之间的同步串行通讯接口,用单片机C语言描述了两者之间的通讯过程,实现了AT90S8535与TLC2543之间数据通讯,并且利用VB编写的处理软件对单片机所接收到的数据进行了波形验证。
1系统工作原理系统按照图1所示的电路关系连接之后,可通过AVR单片机与串行A/D的SPI接口设计*王红亮,杨晓(中北大学电子测试技术国家重点实验室仪器科学与动态测试教育部重点实验室,太原030051)摘要:为了解决信号采集系统的同步串行通讯问题,在理解AVR单片机SPI接口的通讯原理和方法的基础上,分析了AVR单片机SPI接口的工作过程,设计了AVR单片机和串行A/D转换器的同步串行通讯接口,并用程序描述了SPI接口通讯的过程,实现了AVR单片机通过SPI接口与串行A/D转换器之间的数据通讯。
最后,用实验和数据分析验证了设计方案的可行性。
关键词:SPI接口;AVR单片机;串行A/D中图分类号:TP368.1文献标识码:B文章编号:1001-1390(2008)09-0046-03The design of SPI between AVR microcontroller and serial A/DconverterWANG Hong-liang,YANG Xiao(National Key Laboratory For Electronic Measurement Technology,Key Laboratory ofInstrumentation Science&Dynamic Measurement(North University of China),Ministry ofEducation,North University of China,Taiyuan030051,China)Abstract:The synchronous serial communication plays an essential part in the design of dataacquisition system.In this thesis,AVR microcontroller is chosen to construct the system.Based on the analysis of the AVR’s SPI,the synchronous serial communication subsystem isdesigned and implemented successfully between the AVR’s SPI and serial A/D converter.The main programme is presented to describe the working process of AVR’s SPI interface.Inthe end,the data transmission is correct and effective,which proves the correctness of thedesign.Key words:SPI,AVR Microcontroller,Serial A/D Converter*国家自然科学基金资助项目(50535030)46--图1AT90S8535与TLC2543连接示意图对AVR 单片机编程来实现其对串行A/D 转换器TLC2543的控制。
AVR单片机中的SPI接口
杨俊春;孙珅;赵国良
【期刊名称】《应用科技》
【年(卷),期】2005(032)002
【摘要】SPI接口通讯主要用于单片机和外设以及单片机与单片机之间的高速数据传送,在控制领域有广泛的应用.介绍了AVR单片机SPI接口的工作原理,然后以ATMEL公司生产的AT90S4433单片机和AT45D081A存储器芯片为例具体介绍AVR单片机中SPI接口的使用,最后给出了在实际应用中的几点体会.
【总页数】4页(P43-46)
【作者】杨俊春;孙珅;赵国良
【作者单位】哈尔滨工程大学,自动化学院,黑龙江,哈尔滨,150001;哈尔滨工程大学,自动化学院,黑龙江,哈尔滨,150001;哈尔滨工程大学,自动化学院,黑龙江,哈尔滨,150001
【正文语种】中文
【中图分类】TP274.2
【相关文献】
1.AVR单片机与串行A/D的SPI接口设计 [J], 王红亮;杨晓
2.ATMEL AVR单片机SPI接口的应用研究 [J], 李振军
3.基于AVR单片机的SPI接口设计与实现 [J], 杨启帆;赵腊才
4.AVR单片机SPI接口设计 [J], 李玲;周小佳;唐秀辉;闫斌
5.基于AVR单片机的SPI接口的实现 [J], 王宗刚;潘峥嵘
因版权原因,仅展示原文概要,查看原文内容请购买。
AVRSPI的设置于应用AVR SPI的设置与应用特点SPI 引脚功能多从机系统SPI时序SPI发送冲突模仿SPI轮询例程中断控制例程1 介绍本应用描述了如何设置和应用AVR单片机的片上串行外设接口(SPI),大多数的AVR器件拥有spi接口,并且可以根据本文来配置。
了解一定理论背景后,本文将阐述如何配置SPI 的主、从模式。
2 SPI 概述SPI允许AVR单片机和外设或单片机之间进行高速同步数据传输。
大多数SPI接口有复用功能作为在系统编程(ISP)。
具体细节参考AVR910通常SPI连接主从设备之间。
而有些外设,例如传感器只能运行在从机模式,AVR单片机可以配置成主机或从机模式。
通过设置AVR单片机SPI控制寄存器(SPCR)中得MSTR来选择主或从模式。
SS#引脚的特殊情况应该被考虑。
将会在下文“多从机系统----SS引脚功能”的第三页进一步阐述。
在系统中主机是主动部分提供时钟信号和串行数据。
从机不能产生时钟信号因此不能成为主动部分。
当主机产生必要的时钟信号时从机才能接受和发送数据。
主机只有在发送数据时才产生时钟信号。
这就意味着主机不得不通过发送数据给从机来读取从机数据。
PS:当外设是被动的传感器之类的情况会更复杂,当需要读取数据时就发送一个随机不确定的数给传感器。
2.1 主机和从机间的数据传送主机与从机间的相互作用如图第一页一图所示。
两个确定的SPI单元,左边的配置为主机,右边的配置为从机。
MISO,MOSI和SCK分别两道另一部分的相应引脚上。
通过模式的配置来决定信号线是作为输入还是输出。
因为一个时钟周期内一位从主机移出到从机,一位从从机移位到主机,因此两个八位的移位寄存器可以看做一个十六位的循环移位寄存器。
这也就是说当八个时钟脉冲后主机的数据和从机的数据相互交换。
系统为单缓存发送双缓存接受。
在下面的步骤中影响数据的处理:1,在移位寄存器将数据完全移出之前新的字节不可以被写入数据寄存器(SPDR)。
AVR单片机与串行A/D的SPI接口设计
作者:王红亮, 杨晓, WANG Hong-liang, YANG Xiao
作者单位:中北大学电子测试技术国家重点实验室,仪器科学与动态测试教育部重点实验室刊名:
电测与仪表
英文刊名:ELECTRICAL MEASUREMENT & INSTRUMENTATION
年,卷(期):2008,45(9)
被引用次数:1次
1.杨俊春;孙珅;赵国良AVR单片机的SPI口[期刊论文]-应用科技 2005(02)
2.汪炼;韩震宇基于AVR单片机的串口通讯[期刊论文]-中国测试技术 2003(03)
3.金春林;邱慧芳;张皆喜AVR系列单片机语言编程与应用实例 2003
4.杜开初串行12位A/D TLC2543及其应用 2000(10)
5.李玲;周小佳;唐秀辉;闫斌AVR单片机接口设计[期刊论文]-福建电脑 2006(05)
6.耿德根AVR高速嵌入式单片机原理与应用 2001
7.陈志彬;王仲初;崔文华SPI接口芯片在单片机小系统中的应用[期刊论文]-自动化与仪表 2001(01)
8.丁化成AVR单片机应用设计 2002
9.李振军ATMEL AVR单片机SPI接口应用研究[期刊论文]-湖南广播电视大学学报 2003(04)
10.高惠平串行ADC TLC2543与单片机的接口重点[期刊论文]-电子世界 2003(05)
1.辛晓宁.吴子旭A/D转换器CS5550与单片机的接口程序设计[期刊论文]-电子设计工程 2010(1)
本文链接:/Periodical_dcyyb200809012.aspx。
A TM EL AVR 单片机SPI 接口的应用研究The Applicative Research on SPI of Single -slice Machine A TM EL AVR李振军L I Zhen -jun内容摘要:SPI (Serial Peripheral Interface )串行外围设备接口是一种3线同步串行全双工通信接口。
本文从SPI 接口本质、A Tmega8515的SPI 接口、A Tmega8515接口应用等几个方面介绍了A TMEL AVR 单片机SPI 接口。
关键词:单片机 AVR SPI Flash ROM 中图分类号:TP301.1 文献标识码:A 文章编号:1009-5251(2003)04-090-02Abstract :SPI (Serial Peripheral Interface )is a kind of 3lines contact interface.This paper introduces SPI of ATMEL AVR from the nature ofSPI and the application of SPI of ATmega 8515and interface of ATmega8515.K ey w ords :Single -slice machine AVR SPI Flash ROM作者简介:李振军(1975~ ),男,湖南广播电视大学教学指导中心。
湖南长沙 410004 一、概述SPI (Serial Peripheral Interface )串行外围设备接口是一种3线同步串行全双工通信接口,它具有电路简单、速度快、通信可靠等优点,近年来应用非常广泛。
大量的新型器件如LCD 模块、FLASH ΠEEPROM 存储器、数据输入Π输出设备都采用了SPI 接口。
在早期的单片机系统中,CPU 大都不具有SPI 接口,因此,对SPI 接口设备的访问,基本都是通过软件模拟产生SPI 接口所需要的时序。
0前言同步串行通讯口(SPI)是工业标准的同步串行外设接口,其控制总线只需要4根控制线就可以扩展具有SPI的各种I/O器件[1],因此在工程控制领域有着广泛的应用。
TLC2543串行A/D转换器是采用CMOS技术的12位逐次逼近式A/D转换器,它可以直接和具有SPI 接口的单片机相连,接口非常简单。
由于它是一款高速高精度、接口简单、价格低廉的12位串行A/D器件,很适合用于单片机的测控系统[2]。
本文以AVR单片机AT90S8535和串行A/D转换器TLC2543为例,设计了AT90S8535与TLC2543之间的同步串行通讯接口,用单片机C语言描述了两者之间的通讯过程,实现了AT90S8535与TLC2543之间数据通讯,并且利用VB编写的处理软件对单片机所接收到的数据进行了波形验证。
1系统工作原理系统按照图1所示的电路关系连接之后,可通过AVR单片机与串行A/D的SPI接口设计*王红亮,杨晓(中北大学电子测试技术国家重点实验室仪器科学与动态测试教育部重点实验室,太原030051)摘要:为了解决信号采集系统的同步串行通讯问题,在理解AVR单片机SPI接口的通讯原理和方法的基础上,分析了AVR单片机SPI接口的工作过程,设计了AVR单片机和串行A/D转换器的同步串行通讯接口,并用程序描述了SPI接口通讯的过程,实现了AVR单片机通过SPI接口与串行A/D转换器之间的数据通讯。
最后,用实验和数据分析验证了设计方案的可行性。
关键词:SPI接口;AVR单片机;串行A/D中图分类号:TP368.1文献标识码:B文章编号:1001-1390(2008)09-0046-03The design of SPI between AVR microcontroller and serial A/DconverterWANG Hong-liang,YANG Xiao(National Key Laboratory For Electronic Measurement Technology,Key Laboratory ofInstrumentation Science&Dynamic Measurement(North University of China),Ministry ofEducation,North University of China,Taiyuan030051,China)Abstract:The synchronous serial communication plays an essential part in the design of dataacquisition system.In this thesis,AVR microcontroller is chosen to construct the system.Based on the analysis of the AVR’s SPI,the synchronous serial communication subsystem isdesigned and implemented successfully between the AVR’s SPI and serial A/D converter.The main programme is presented to describe the working process of AVR’s SPI interface.Inthe end,the data transmission is correct and effective,which proves the correctness of thedesign.Key words:SPI,AVR Microcontroller,Serial A/D Converter*国家自然科学基金资助项目(50535030)46--图1AT90S8535与TLC2543连接示意图对AVR 单片机编程来实现其对串行A/D 转换器TLC2543的控制。
在该系统中,AVR 单片机的SPI 接口占据着主设备的地位,而TLC2543的SPI 接口则属于从设备。
因此TLC2543要完全受AVR 单片机的控制[3]。
在AVR 单片机完成初始化配置之后,通过SPI 口向TLC2543发送设置好的控制字,进而来控制TLC2543对模拟信号进行转换,并将转换之后的数据再通过SPI 接口发给AVR 单片机。
当AVR 单片机接收到TLC2543发送过来的数据之后,再通过AVR 单片机的UART 接口发送到计算机,供计算机的处理软件进行处理。
2数据通讯的电路设计及相关寄存器的配置2.1AVR 单片机与TLC2543的电路设计在设计通讯电路之前,为了保证AVR 单片机的正常工作,首先要建立一个满足单片机正常工作的最小系统,电源输入、地以及为AVR 单片机提供时钟的晶振[4]。
有了这些基本的条件,我们才可以设计SPI 口正常工作的外围通讯电路。
在保证了单片机的最小系统之后,单片机与串行A/D 转换器之间数据通讯就可以利用SPI 口来完成。
在同步串行通讯过程中,要求单片机和外设之间的工作时钟必须同步,这样才能达到数据同步传输的要求。
AVR 单片机的SPI 口有四条控制线:串行时钟(SCK )、主机输入/从机输出数据线(MISO )、主机输出/从机输入(MOSI )数据线和从机选择线(SS )[5]。
SPI 口工作时,在从机选择线(SS )使能的前提下,主机的SCK 时钟脉冲在数据线上为数据交换提供必需的参照时钟。
TLC2543串行A/D 转换器具有11路模拟输入通道、10ms 的转换速度,能提供较高精度且多通道的数据采集功能。
其与外部器件的通讯接口就是同步串行接口:片选(CS )、A/D 转换结束标志(EOC )、输入输出时钟(I/O CLOCK )、数据输入线(DATA INPUT )、数据输出线(DATA OUTPUT )。
除了EOC 之外、其他的四根控制线依次与AT90S8535的SPI 口的控制线相连(具体连接示意图参照图1),这样便可以实现单片机与A/D 转换器之间的数据通讯[8]。
2.2SPI 接口通讯相关寄存器的配置同步串行通讯的通讯程序设计思想的实质就是在时序的配合下,通过对AVR 单片机的SPI 口三个寄存器的配置来实现数据通讯。
这三个寄存器分别是:控制寄存器、状态寄存器和数据寄存器[6]。
控制寄存器(SPCR)可以设置SPI 口工作时的中断、工作模式和时钟频率等,只要对控制寄存器进行某些赋值就可以实现相应的功能。
状态寄存器(SPSR)含有SPI 中断标志位SPIF,当串行数据发送完成时,中断标志位将会置1,并产生中断。
如果从机选择线SS 被设置为输入且在SPI 口是主机模式时,该标志位将被置低,这时将会设置SPIF 标志。
SPIF 位在执行相应中断向量时被硬件清除。
SPI 口数据寄存器(SPDR)可以进行读/写,以便用于在寄存器文件和SPI 移位寄存器之间传递数据。
对SPSR 和SPCR 两个寄存器的判断和设置是能否准确实现同步串行通讯的关键所在。
因此,在编写AVR 单片机的SPI 通讯程序的过程中,要特别熟悉这两个寄存器的功能赋值。
需要注意的是,状态寄存器的第7位SPIF位为SPI 的中断标志位,若以查询方式来发送数据时,当串行数据发送完之后,SPIF 位将会自动置1,但是在数据接收的时候,当数据接收完之后,该位不会置位[7]。
因此在调用接收数据的程序后,要加上一段延时来保证数据的准确接收。
3软件编程3.1程序说明本文的AT90S8535与TLC2543数据通讯程序是在ICCAVR 软件环境下完成编写的。
要实现串行A/D 转换器的控制和通讯,就必须先对单片机的SPI 口的寄存器进行初始化。
首先设置SPI 口的SPCR 寄存器,在本例中,直接对控制寄存器(SPCR )赋值为0B01010000,其中,每一位的功能描述如下:SPIE=0,禁止中断,以查询的方式来发送数据,每47--当发送完一个数据之后,就查询状态寄存器中的SPIF 位,当SPIF位置1时,表示一个数据已经发送完毕,这时可以将下一个数据放在数据寄存器中进行发送;SPE=1:SPI使能;DORD=0:数据的低位先传送;MSTR=1:AT90S8535的SPI接口设置为主机模式;CPOL=0,CPHA=0:对应SPI的模式0;SPR1=0,SPR0=0:对应工作频率为f osc/4,f osc指的是晶振的工作频率[9]。
初始化控制寄存器之后,就可以对串行A/D转换器进行控制和通讯了。
下面给出用C语言编写的通过SPI口对TLC2543的控制和通讯程序:PORTB&=~BIT(PB4);//片选使能delay_1ms();//延时while(1)//开始控制A/D转换器进行转换,并把转化结果发给单片机{adcl=0;adch=0;CtrlByte=0x0C;//操作码0x0C表示的是选中通道0,16位分辨率,数据的高八位先传送,高八位传送结束之后,再进行数据的低八位传送adch=SPI_TranByte(CtrlByte);//把命令字发给TLC2543,并且把上次模拟信号的转化结果的高八位赋值给adchadcl=SPI_TranByte(CtrlByte);//把命令字发给TLC2543,并且把转化结果的低八位赋值给adcl}//向TLC2543发送命令字,并读回转换结果的函数unsigned char SPI_TranByte(unsigned char bData){SPDR=bData;//发送命令字给TLC2543while(!(SPSR&0x80));//判断命令字是否发送完毕return SPDR;//读回上次模拟信号的转换的结果}在SPI_TranByte函数中,需要注意的是在向TLC2543发送命令字的同时,TLC2543也将转换的结果放在了SPI口的数据寄存器中,只需把上次模拟信号转换的数据读回来即可,而SCK的工作时钟是由SPDR数据寄存器产生的,只要是SPDR含有一个数据(不管是什么数据),SPI口都会产生一个通讯时钟,以供双方通讯时使用[10]。
3.2波形验证图2是信号源的正弦信号和采集到的数据波形(由计算机处理软件画出)对比示意图,左图是正弦信号在示波器上显示的波形,其工作的频率是100Hz,幅值为5V。
计算机处理软件的界面上显示了75个采集点,波形的幅值为5V。
串行通讯的波特率为57600bps。
由于AVR单片机在与计算机进行串行通讯的过程中,每一帧数据共有9位,其中包括8个数据位和一个停止位,故在一个信号周期内共要传输57600/100/ 9=64帧数据,而本设计中使用的是16位采样精度,所以,每一个周期共采集了64/(16/8)=32点,图2的右图中共有75个采集点,所以显示的周期应该为75/32=2.3个周期,与右图显示的波形频率基本上是吻合的。