• 大小: 485KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: 其他
  • 标签: SPI  VHDL  

资源简介

介绍了如何用vhdl语言实现处理器的spi接口 附所有程序以及说明PDF

资源截图

代码片段和文件信息


#define SIZE 100 
unsigned char SPI_rx_buff[SIZE]; 
unsigned char SPI_tx_buff[SIZE]; 
unsigned char rx_wr_indexrx_rd_indexrx_counterrx_buffer_overflow; 
unsigned char tx_wr_indextx_rd_indextx_counter; 

#pragma interrupt_handler spi_stc_isr:18 
void spi_stc_isr(void) 

  SPI_rx_buff[rx_wr_index] = SPDR; //从ISP口读出收到的字节 
  if (++rx_wr_index == SIZE) rx_wr_index = 0; //放入接收缓冲区,并调整队列指针 
  if (++rx_counter == SIZE) 
    { 
      rx_counter = 0; 
      rx_buffer_overflow = 1; 
    } 
  if (tx_counter) //如果发送缓冲区中有待发的数据 
    { 
      --tx_counter; 
      SPDR = SPI_tx_buff[tx_rd_index]; //发送一个字节数据,并调整指针 
      if (++tx_rd_index == SIZE) tx_rd_index = 0; 
    } 


unsigned char getSPIchar(void) 

  unsigned char data; 
  while (rx_counter == 0); //无接收数据,等待 
  data = SPI_rx_buff[rx_rd_index]; //从接收缓冲区取出一个SPI收到的数据 
  if (++rx_rd_index == SIZE) rx_rd_index = 0; //调整指针 
  CLI(); 
  --rx_counter; 
    SEI(); 
    return data; 


void putSPIchar(char c) 

  while (tx_counter == SIZE);//发送缓冲区满,等待 
  CLI(); 
  if (tx_counter || ((SPSR & 0x80) == 0))//发送缓冲区已中有待发数据 
    { //或SPI正在发送数据时 
      SPI_tx_buffer[tx_wr_index] = c; //将数据放入发送缓冲区排队 
      if (++tx_wr_index == SIZE) tx_wr_index = 0; //调整指针 
      ++tx_counter; 
    } 
  else 
    SPDR = c; //发送缓冲区中空且SPI口空闲,直接放入SPDR由SIP口发送 
SEI(); 


void spi_init(void) 

  unsigned chat temp; 
  DDRB |= 0x080; //MISO=input and MOSISCKSS = output 
  PORTB |= 0x80; //MISO上拉电阻有效 
  SPCR = 0xD5; //SPI允许,主机模式,MSB,允许SPI中断,极性方式01,1/16系统时钟速率 
  SPSR = 0x00; 
  temp = SPSR; 
  temp = SPDR; //清空SPI,和中断标志,使SPI空闲 


void main(void) 

  unsigned char I; 
  CLI(); //关中断 
  spi_init(); //初始化SPI接口 
  SEI(); //开中断 
  while() 
    { 
      putSPIchat(i); //发送一个字节 
      i++; 
      getSPIchar(); //接收一个字节(第一个字节为空字节) 
      ……… 
    } 



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1567  2008-01-10 12:57  spi_interface\control_led.vhd

     文件     125142  2008-01-10 13:00  spi_interface\74hc595.pdf

     文件       3668  2008-01-10 15:37  spi_interface\pc104_spi.vhd

     文件       1006  2008-01-10 17:01  spi_interface\three_spi.vhd

     文件       6428  2007-12-16 18:58  spi_interface\spi93c46\.sopc_builder\install.ptf

     目录          0  2007-12-16 18:58  spi_interface\spi93c46\.sopc_builder

     文件      12988  2007-12-17 19:58  spi_interface\spi93c46\Block1.bdf

     文件       1758  2007-12-17 15:15  spi_interface\spi93c46\clk.bsf

     文件        342  2007-12-17 19:58  spi_interface\spi93c46\clk.v

     文件       2380  2007-12-16 18:54  spi_interface\spi93c46\db\mux_5kc.tdf

     文件        236  2007-12-17 21:10  spi_interface\spi93c46\db\wed.zsf

     文件        151  2008-01-10 15:12  spi_interface\spi93c46\db\spi93c46.db_info

     文件        149  2008-01-10 15:14  spi_interface\spi93c46\db\spi93c46.sld_design_entry.sci

     文件        156  2008-01-10 15:14  spi_interface\spi93c46\db\spi93c46.eco.cdb

     目录          0  2007-12-17 21:10  spi_interface\spi93c46\db

     文件        242  2007-12-16 19:14  spi_interface\spi93c46\mi.v

     文件       6050  2007-12-16 19:15  spi_interface\spi93c46\mi.vwf

     文件        237  2007-12-16 18:54  spi_interface\spi93c46\mo.v

     文件       5643  2007-12-16 18:45  spi_interface\spi93c46\mo.vwf

     文件       2154  2007-12-17 14:59  spi_interface\spi93c46\PushButton_Debouncer.bsf

     文件       1537  2007-12-13 16:30  spi_interface\spi93c46\PushButton_Debouncer.v

     文件          0  2007-12-16 18:58  spi_interface\spi93c46\sopc_builder_debug_log.txt

     文件       7211  2007-12-17 19:58  spi_interface\spi93c46\spi93c46.asm.rpt

     文件       7035  2007-12-17 19:57  spi_interface\spi93c46\spi93c46.bsf

     文件        300  2007-12-17 15:45  spi_interface\spi93c46\spi93c46.cdf

     文件         26  2007-12-17 19:58  spi_interface\spi93c46\spi93c46.done

     文件        239  2007-12-17 21:10  spi_interface\spi93c46\spi93c46.dpf

     文件      95396  2007-12-17 19:58  spi_interface\spi93c46\spi93c46.fit.rpt

     文件        513  2007-12-17 19:58  spi_interface\spi93c46\spi93c46.fit.smsg

     文件        491  2007-12-17 19:58  spi_interface\spi93c46\spi93c46.fit.summary

............此处省略109个文件信息

评论

共有 条评论