资源简介
介绍了如何用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系列元器件封装尺寸图
相关资源
- vhdl转换成verilog语言
- 模型机 vhdl实现
- VHDL设计多功能数字钟
- 计算机组成原理课程设计vhdl设计cpu
- 标准化降水指数SPI及降水百分位指数
- AD7768 Verilog Driver
- Xilinx LDPC
- VHDLDesignandFPGAImplementationofLDPCDecode 一篇
- AutomotiveSPICE_PAM_31
- AutomotiveSPICE_PAM_31_Chinese
- SPI_UVM_VIP SPI协议的芯片验证VIP
- 漫谈数据中心clos网络架构
- PIC单片机之SPI总线篇
- PIC单片机SPI通信的设计
- PIC单片机SPI读写程序
- VHDL设计的串口通信程序
- 全功能SPI接口的设计与实现
- 树莓派SPI从机主机代码
- AutomotiveSPICE完整中文版3.1
- spice-protocolspice-gtk从0编译说明文档并
- STM32F103驱动SSD1353主控OLED程序 使用硬
- STM32F103 TFT彩屏显示 SPI控制W25X16(外部
- STM32 F407的SPI+DMA带文件系统FATFS.zip
- S25FL512SAGMFI011.rar
- kmspico 10.1.5_KMS激活工具.rar
- BCS-BEC crossover and quantum phase transition
- Unconventional Fulde-Ferrell-Larkin-Ovchinniko
- Comparative Studies of Three Synthetic Routes
- Separation of spin angular momenta in focal re
- The Instability of Spiky Steady States for a C
评论
共有 条评论