AVR单片机SPI心得体会_程序代码.docx

AVR单片机SPI心得体会_程序代码.docx

ID:59007757

大小:214.25 KB

页数:5页

时间:2020-09-15

AVR单片机SPI心得体会_程序代码.docx_第1页
AVR单片机SPI心得体会_程序代码.docx_第2页
AVR单片机SPI心得体会_程序代码.docx_第3页
AVR单片机SPI心得体会_程序代码.docx_第4页
AVR单片机SPI心得体会_程序代码.docx_第5页
资源描述:

《AVR单片机SPI心得体会_程序代码.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SPI心得体会关于SPI的一些基本内容就不再在这说了,下面主要是一些实用的用法知识。SPI是全双工通信,即可以单工通信,又可以全双工通信。在单工通信和半双工通信,比较简单,就是主机(从机)发送数据,对方接受数据。在全双工通信中,就是主机A在发送的数据也在接受数据,同理,此时从机B在接受数据的同时也在发送数据,但何时发送(接受),完全是由主机A控制的(/SS)。过程如下:主机A写SPDR,开始发送数据,同时接收,接收的数据放入缓冲器中,当这个事(发送、接收)之后,置位标志位SPIF,判断(读)标志位SPSR中

2、的SPIF(或者设置中断)。读取刚才接收的数据。后面还是再写数据和接收,或停止传输。从机B先将数据写入SPDR中,待主机开始传数据时,B接收数据到缓冲器中,并同时发送数据到A中。完事之后置位标志位SPIF。后面就是写数据读数据。有几个要点:1.主机从机的各端口同名相连,即MOSI连MOSI;MISO连MISO;SCK连SCK;/SS连SS。这与有些单片机半双工的不同(如TXD连RXD,RXD连TXD.)。即MO连SI,MI连SO。2.端口配置问题。主机A,MOSI、/SS、SCK配置为输入,MISO配置为输

3、出。从机B,只有MISO配置为输出,其他都为输入。理解了前面的,后面的东西设置就相对简单了:1.主机从机选择及端口配置2.传输波特率,是否倍速。3.发送方向(先发低位还是先发高位)。4.时钟的极性和相位(就是SCK高位空闲还是低位空闲,及在脉冲的前沿检测还是后沿检测,这个对传输无影响)。5.是否要发生中断设置。下面是一个例程。(本人刚学AVR单片机,编程中有别扭处见谅)。环境说明:采用aTmega128AVR单片机。软件AVRstudio5.protues为7版本。程序说明:U1为主机,U2为从机。两个aT

4、mega128AVR单片机进行通信,如图所示。U1每秒中发一个数据(0-9)到U2,并在U2中接数码管显示出来;同时U2发一个数据(9-0)到U1,也在U1中接的数码管显示出来。U1中采用定时器/计数器1。Protues仿真图:程序如下:1.主机程序:/**SPI_2.c**Created:2012-10-615:19:01*Author:Administrator*/#include#include#includeunsig

5、nedcharfnd[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};volatileunsignedchars_count=0,tr_count=0,s_flag=0;voidinit(void);voidtimer_init(void);send_re(unsignedcharnum);voiddelay_us(unsignedintnum){unsignedinti,j;for(i=0;i

6、signedcharnum1=0;init();timer_init();while(1){if(s_flag){s_flag=0;num1=send_re(9-tr_count);PORTD=fnd[num1];tr_count++;if(tr_count>9)tr_count=0;}}}send_re(unsignedcharnum){unsignedcharr;PORTB&=0XFE;//拉低/SS;SPDR=num;//发送数据while(!(SPSR&(1<

7、完。PORTB

8、=0X01;//拉高/SSr=SPDR;//读取接受的数据。returnr;}voidinit(void){DDRB=(1<

9、(1<

10、(1<

11、=0X01;DDRD=0XFF;}voidtimer_init(void){TCNT1H=0XCF;//设初值;TCNT1L=0X32;TCCR1B=0X02;//工作方式。TCCR1A=0;TCCR1C=0;//TIFR=0X04;//清标志,开中断使能及总中

12、断。TIMSK=0X04;sei();}SIGNAL(SIG_OVERFLOW1){TCNT1H=0XCF;//设初值;TCNT1L=0X32;s_count++;if(s_count==10){s_flag=1;s_count=0;PORTF=PORTF

13、0X02;}}1.从机程序:/**SPI_22.c**Created:2012-10-615:48:16*Author:Administrator*/#inc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。