基于SPI的MAX7221与MCU连接

发布者:TranquilBreeze最新更新时间:2012-04-10 来源: 现代电子技术 关键字:SPI  MAX7221  ATmega128 手机看文章 扫描二维码
随时随地手机看文章

0 引 言

在仪器仪表的设计制作中常要用到数码管显示,有时数码管的数量还会很多。如果为每个数码管都单独设计驱动电路,一方面对MCU来说是一个不小的负担,另一方面大幅增加了电路板的面积成本。集成电路MAX7221单片可以驱动8位数码管,并且可以进行级联扩展,对于这个问题是一个较为妥善的解决方案。一般MAX7221与MCU的连接使用两种方法:一是使用MCU的I/O口直接模拟通信所需要的时序,此法操作较为繁琐,易出错;二是使用UART串行口,这种方法的通信速率最高仅为11.52 Kb/s。介绍第三种方法,即MAX7221通过串行外设接口(Serial PeripheralInterface,SPI)与MCU连接,此法具有简单和易于使用的特点,其通信速率理论上高达10 Mb/s。

1 SPI原理

SPI是一种由Motorola公司开发的高速、全双工、同步串行通信接口。MCU通过它可以方便地连接到存储器、A/D转换器、D/A转换器、实时时钟日历、LCD驱动器、传感器、音频芯片,甚至另一个MCU。由于SPI的成本低,实用性强,很多新推出的芯片都增加了对它的支持。

SPI以主从方式工作,这种模式通常有一个主机和一个或多个从机,使用4根信号线:主机输出/从机输入(MOSI)、主机输入/主机输出(MISO)、串行时钟SCLK和外设片选(SS)。典型的点对点SPI通信连接如图1所示。

SPI与UART的一个重要的区别就是它是一个同步通信协议。主机中有一个时钟发生器,可以在SCLK引脚上产生时钟信号,所有的数据传输都按照这个同步时钟来进行。主机和从机各有两个移位寄存器分布在各自MOSI及MISO引脚,具体的传输过程就是由这几个移位寄存器来完成的。以SS低电平有效为例,平时,主机维持SS为高电平,SCLK无信号;进行传输时,主机首先将SS引脚拉低作为从机的片选信号,然后在SCLK引脚上产生同步时钟,需要发送或接收的数据就按照这个时钟进入相应的移位寄存器。主机的数据从主机的MOSI引脚移出,移入到从机的MISO引脚;从机的数据从从机的MOSI引脚移出,移人到主机的MI-SO引脚;传输结束后,主机将SS拉高。有多个从机时,主机的SS信号可以与从机的片选逻辑进行组合,没有被选中的从机将不会参与SPI传输。

2 器件介绍

2.1 MAX7221

MAX7221是一款串行接口的数码管显示驱动器,单片最多可驱动8位数码管。它包含有七段译码器、位和段驱动器、多路扫描器、段驱动电流调节器、亮度脉宽调节器及多个特殊功能寄存器。MAX7221不仅可以很方便地与MCU相连接,还可通过级联进行扩展。它的主要功能特点有:

(1)10 MHz的串行接口;
    (2)BCD译码/非译码模式选择;
    (3)耗电仅150 μA的关断模式;
    (4)数字和模拟双重亮度控制;
    (5)SPI,QSPI,Microwire等多种串行接口。

2.2 MCU

考虑了实用性、性能价格比等多种因素,实验MCU选用ATmega128,它是一种基于AVR RISC结构的8位低功耗CMOS微处理器,最高工作频率为16 MHz。它采用了先进的指令集,绝大多数指令均为单周期指令,自带128 KB的FLASH,可以通过SPI,JTAG、引导程序等多种方式多次编程,支持系统编程及调试。ATmega128的SPI接口最高工作频率为主频的50%,可达8 MHz(与MAX7221SPI口的速率上限相当)。该接口的工作方式(主/从)、时钟极性、时钟沿及工作频率均可灵活配置。

3 硬件连接

图2所示为4片级联MAX7221通过SPI与ATmega128连接的电路图。该系统最多可以驱动32位数码管。由于数据是单向传输,因此将ATmega128配置为主机,MAX7221配置为从机,可以省略从机向主机传输数据的线路。在这种级联连接方式中,所有MAX7221的CS都连接在一起,其片选是通过在要传输的数据前增加空操作指令来实现的。

例如,要向第二级的MAX7221传输数据,应当在时序到来之后首先传输一个空操作指令(0X0000),然后再传输数据。要向第三级的MAX7221传输数据时,要先传输两个空操作指令,以此类推。值得一提的是,如果要用这种级联方式设计个数不是8的整数倍的数码管显示驱动器,必须要为各个MAX7221分配平均的扫描位数。

例如,如果需要12位数码管显示,那么采用两级级联驱动,每个MAX7221驱动6个数码管;如果需要11位数码管显示,那么一级驱动6个,一级驱动5个,但扫描限位仍然都设定为6,只将其中一个空接。这么做是因为MAX7221对8位数码管的扫描能力是一定的,在相同亮度的等级下需要进行扫描的数码管个数越多,数码管看上去就越暗。如果各级MAX7221设定的扫描限位不一致,尽管设定了相同的亮度等级,实际显示的亮度也会有所差别。

[page]

4 软件设计

图3是MAX7221的SPI传输时序图。

根据MAX7221的SPI时序图及寄存器地址表,可以编制出相应的ATmega128 SPI子程序。SPI_init()用于初始化ATmega128的SPI口,设定时钟极性和频率等参数;SPI_transmit()用于在时序到来时连续传输16位数据;MAX7221_transmit()用于总体完成从CS被拉低到数据传输结束的全过程,并将级联情况也考虑了进去。

需要注意的一点是MAX7221一上电就进入到关断模式,所驱动的数码管无任何显示,必须首先退出该模式进入到正常工作模式。相应的子程序如下:

5 实 验

实验中使用上述级联系统的软硬件进行了32位数码管循环显示测试,结果正常。此外,还利用AT-mega128自带的定时器对第一级的MAX7221进行速率测试,流程如图4所示。一共进行20次测试,最终定时器的平均读数为1 430 ms。据此可计算出数据传输的速率该速率未能达到理论上的8 Mb/s,其原因是进入和退出函数、循环以及对SS的拉低和置高都耗费了MCU的有效时间。可以推断,提高在MCU的频率时MAX7221的SPI传输速率还可进一步提高。

6 结 语

实验证明,MAX7221仅需3线即可通过SPI与MCU连接。这种SPI通信法不但通信速率高,还可用于级联的MAX7221系统,以驱动更多的数码管。

关键字:SPI  MAX7221  ATmega128 引用地址:基于SPI的MAX7221与MCU连接

上一篇:基于混合最优算法的高精度数控直流电源设计
下一篇:一种基于nRF2401的无线语音通信的实现

推荐阅读最新更新时间:2024-03-16 12:57

通过SPI方式实现LPC17xx的远程升级设计
一、设计方案简介 本方案基于NXP的LPC1768微处理器为平台,使用KEIL MDK4.70A为开发工具,通过SPI的方式实现程序的自动更新。 本方案程序由bootloader、低区用户程序,高区用户程序三部分组成。Bootloader实现程序的跳转及IAP程序的烧写。低区程序位于LPC1768的0x1000~0x2FFFF处,高区程序位于LPC1768的0x30000~0x67FFFF处。 待更新的程序放置于外部存储芯片N25Q256的0x00100000处,并占据48个扇区。LPC1768的bootloader通过SPI的方式读取N25Q256的数据并更新程序至高区用户程序,更新成功后,程序复位,运行更新后的程序
[单片机]
通过<font color='red'>SPI</font>方式实现LPC17xx的远程升级设计
STM32 基础系列教程 15 - SPI
前言 学习stm32 SPI通信接口使用,学会用SPI接口收发数据。 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。 本示例所用的最小系统板原理图: 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置: 系统时钟树 SPI器配置 引脚配置 中断配置(保持默认即可) 工程代码 在main.c 中加入如下图所示代码: 到此,我们就通过STM32的SPI接实发送
[单片机]
STM32 基础系列教程 15 - <font color='red'>SPI</font>
SPI接口原理与配置与其实验操作
SPI接口原理: SPI接口简介: SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 SPI内部结构简明图: (移位寄存器:将最高位 / 最低位移出去给另一个移位寄存器。高→高,低→低) SPI接口一般使用4条线通信: MISO 主设备数据输入,从设备数据输出。
[单片机]
<font color='red'>SPI</font>接口原理与配置与其实验操作
ATmega128单片机音节显示仿真与源码
ATmega128单片机源程序如下: //ICC-AVR application builder : 2018/2/23 22:40:20 // Target : M128 // Crystal: 8.0000Mhz #include iom128v.h #include macros.h //#include delay.h //本程序通过按键生成1-7共7个音阶,音阶对应的频率分别为523hz、587hz、698hz。。。 // tone_freq ={523,587,659,698,784,880,987} //tone_cnt 中成员值是生成不同频率的定时器寄存器OCR1A的设置值,例如523hz对应的定时
[单片机]
<font color='red'>ATmega128</font>单片机音节显示仿真与源码
STM8 SPI从模式
STM8 SPI从模式 在从配置里,SCK引脚用于接收到从主设备来的串行时钟。SPI_CR1寄存器中BR 的设置不影响数据传输速率。 置配步骤 1.选择CPOL和CPHA位来定义数据传输和串行时钟之间的相位关系(见图91)。为保证正确的数据传输,从设备和主设备的CPOL和CPHA位必须配置成相同的方式。 2.帧格式(MSB在前还是LSB在前取决于SPI_CR1寄存器中的LSBFIRST位)必须和主设备相同。 3.在使用硬件模式(参考从选择(NSS)脚管理部分)时,NSS引脚在字节传输的全部过程中都必须为低电平。在使用件模式时,设置SPI_CR2寄存器中的SSM位并清除SSI位。 4.清除MSTR位,设置SPE位,使相应引脚工作
[单片机]
STM8 <font color='red'>SPI</font>从模式
科华恒盛:SPI500K-B光伏逆变器一次性通过零/低电压穿越现场测试
日前,科华恒盛自主研发的SPI500K-B光伏并网逆变器在宁夏金礼50MW光伏电站并网性能现场试验中一次性成功通过。值得一提的是,此次测试是在实际的光伏电站中进行,其更加真实地反映了光伏并网逆变器的实际运行情况。 科华恒盛SPI500K-B光伏并网逆变器具备电网故障期间连续运行不脱网的能力,且其电压跌落期间的无功补偿特性满足相关标准要求。 据悉,本次现场测试,是由中国电力科学研究院、国家能源太阳能发电研发(实验)中心测试团队实施,测试严格依据国家标准GB/T19964-2012《光伏发电站接入电力系统技术规定》,对光伏电站低电压、零电压穿越功能的要求。测试项包括现场零/低电压穿越能力试验和频率扰动响应特性试验等试验。 此次,实际
[新能源]
基于增强型SPI接口的大容量Flash扩展实现
1引言 随着信息时代的到来,各种信息的集成和交互越来越频繁。运动控制系统中需要处理和存储的信息量也与日俱增,大部分运动控制系统的核心器件MCU自身已经集成了较大容量的存储器(与以前MCU相比),但仅仅依靠MCU自身的存储器一般很难满足系统对大容量存储的要求,因此必须找到高效的方法实现对系统存储容量的扩展。 SPI是一个高效、数据位数可编程设置的高速输入/输出串行接口,几乎所有MCU生产厂商都提供对SPI接口的支持,目前高速SPI接口的时钟频率已达到60MHz甚至更高,SPI接口一般只用4根连接线即可完成所有的数据通讯和控制操作,因此不占用MCU的数据总线和地址总线,极大的节约了系统的硬件资源,是一种经济实用的扩展系统
[缓冲存储]
STM32 | 两块STM32之间的SPI主从通信实例
一、整体框图及说明 这里使用 STM32F429IGT6 作为主机,STM32F103ZET6 作为从机,都配置为全双工。本例要实现的功能就是主、从机之间的数据互传。 主机往从机发送的数据为: 从机往主机发送的数据为: 二、关键代码 主机关键代码: 从机关键代码: 可见,主机与从机的代码大多都一样。只是从机多了一步启动传输的操作,这一步很关键,少了这一步传输就不正常。这是为了制造主机发送的同时也要接收到数据的条件。这一点参考手册里也有相关说明: 此处,要营造这样的条件,必须先启动从机,然后再启动主机。只有保证主机发送的同时有接收到数据,才能保证其时序的正常,否则可能会产生数据错位,或者会产生多余数据
[单片机]
STM32 | 两块STM32之间的<font color='red'>SPI</font>主从通信实例
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved