AVR单片机学习SPI串行口与DS1302

2020-02-07来源: eefocus关键字:AVR单片机  SPI  串行口  DS1302

简介:同步串行口SPI的基本原理
DS1302的接口时序图
DS1302的使用
M16的SPI的使用



SPI基本原理


spi 它是一种最常用的同步串行接口:同步的意思就是利用时钟线对串行数据进行同步在时钟的上升沿或下降沿极性锁存数据.所以它的线至少有时钟线和数据线.


一、同步串行口


利用时钟线对串行数据进行同步


上升沿或者下降沿锁存数据


二、4线SPI:全双工(它的两根数据线一个是收一个是发收发是可以同时进行的,还有2根 SS SCLK SS是用来帧同步的控制线,时钟是SCLK 上升合下降)


SS 、SCLK、MOSI、MISO


三、3线SPI:半双工(半双工,收和发 用同一根 DIO )


SS、SCLK、DIO


四、SPI时序图


五、按照时序图编写IO程序


一、上升沿:


PORTB &= ~(1<<5);


asm("NOP");


PORTB |= (1<<5);


二、下降沿:


PORTB |=(1<<5);


asm("NOP");


PORTB &= ~(1<<5);


下图是DS1302的时序图


从上图可以看到它是属于3线的SPI接口


读操作:


单字节读的时序


在CE它是一个帧同步在空闲的时候它是拉低的,它把CE拉高标示这一帧就要开始,然后在每一个SCLK的上升沿(S估计就是串行的意思CLK时钟)我们看到每个上升沿上标了一个小箭头然后在每个I/O 数据线上,记住前8位叫做输入地址的这样的数据,可以看到在每个时钟的上升沿讲每个数据写入这个DS1302,在这个后8位这个DS1302的I/O口就要有输入状态转变为输出可以看到变成下降沿上了,所以在读数据的时候是在SCLK的下降沿上进行输出的。

然后单片机就可以用I/O将这8位数据一位一位的读回来,一帧2个字节16位结束之后呢?CE这根线就要拉低,表示这一帧结束了


写操作:


这是一个单字节写的时序


它与单字节读非常类似的也是CE 这根线的拉高与拉低表示这一帧数据的开始和结束所不同的是这16位数据都是要输入到DS1302里面去的也就是DS1302这个I/O一直是处于输入状态这个数据呢每个数据都是在每个数据的上升沿之中锁入到DS1302之中、


这个是DS1302的时序图,下面看看ATmega16的SPI接口的时序图





可以看出他有4种模式 上升 下降 有两种 共4种


等后面操作详细讲说时序。


解释:相对于串行数据,SCK的相位合极性有4种组合。CPHA和CPOL控制组合的方式。SPI数据传输格式见Figture 67与Figure 68,每一位数据的移出和移入发生于SCK不同的信号跳变沿,以保证有足够的时间使数据稳定。这个过程在Table 56 和Table 57 有清楚的说明:sample(采样)rising(上升) setup(设置)falling(下降) 呵呵英语不好。


Figure 67 是CPHA =0 时候的传输格式


Figure 68 是CPHA =1 时候的传输格式


ATmega 16 支持以上四种全部的模式 有的是上升沿锁存有的是下降沿锁存这四种模式,这四种模式我们一会在说到ATmega 16 的SPI接口的时候会详细给你们菜鸟说:


好了再看了SPI的时序图之后要怎样按照时序对它编程呢?


在基本的逻辑里面同步都是靠时钟的上升沿来进行同步,也就是说我们需要掌握这个I/O口让他产生一个时钟,它上升沿或者下降沿的方法,上升沿就是低跳变到高,我们以PORTB 它的第五位作为输出口为例来进行讲解,产生上升沿首先它原先必须要是低输出一个低电平0 PORTB =~(1<<5) 拉低 然后一个延迟延迟也可以去掉要看接受方的SPI接受速度是怎么样的了,不过一般的器件它的SPI速率都是非常高的,我们没有必要考虑单片机是否过快对它有所影响因此这个asm("NOP");这条语句可以去掉不过这个是什么意思呢?asm 在C语言中插入一条汇编指令,NOP呢?NOP是汇编语言中的一条空指令表示的是CPU在接下来的一个CPU时钟里面它是什么都不干,干等着这么一个CPU时钟周期,所以就实现一个非常小的延时。然后呢再将PORTB |=(1<<5) 它的第五位拉高,这样就产生一个上升沿,同理下下降沿也是一样的。接下来咱么讲一下DS1302的时序图吧。


DS1302的接口时序图与AVR的接线图

时序图

见DS1302的官方技术文档

与AVR之间的接线图

3线SPI与4线SPI的互联




这个时序图上面已经说过了,那么这个DS1302属于3线的SPI 而ATmega 16 是4线的SPI接口那么3线合4线之间怎样进行互联呢?我们看以采用下面的这种方法。


来看下电路图


上图的PB5 PB6 PB7是单片机的三个I/O口。 可以看他它的第二功能是SPI功能


PB5可以看到MOSI M是主 S 是从 意思就是主机输出 从机输入


同理PB6 MISO 是主机输入从机输出也就是AVR的SPI正常工作的时候PB6这个引脚它应该是处于一个输入的状态PB5应该是一个输出的状态。我们就将PB5 与PB6之间串上一个10K的电阻然后再将PB6直接接到I/O上,下面我们可以简单的分析一下原理图是怎样正常工作的,首先这个DS1302对它处于写的状态的时候呢,DS1302的I/O口是处于输入的,而PB6呢也是一个输入口始终是一个输入口。










关键字:AVR单片机  SPI  串行口  DS1302 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic487489.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:简述AVR单片机中断
下一篇:AVR应用经验-经典

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AVR单片机IAR AVR C语言中断编程
一、AVRmega16中断向量表向量号 程序地址 中断源 描述 IAR AVR中的定义 1 000 RESET 外部引脚电平引发的复位,上电复位,掉电检测复位,看门狗复位,以及JTAG AVR 复位 RESET_vect 2 002 INT0 外部中断请求0 INT0_vect 3 004 INT1 外部中断请求1 INT1_vect 4 006 TIMER2 COMP 定时器/计数 2 比较匹配 TIMER2_COMP_vect 5 008 TIMER2 OVF 定时器/计数 2 溢出 TIMER2_OVF_vect 6 00A TIMER1 CAPT 定时器/计数 1事件捕捉 TIMER_ CAPT_vect 7 00C
发表于 2020-03-04
基于AVR单片机与CH375的多通道核辐射探测数据采集系统
该系统采用了AVR单片机、高速器件及USB接口技术,采集速度快,死时间短,计数率高,通信量大。USB所具有的即插即用、通用性强、易扩展、可靠性高等优点改善了各探测通道的使用性能。它不仅是4MeV静电加速器不可缺少的重要组成部分,而且为加速器防辐射安全提供确切依据,同时还为加速器在动植物育种、放射治疗、材料改性、放射化学等诸多方面的应用研究提供可靠的技术数据。整个系统已通过省级科技成果鉴定,实际运行良好。在更换探头和稍作参数调整后,还可将该系统用于其它大范围场地多种辐射的监测。0 引言文中介绍了多个探测通道组成的多道核数据采集系统,对4MeV静电加速器核辐射进行监测防护。各个通道采用AVR单片机ATmega128作为主
发表于 2020-03-02
基于AVR单片机与CH375的多通道核辐射探测数据采集系统
AVR单片机在LED遥控照明中的应用
摘要:基于AVR单片机设计了一种LED遥控照明系统,给出了红外接收模块和LED驱动模块的设计方法,以及软件程序流程。经测试,该方案可行,具有一定的应用价值。引言LED照明已经进入了家庭用户,与传统的照明设备(如白炽灯、荧光灯)相比,具有光源单色纯度高、色彩多样、效率高、光强度可调等优点。针对传统照明亮度不易调节、开关位置固定的问题,本文基于AVR单片机设计了一种LED遥控照明系统,提出了LED照明灯的驱动与亮度调节的方法。1 LED照明灯控制系统原理系统原理图如图1所示。当红外接收器接收到红外遥控信号时,通过外部中断将AVR单片机从休眠模式中唤醒;AVR单片机开始解析红外信号,如果与系统地址匹配,则将根据解析到的命令改变
发表于 2020-03-02
AVR单片机在LED遥控照明中的应用
基于AVR单片机和CMX865的串口转FSK通信模块
和捕捉功能的16位定时/计数器、具有独立片内振荡器的可编程看门狗定时器等。ATmega48/88/168芯片硬件电路可以完全兼容,完全可以根据软件实际需求灵活选择AVR芯片,极大地方便系统的开发与研制。三、硬件设计图1为串口转FSK通信模块电路。系统主要以AVR单片机ATmega48芯片和CMX865调制/解调芯片为硬件架构,ATmega48芯片利用C-BUS总线对CMX865芯片进行控制操作,实现FSK通信。CMX865芯片的IRQN终端与CPU芯片的外部中断0(INT0)相连,确保软件可以采用中断方式接收/发送FSK数据。CMX865芯片的时钟信号、片选信号、响应应答数据信号、接收控制数据信号分别与ATmega48芯片的普通I/O
发表于 2020-02-29
基于AVR单片机和CMX865的串口转FSK通信模块
AVR单片机中左移位和右移位指令
计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。计算机只能识别和执行机器语言的指令。为了便于人们理解、记忆和使用,通常用汇编语言指令来描述计算机的指令系统。汇编语言指令可通过汇编器翻译成计算机能识别的机器语言。AVR单片机指令系统是RISC结构的精简指令集,是一种简明易掌握﹑效率高的指令系统。SL-DIY02-3开发实验器使用AT90S8535单片机,有118条指令, 而我们所做的11个实验程序仅用了34条指令, 我们重点讲这34条指令, 其余指令就可自学了。AVR器件(指令速查表) 118条指令器件AT90S2313/2323/2343/2333 ,AT90S4414/4433/4434/8515,AT90S8534
发表于 2020-02-29
AVR单片机中左移位和右移位指令
分析AVR单片机优缺点
简介:AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。avr单片机的特点及优点高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是
发表于 2020-02-29
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved