平台:arm开发板,用spi总线外接1个fir红外芯片,s3c2440 + linux2.6.24.7
现在2440这边已经做好了,insmod bitbang.ko,s3c24xx.ko,insmod spidev.ko,用testspi,用示波器可以测到时钟和数据的波形都是对的,但不知道如何读写fir的寄存器?以前都是并行总线,ioremap就可以了,第一次接触spi总线,请有经验的大侠们不吝赐教!万分感谢
都这么长的时间怎么连个回复的人都没有,是我提的问题水平太低,大家都不些回复么?20分要白白浪费了饿
你的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
***********************************************************************************
现在可以读写了,只要在总线是实现设备的读写时序,device会自动响应的;
这个code我也有,它是自己实现spi时序的,根本没用kernel带动spi驱动,
感谢你的回答,分数给你了