ARM7入门12,SPI通信

发布者:ziyunting最新更新时间:2016-11-01 来源: eefocus关键字:ARM7入门  SPI通信 手机看文章 扫描二维码
随时随地手机看文章
数码管显示1-F。

主程序:

/*******************************************************************************
*File: Main.c
*功能: LED数码管显示0-F字符,同时控制4个LED显示对应的十六进制
*******************************************************************************/
#include  "config.h"
#define   HC595_CS    0x00000100            /*P0.8口为74HC595的片选*/
uint8 rcv_data;
/*******************************************************************************
*名称: DelayNS()
*功能: 长软件延时
*******************************************************************************/
void DelayNS(uint32 dly)
{  uint32  i;
   for (;dly>0;dly--)
      for(i=0;i<50000;i++);
}
/*******************************************************************************
*名称: MSpiIni()
*功能: 初始化SPI接口,设置为主机
*******************************************************************************/
void MSpiIni(void)
{ S0PCCR=0x52;           //设置SPI时钟分频
  S0PCR=0x30;            //设置SPI接口模式,MSTR=1,CPOL=1,CPHA=0,LSBF=0
}
/*******************************************************************************
*名称: MSendData()
*功能: 向SPI总线发送数据
*******************************************************************************/
uint8 MSendData(uint8 data)
{ IO0CLR=HC595_CS;                             //片选
  S0PDR=data;
  while(0==(S0PSR&0x80));                  //等待SPIF置位,即等待数据发送完毕
  IO0SET=HC595_CS;
  return(S0PDR);
}
/*此表为0~F的字模*/
  uint8 const DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
                            0x88,0x83,0xC6,0xA1,0x86,0x8E};
/*******************************************************************************
*名称: main()
*功能: 使用硬件SPI接口输出0~F的数据,控制LED显示
*******************************************************************************/

int main(void)

  uint8 i;  
  
  PINSEL0=0x00005500;                 //设置SPI引脚连接
  PINSEL1=0x00000000;
  
  IO0DIR=HC595_CS; 
  MSpiIni();                         //初始化SPI接口
  while(1)
  { for (i=0;i<16;i++) 
    {rcv_data=MSendData(DISP_TAB[i]);   //发送显示数据
      DelayNS(50);                     //延时
    }
  }
  
}

关键字:ARM7入门  SPI通信 引用地址:ARM7入门12,SPI通信

上一篇:ARM7入门12,SPI通信
下一篇:ARM7入门13,定时器控制LED灯闪烁

推荐阅读最新更新时间:2024-03-16 15:18

SPI总线协议的通信原理及应用举例
  SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。   (1)SDO – 主设备数据输出,从设备数据输入   (2)SDI – 主设备数据输入,从设备数据输出   (3)SCLK – 时钟信号,由主设备产生   (4)CS – 从设备使能信号,由主设备控制   其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。
[嵌入式]
STM32通信接口(三)硬件SPI
一、概述 SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,是Motorola最先在其的MC68HCXX芯片上使用,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。 SPI接口主要应用在实时时钟、E2PROM、FLASH、AD转换器还有数字信号处理器和数字信号解码器之间,它的用途相当广泛。而且其传输速度较快一般可以达到10M以上。 二、基本原理 由图可知SPI一般由四条线组成:MISO(主机输入从机输出
[单片机]
STM32<font color='red'>通信</font>接口(三)硬件<font color='red'>SPI</font>
理解一下单片机的I2C和SPI通信
应某位网友要求,今天说一下单片机的I2C SPI通信,可能说不清楚,因为这毕竟要做实验才可完全理解。 I2C和SPI是两种不同的通信协议。 听到协议,似乎高不可攀,其实协议就是人们定义的一个标准而已,我们只要遵照这个标准去做事,就可以。比如公司规定早上9点上班,我们就9点上班,不然就会扣薪水,这就是个协议。 用I2C通信的芯片最常用的就是EEPROM芯片,如Atmel的AT24CXX系列,此外,还有一些其它功能的芯片。用SPI通信的芯片有外置FLASH芯片,同样,还有其他功能的一些芯片。 I2C通信需要用到两个引脚:SDA SCL。SCL是时钟引脚,SDA是数据引脚。 (这是EEPROM芯片) (这是时钟芯片) SPI通信
[单片机]
理解一下单片机的I2C和<font color='red'>SPI</font><font color='red'>通信</font>
SPI nRF24L01无线 [可以放在2个单片机里实现通信]
main.c 1 #include reg51.h 2 #include 2401.h 3 4 #define uint unsigned int 5 #define uchar unsigned char 6 7 sbit KEY8=P3^7; //发送按键 8 sbit beep=P2^3;//喇叭 9 sbit LED6=P1^6; ////接收到数据后的功能实现灯 10 11 void delay_ms(uint z) //延时函数 12 { 13 uint x,y; 14 for(x=z;x 0;x--) 15 for(y=110;y 0;y--); 16 } 17
[单片机]
基于AVR单片机的SPI多机环路通信
一主机三从机的SPI通信 程序如下:主机://ICC-AVR application builder : 2012-1-13 18:56:57 // Target : M16 // Crystal: 8.0000Mhz // 完整程序下载: http://www.51hei.com/f/djhltl.rar #include iom16v.h #include macros.h #define Load_High PORTB|=(1 4) #define Load_Low PORTB&=~(1 4) unsigned char tab ={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,
[单片机]
基于AVR单片机的<font color='red'>SPI</font>多机环路<font color='red'>通信</font>
利用DM6437的McBSP配置SPI与ARM_S2440通信
McBSP是多通道缓冲串行口,DM6437提供了McBSP0&McBSP1两个串行口,每个串行口有7个管脚,可以支持多通道串行数据通信。 MCBSP的内部框图: 这两个端口也支持时钟停止模式,内部FSR与FSX、CLKX与CLKR连接在一起,这时候DX为MOSI,,DR为MISO,CLKX为SCK和FSX为nSS。 配置SPI口要注意的地方:通信模式选择要一致;SPI提供了四种通信模式:SPI0、SPI1、SPI2、SPI3。 McBSP通过配置CLKSTP与CLKXP来设置这四种模式: 一般而言SPI0模式采用的多一些。 SPI初始化步骤: 在这之前还有两个操作必须完成,DM6437的管脚复用设置为McBSP模式、M
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved