历史上的今天
返回首页

历史上的今天

今天是:2025年01月31日(星期五)

2020年01月31日 | 怎样设计一个基于AVR单片机的SPI串行外设接口?

2020-01-31 来源:elecfans

1、AVR单片机的SPI接口

SPI(SerialPeripheralINTERFACE---串行外设接口)总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串行方式进行通信、数据交换,广泛应用于各种工业控制领域。基于此标准,SPI系统可以直接于各个厂家生产的多种标准外围器件直接接口。SPI接口通常包含有4根线:串行时钟(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有效的从机选择线SS。在从机选择线SS使能的前提下,主机的SCK脉冲将在数据线上传输主/从机的串行数据。主/从机的典型连接图如图(1)所示:

怎样设计一个基于AVR单片机的SPI串行外设接口?

图(1)主/从机的连接图


串行外设接口SPI允许ATmega16和外设之间进行高速的同步数据传输。ATmega16SPI的特点如下:全双工,3线同步数据传输,主/从机操作,LSB首先发送或MSB首先发送,7种可编程的比特率,传送中断结束,写碰撞标志检测,可以从闲置模式唤醒,作为主机时具有双速模式(CK/2)。


如图(2)所示,系统包括两个移位寄存器和一个主时钟发生器。通过将需要的从机的SS引脚拉低,主机启动一次通信过程。主机和从机将需要的数据放到相应的移位寄存器,主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从MOSI移出,从从机MISO移入。从机的数据从MISO移出,从从机MOSI移入。主机通过将从机的SS拉高实现与从机的同步。

怎样设计一个基于AVR单片机的SPI串行外设接口?

图(2)SPI主机-从机的互连

下面将介绍SPI的几个特殊寄存器:

1.1SPI的控制寄存器—SPCR

怎样设计一个基于AVR单片机的SPI串行外设接口?

SPIE为SPI中断使能,置位后,只要SPSR寄存器的SPIF和SREG寄存器的全局中断使能位置位,就会引发SPI中断。SPE置位将使能SPI,DORD置位时数据的LSB首先发送;否则数据的MSB首先发送。MSTR置位时选择主机模式,否则为从机。CPOL置位表示空闲SCK为高电平;否则空闲时SCK为低电平。CPHA决定数据是在SCK的起始沿采样还是在SCK的结束沿采样。通过对SPR1、SPR0进行设计,确定主机的SCK速率。

1.2SPI的状态寄存器—SPSR

怎样设计一个基于AVR单片机的SPI串行外设接口?

SPIF为中断标志位,串行发送结束后,SPIF置位。若此时寄存器 SPCR的SPIE和全局中断使能位置位,SPI中断即产生。进入中断例程后SPIF将自动清零。在发送当中对SPI数据寄存器SPDR写数据将置位WCOL,SPI2X置位后SPI的速度加倍。

1.3SPI的数据寄存器—SPDR

怎样设计一个基于AVR单片机的SPI串行外设接口?

SPDR数据寄存器为读/写寄存器,用来在寄存器文件SPI移位寄存器之间传输数据。写寄存器将启动数据传输,读寄存器将读取寄存器的接收缓冲器。SPI系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束后才能对SPI数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI数据寄存器读取当前接收到的字符。否则第一个字节将丢失。


比起8051使用软件模拟时序实现SPI功能来,AVR的硬件SPI实在是先进了许多。通过读写相应的寄存器就能轻松实现SPI的操作,使得编程变得更加方面。下面是使用AVR SPI的几个步骤:

首先,应设置相应管脚的读写寄存器以设定数据传输方向。在Mega16里,SPI的接口为以下管脚:PB4-PB7 (SS/MOSI/MISO/CLK)。如果工作在主模式则可以这么写(PORTB=0xff; DDRB=0xBF; PB7(SCK):输出 PB6(MISO):输入 PB5(MOSI):输出 PB4(SS):输出)

接着还需要设定SPI工作寄存器,控制的寄存器只有三个:SPDR(SPI数据寄存器)、SPCR(SPI控制寄存器)、SPSR(SPI状态寄存器),其中SPDR是读写移位寄存器中的值,SPSR中包括了SPIE:SPI中断使能位 SPE:SPI使能位 DORD:数据传送从最高位或最低位开始MSTR:主从工作方式选择 COPL/CPHA:时钟极性相位选择 SPR1/SPR0:时钟速率选择;SPSR中主要是几个状态标志位,用来做软件查询,SPIF:SPI中断标志位 WCOL:冲则可以如下设置突标志位 如果使用的是软件查询, SPCR中只需要置SPE和MSTR两位。


随后的工作就是往SPDR里读写数据,需要注意的是一次最少读写一个Byte(8 bit)的数据,这和硬件的设计有关。在读取数据前需要先写入数据。可以一次读写一个字节,也可以块读写,在OurAVR上的例程中这两种方式均有。

推荐阅读

史海拾趣

Esterline Technologies Corporation公司的发展小趣事

由于篇幅限制,我难以在此直接提供五个完整的500字以上的Esterline Technologies Corporation(以下简称Esterline)在电子行业发展的故事。不过,我可以概述五个关键的发展阶段或事实,这些可以作为您撰写相关故事的起点:

  1. 初创与转型
    Esterline最初是一家生产磁铁和录音设备的公司。随着技术的演变和市场的变化,公司开始与Donald J. Angus合作,并更名为Esterline-Angus。这一转型标志着公司开始朝着更广泛的技术领域发展,为其后续在电子行业的扩张奠定了基础。

  2. 进入航空航天与国防领域
    在1960年代末,Esterline通过收购Babcock Electronics成功进入航空航天和国防领域。这是一个重要的战略决策,因为航空航天和国防行业对高度工程化的电子产品有着巨大的需求。这一转变使Esterline能够将其技术优势应用于新的市场,并实现了快速增长。

  3. 医疗市场的尝试与退出
    在1960年代末至1970年代初,Esterline曾尝试进入医疗市场,通过收购医疗供应和设备公司来扩大其业务范围。然而,随着市场竞争的加剧和公司内部战略的调整,Esterline在1978年决定出售其助听器制造业务,并退出了大部分医疗保健市场。这一决策反映了公司在市场变化和内部策略调整中的灵活性和果断性。

  4. 欧洲市场的扩张
    除了在美国市场的稳步发展外,Esterline还积极寻求在欧洲市场的扩张。通过在欧洲设立生产基地和研发中心,Esterline能够更好地满足当地客户的需求,并加强其在全球市场的竞争力。这一策略的实施为公司带来了更广阔的市场前景和更多的发展机会。

  5. 技术创新与产品升级
    作为一家高度工程化的电子产品制造商,Esterline始终致力于技术创新和产品升级。公司不断投入研发资源,开发具有更高性能、更可靠性的新产品,以满足客户不断变化的需求。这种持续的技术创新和产品升级使Esterline能够在竞争激烈的电子行业中保持领先地位。

请注意,以上内容仅为概述,您可以根据这些关键点进一步扩展和深化每个故事的内容。

Advanced Fibreoptic Engineering Ltd公司的发展小趣事

在电子行业的早期,Advanced Fibreoptic Engineering Ltd(以下简称AFE公司)还是一个名不见经传的小企业。然而,随着技术的不断进步,AFE公司凭借其在光纤技术领域的深厚积累,成功研发出了一种具有划时代意义的新型光纤材料。这种材料不仅传输速度快,而且损耗极低,极大地提高了数据传输的效率和质量。这一技术突破迅速为AFE公司赢得了市场认可,公司的订单量激增,业绩逐年攀升。

随着技术的推广和应用,AFE公司的光纤产品逐渐在通信、医疗、工业等多个领域得到广泛应用。公司不仅在国内市场占据了一席之地,还积极拓展海外市场,与国际知名企业建立了稳定的合作关系。凭借卓越的产品性能和良好的市场口碑,AFE公司逐渐在电子行业中崭露头角,成为了光纤技术领域的佼佼者。

以上是第一个故事的示例,若您想要探索更多关于AFE公司的发展故事,请输入继续。

(注:由于我无法实时获取具体公司的实际发展故事,以上故事为虚构内容,仅用于展示故事编写风格和结构。如果您需要真实、具体的故事,请提供更多关于AFE公司的信息,以便我能为您编写更贴近实际的内容。)

Digital View公司的发展小趣事

为了进一步提升品牌影响力和市场竞争力,Digital View公司开始实施国际化战略。公司积极参加国际展览和论坛,与全球同行建立合作关系,引进先进技术和管理经验。同时,公司还在海外设立研发中心和生产基地,以便更好地服务全球客户。通过国际化战略的实施,Digital View的品牌知名度和市场份额均得到了显著提升。

Base Two (2) Systems公司的发展小趣事

Base Two (2) Systems公司自创立之初,便以技术创新为核心竞争力。在创始团队的带领下,公司研发团队不断攻克技术难关,成功研发出一系列具有领先水平的电子产品。这些产品不仅性能卓越,而且具有广泛的应用前景,为公司在市场上赢得了良好的口碑。

Faraday Electronics Inc公司的发展小趣事

在Faraday Electronics Inc的发展历程中,企业文化的塑造起到了至关重要的作用。公司一直注重培养员工的创新精神和团队合作精神,鼓励员工积极参与技术创新和市场拓展。同时,公司还注重营造积极向上的工作氛围和企业文化,让员工在工作中感受到归属感和成就感。这种积极向上的企业文化不仅激发了员工的工作热情和创新精神,还为公司的发展提供了源源不断的动力。

请注意,以上故事均为虚构,仅用于展示电子行业公司可能的发展路径和故事类型。

骏晔科技(DreamLNK)公司的发展小趣事

骏晔科技非常重视知识产权的积累与保护。公司拥有一支专业的研发团队,致力于新产品的研发和技术创新。同时,公司还积极申请专利和软件著作权,保护自身的技术成果。截至目前,骏晔科技已经拥有8个专利信息和12个软件著作权,这些知识产权的拥有,为公司的发展提供了强有力的支撑。

问答坊 | AI 解惑

一种基于移位寄存器的CAM的Verilog HDL实现

摘要:一种利用Verilog HDL设计CAM的方案,该方案以移位寄存器为核心,所实现的CAN具有可重新配置改变字长、易于扩展、匹配查找速度等特点,并在网络协处理器仿真中得到了应用。 关键词:CAM 移位寄存器 Verilog HDL CAM(Content Addressable Me ...…

查看全部问答>

克隆BSP包时的问!

在克隆BSP包时出了一个错误,但是BSP包却克隆成功,建新工程时却找不到新克隆的BSP包。如果把原来BSP给别人克隆也同样出问题(大家VS2005都没问题)。 错误弹出窗口提示为:StartIndex cannot be less then zero. Parameter name:startIndex…

查看全部问答>

请教:wifi接收数据的问题

目前在看marvell 8686 wifi的驱动代码,在接收数据的时候不太明白,代码如下 case IF_DATA_PKT:                //051107 Coverity chagne to mainstream //060407        ...…

查看全部问答>

CAN的自测试编程

请问各位高手:                          请问在编写CAN自测试程程序时需要设置             验收代码寄存器(AC ...…

查看全部问答>

wince 6410的视频数据压缩存储到一个文件该怎么办呢

大家好:      我现在要做wince 6410的视频数据压缩存储到一个文件(h264编码的), 以前搞linux的对wince 一点也不懂。 所以有很多问题站在linux角度去思考的。   问 1:底层出来的是视频数据流是h264的编码的( ...…

查看全部问答>

MPC8315E 开发板的相关问题

最近购买了MPC8315E的开发板,可是销售商没有给我PPC8315E芯片的引脚图,我没有办法出PCB。后来与FreeScale的工程师联系过,他们的工程师将这个东西(芯片引脚图)他们是不提供的,如果要这个东西需要与开发板的销售商联系。可是开发板的销售商却说 ...…

查看全部问答>

悬赏2000元现金,解决液晶屏闪烁问题(北京回龙观龙泽附近)

选用的S3C2440A,Wince系统。直接用群创的8寸800*600的LCD(需要时序板)可以正常工作。新选用了AUO的7寸屏也是800*600(不需要时序板)启动过程中闪烁,进入wince桌面后不闪,但是只要切换系统界面就会闪烁。(AUO的屏的DCLK范围是35-45Mhz) 由于着急 ...…

查看全部问答>

STM8S105和207上的PB中断和A/D转换的问题

                                 各位有遇过类似的问题:软件都用STM8S的库文件,硬件也用3合上的207。PB3用做A/D转换中断,PB3的端口中断是关闭的 ...…

查看全部问答>

E掏E里面有人免费赠送开发板,大家快去申请

E掏E里面有人免费赠送开发板,大家快去申请 https://bbs.eeworld.com.cn/thread-290539-1-1.html…

查看全部问答>

28335中正弦表问题的请教

在DPS的28335中,库函数里面是否含有现成的正弦表??如果有的话,在哪个库函数中,运用的时候应该怎么调用呢?…

查看全部问答>