資源簡(jiǎn)介
介紹了如何用vhdl語(yǔ)言實(shí)現(xiàn)處理器的spi接口
附所有程序以及說(shuō)明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口讀出收到的字節(jié)?
??if?(++rx_wr_index?==?SIZE)?rx_wr_index?=?0;?//放入接收緩沖區(qū),并調(diào)整隊(duì)列指針?
??if?(++rx_counter?==?SIZE)?
????{?
??????rx_counter?=?0;?
??????rx_buffer_overflow?=?1;?
????}?
??if?(tx_counter)?//如果發(fā)送緩沖區(qū)中有待發(fā)的數(shù)據(jù)?
????{?
??????--tx_counter;?
??????SPDR?=?SPI_tx_buff[tx_rd_index];?//發(fā)送一個(gè)字節(jié)數(shù)據(jù),并調(diào)整指針?
??????if?(++tx_rd_index?==?SIZE)?tx_rd_index?=?0;?
????}?
}?
unsigned?char?getSPIchar(void)?
{?
??unsigned?char?data;?
??while?(rx_counter?==?0);?//無(wú)接收數(shù)據(jù),等待?
??data?=?SPI_rx_buff[rx_rd_index];?//從接收緩沖區(qū)取出一個(gè)SPI收到的數(shù)據(jù)?
??if?(++rx_rd_index?==?SIZE)?rx_rd_index?=?0;?//調(diào)整指針?
??CLI();?
??--rx_counter;?
????SEI();?
????return?data;?
}?
void?putSPIchar(char?c)?
{?
??while?(tx_counter?==?SIZE);//發(fā)送緩沖區(qū)滿(mǎn),等待?
??CLI();?
??if?(tx_counter?||?((SPSR?&?0x80)?==?0))//發(fā)送緩沖區(qū)已中有待發(fā)數(shù)據(jù)?
????{?//或SPI正在發(fā)送數(shù)據(jù)時(shí)?
??????SPI_tx_buffer[tx_wr_index]?=?c;?//將數(shù)據(jù)放入發(fā)送緩沖區(qū)排隊(duì)?
??????if?(++tx_wr_index?==?SIZE)?tx_wr_index?=?0;?//調(diào)整指針?
??????++tx_counter;?
????}?
??else?
????SPDR?=?c;?//發(fā)送緩沖區(qū)中空且SPI口空閑,直接放入SPDR由SIP口發(fā)送?
SEI();?
}?
void?spi_init(void)?
{?
??unsigned?chat?temp;?
??DDRB?|=?0x080;?//MISO=input?and?MOSISCKSS?=?output?
??PORTB?|=?0x80;?//MISO上拉電阻有效?
??SPCR?=?0xD5;?//SPI允許,主機(jī)模式,MSB,允許SPI中斷,極性方式01,1/16系統(tǒng)時(shí)鐘速率?
??SPSR?=?0x00;?
??temp?=?SPSR;?
??temp?=?SPDR;?//清空SPI,和中斷標(biāo)志,使SPI空閑?
}?
void?main(void)?
{?
??unsigned?char?I;?
??CLI();?//關(guān)中斷?
??spi_init();?//初始化SPI接口?
??SEI();?//開(kāi)中斷?
??while()?
????{?
??????putSPIchat(i);?//發(fā)送一個(gè)字節(jié)?
??????i++;?
??????getSPIchar();?//接收一個(gè)字節(jié)(第一個(gè)字節(jié)為空字節(jié))?
??????………?
????}?
}?
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件???????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個(gè)文件信息
評(píng)論
共有 條評(píng)論