ok6410下nrf24l01驱动实现

最近在项目中需要51和ARM之间进行通信,采用的是无线模块24L01,使用的ARM开发板是6410。
开发时参考了一些2440的驱动,但是绝大多数2440的驱动好像有点小问题,以下是我自己编写的驱动,可以实现双向通信。
和2440的主要区别的代码如下:


......


/**pin configure**/


#define CE_OUT write_con(0x0f,0x01)


#define CE_UP write_pud(0x03,0x02)


#define CE_L write_dat(0x01,0)
#define CE_H write_dat(0x01,1)






#define SCK_OUT write_con(0x0f<<8,0x01<<8)


#define SCK_UP write_pud(0x03<<4,0x02<<4)


#define SCK_L write_dat(0x01<<2,0<<2)


#define SCK_H write_dat(0x01<<2,1<<2)






#define MISO_IN write_con(0x0f<<16,0x00<<16)


#define MISO_UP write_pud(0x03<<8,0x02<<8)


#define MISO_STU  get_MISO()




#define IRQ_IN write_con(0x0f<<20,0x00<<20)


#define IRQ_UP write_pud(0x03<<10,0x02<<10)


#define IRQ_L write_dat(0x01<<5,0<<5)


#define IRQ_H write_dat(0x01<<5,1<<5)






#define MOSI_OUT write_con(0x0f<<12,0x01<<12)


#define MOSI_UP write_pud(0x03<<6,0x02<<6)


#define MOSI_L write_dat(0x01<<3,0<<3)


#define MOSI_H write_dat(0x01<<3,1<<3)






#define CSN_OUT write_con(0x0f<<4,0x01<<4)


#define CSN_UP write_pud(0x03<<2,0x02<<2)


#define CSN_L write_dat(0x01<<1,0<<1)


#define CSN_H write_dat(0x01<<1,1<<1)


/*pin & nrf*/




/*******************
CE-GPL0


CSN-GPL1


SCK-GPL2


MOSI-GPL3


MISO-GPL4


IRQ-GPL5


********************/


void write_con(unsigned int mask,unsigned int con)
{


unsigned int tmp;


tmp=readl(S3C64XX_GPLCON);


tmp=((tmp&(~mask))|con);


writel(tmp,S3C64XX_GPLCON);


}
void write_dat(unsigned int mask,unsigned int dat)
{
unsigned int tmp;


tmp=readl(S3C64XX_GPLDAT);


tmp=((tmp&(~mask))|dat);


writel(tmp,S3C64XX_GPLDAT);


}


void write_pud(unsigned int mask,unsigned int pud)
{
unsigned int tmp;


tmp=readl(S3C64XX_GPLPUD);
tmp=((tmp&(~mask))|pud);
writel(tmp,S3C64XX_GPLPUD);
}


unsigned int get_MISO(void)
{
unsigned int tmp=0;


tmp=readl(S3C64XX_GPLDAT);


if(tmp&(1<<4))
return 1;


else 
return 0;


}


......


代码下载地址:

http://download.csdn.net/detail/u010211018/5820941


由于时间比较匆忙,格式有点不人性化,希望大家谅解。
如需转载,希望能注明出处。
非常感谢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值