資源簡介
介紹了如何用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個文件信息
- 上一篇:步態識別gaitgan論文
- 下一篇:QFN系列元器件封裝尺寸圖
評論
共有 條評論