模拟spi代码

  • Post author:
  • Post category:其他




驱动没有提供spi 硬件驱动,使用模拟spi ,进行调试

在这里插入图片描述

spi 根据cpol 和 cpha 有4种模式

参看如下帖子的基础之上,稍作修改调通了了应用程序


https://blog.csdn.net/foxclever/article/details/125586266



测试通过的模式3代码

void SpiInOut(unsigned char senddata)
{
	unsigned char i;
	CLK_L();                       
	for(i=0;i<8;i++)
	{
		if((senddata<<i)&0x80)
		{
			SDI_H();                   
		}
		else
		{
			SDI_L();                   
		} 
		usleep(TIME);	
		CLK_L();                       
		usleep(TIME);	
		CLK_H();                       
	}
	CLK_H();                       
	usleep(TIME);	
}

unsigned char SpiRCVaByte(void)
{
    unsigned char i,temp;
    temp = 0;

    CLK_L();                                                
    usleep(TIME);   

    for(i=0;i<8;i++)
    {
        CLK_L();                                                
        usleep(TIME);   

		temp=(temp<<1);

		if(1 == SDO_READ())
		{
            temp |= 0x01;                                             
		}
		else
		{
			temp &= 0xfe;
		}

    	CLK_H();                                                
		usleep(TIME); 
    }
    CLK_H();

    return temp;
}

void SPIwriteBuffer(char *buffer, char size )
{
	char i;
	SEL_L();
	for( i = 0; i < size; i++ )
	{
		SpiInOut( buffer[i] );
	}
	SEL_H();
}

void SPIreadBuffer(char *buffer, char size )
{
	char i;
	SEL_L();
	for( i = 0; i < size; i++ )
	{
		buffer[i] = SpiRCVaByte();
	}
	SEL_H();
}



测试结果

在这里插入图片描述



版权声明:本文为qq_27087571原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。