您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机avr单片机SPI串行外设接口初始化配置及说明 正文
avr单片机SPI串行外设接口初始化配置及说明

avr单片机SPI串行外设接口初始化配置及说明

点击数:7878 次   录入时间:03-04 11:40:29   整理:http://www.55dianzi.com   AVR单片机
         SPI中断即产生。如果SPI 为主机, SS 配置为输入,且被拉低, SPIF 也将置位
            进入中断服务程序后SPIF自动清零。或者可以通过先读SPSR,紧接着访问SPDR来对
            SPIF清零。
      WCOL: 写碰撞标志
            在发送当中对SPI 数据寄存器SPDR写数据将置位WCOL。WCOL可以通过先读SPSR,紧接
            着访问SPDR 来清零。
      Bit 5..1 – Res: 保留
            保留位,读操作返回值为零。
      SPI2X: SPI 倍速
             置位后SPI 的速度加倍。若为主机,则SCK 频率可达CPU 频率的一半。若为从机,
             只能保证fosc /4。
             ATmega16的SPI接口同时还用来实现程序和EEPROM的下载和上载。
         
      //********************************SPI
      数据寄存器SPDR**************************************
      SPI 数据寄存器SPDR
      bit7      bit6      bit5      bit4      bit3      bit2      bit1      bit0

      MSB                                                                    LSB

          SPI 数据寄存器为读/写寄存器,用来在寄存器文件和SPI移位寄存器之间传输数据。写
      寄存器将启动数据传输,读寄存器将读取寄存器的接收缓冲器。
      */
      #include<iom16v.h>
      #include<macros.h>
      #pragma interrupt_handler SPI_END: iv_SPI_STC
      void SPI_MasterInit(void)// 初始化为主机
      {  
      DDRB = (1<<DDB5)|(1<<PB7); //设置 MOSI和 SCK为输出,其他为输入
      SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);// 使能 SPI主机模式,设置时钟速率为 fck/16
      }
      void SPI_MasterTransmit(char cData) //主机数据发送
      {
      SPDR = cData; // 启动数据传输
      while(!(SPSR & (1<<SPIF))); //等待传输结束
      }
      void SPI_SlaveInit(void)// 将SPI初始化为从机
      {
      DDRB = (1<<PB6); //设置 MISO 为输出,其他为输入
      SPCR = (1<<SPE); //使能 SPI
      }
      char SPI_SlaveReceive(void)//从机数据接收
      {
      while(!(SPSR & (1<<SPIF))); // 等待接收结束
      return SPDR;// 返回数据
      }
      void SPI_END()
      {
      //add your code here!
      }



上一页  [1] [2] [3] 


本文关键字:单片机  接口  外设  AVR单片机单片机-工控设备 - AVR单片机