如何通过2440spi总线读写外设的寄存器?

img2007   2008-10-31 10:02 楼主
平台:arm开发板,用spi总线外接1个fir红外芯片,s3c2440 + linux2.6.24.7

现在2440这边已经做好了,insmod bitbang.ko,s3c24xx.ko,insmod spidev.ko,用testspi,用示波器可以测到时钟和数据的波形都是对的,但不知道如何读写fir的寄存器?以前都是并行总线,ioremap就可以了,第一次接触spi总线,请有经验的大侠们不吝赐教!万分感谢

回复评论 (3)

都这么长的时间怎么连个回复的人都没有,是我提的问题水平太低,大家都不些回复么?20分要白白浪费了饿
点赞  2008-11-8 10:19
你的SPI驱动里面实现读写函数就可以了吧
下面是我在ADS下的SPI读写函数:
/****************************************************************************
【功能说明】SPI接口写入数据
****************************************************************************/
void Spi_Write( U8 Data )
{
        U8 m ;

        for( m = 0; m < 8; m++ )
        {
                if( (Data&0x80)==0x80 )
                        MCP2510_SI_H;                //SI put 1
                else
                        MCP2510_SI_L;                //SI put 0

                { U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延时至少300ns
                MCP2510_SCK_H ;                //SCK put 1
                Data = Data<<1 ;
                MCP2510_SCK_L ;                //SCK put 0
                { U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延时至少300ns
        }
}

/****************************************************************************
【功能说明】SPI接口读出数据
****************************************************************************/
U8 Spi_Read( )
{
        U8 m ;
        U8 data = 0 ;

        for( m = 0; m < 8; m++ )
        {
                MCP2510_SCK_H ;                //SCK put 1
                { U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延时至少300ns
                data = data<<1;
                if( MCP2510_SO_GET != 0 )
                        data |= 0x01 ;
                else
                        data &= 0xfe;

                { U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延时至少300ns
                MCP2510_SCK_L ;                //SCK put 0
                { U16 k=0; for( ; k <= DELAY_TIME; k++ ) ;  }  //延时至少300ns
        }

        return (data);
}

***********************************************************************************
功能最全的2440开发板-飞凌TE2440Ⅱ: http://www.witech.com.cn/product/TE-ARM2440-2.html
***********************************************************************************
点赞  2008-11-8 17:03
现在可以读写了,只要在总线是实现设备的读写时序,device会自动响应的;

这个code我也有,它是自己实现spi时序的,根本没用kernel带动spi驱动,
感谢你的回答,分数给你了
点赞  2008-11-12 16:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复