/*============================================== * 描 述:SPI总线 * 开始时间:2011-3-30 * 完成时间:2011-3-30 * 最后修改:2011-07-22 * 版 本: V7.3 * 作 者:林鸿 * 说 明: * 备 注: //==============================================*/ #include #include /*包含含有_nop_()函数的头文件*/ #include "delay_020.h" #include "SPI.h" /*----------------------------------------------------------------- * 函数功能: 发送一个字节的数据 * 入口参数: 待发的数据 * 返回参数: 无 * 全局变量: 无 * 调用模块: 无 * 注意事项:时钟是上升沿的时候发送数据,片选低电平有效有效 //------------------------------------------------------------------*/ void Send_char(uchar Date_Send) { uchar i=8; Cs_out=1; nop; nop; nop; Cs_out=0; Clk=0; while(i) { Clk=0; Mosi=(Date_Send&0x80); Date_Send<<=1; Clk=1; i--; } Cs_out=1; Clk=0; //先给一个上升沿来更新FPGA里面的值 nop; nop; Clk=1; } /*----------------------------------------------------------------- * 函数功能: 接收一个字节的数据 * 入口参数: 无 * 返回参数: 接收一个字节的数据 * 全局变量: 无 * 调用模块: 无 * 注意事项:时钟是下降接收数据,片选下降沿有效 //------------------------------------------------------------------*/ uchar Recive_char() { uchar i=8; uchar Date; Clk=1; //先给一个下降沿来更新FPGA里面的值 nop; nop; Clk=0; Cs_in=1; nop; nop; nop; Cs_in=0; Clk=1; while(i) //下降沿的时候采集数据 { Clk=0; //FPGA的数据发送到MISO总线上 nop; nop; Date<<=1; if(Miso) Date=Date|1; i--; Clk=1; } Cs_in=1; return Date; }