linux下的nrf24l01驱动程序
来源:互联网 发布:返利网是淘宝客吗 编辑:程序博客网 时间:2024/05/24 06:41
文件名:nrf24l01.c
功能:linux下的nrf24l01驱动程序
#include <linux/config.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/miscdevice.h>
#include<linux/devfs_fs_kernel.h>
#include <asm/uaccess.h>
#include <asm/hardware.h>
#include <asm/arch/regs-gpio.h>
typedef unsigned int uint16 ;
typedef unsigned char uint8 ;
//和引脚相关的宏定义
#defineCSN
#defineCSN_OUTP
#defineMOSI
#defineMOSI_OUTP
#defineIRQ
#defineIRQ_INP
#defineMISO
#defineMISO_INP
#defineSCK
#define SCK_OUTP
#defineCE
#defineCE_OUTP
#defineDEVICE_NAME
#define NRF24L01_MAJOR
#defineTxBufSize
uint8
};
//NRF24L01端口定义
#define CE_OUT
#defineCE_UP
#define CE_L
#define CE_H
#define SCK_OUT
#defineSCK_UP
#define SCK_L
#define SCK_H
#define MISO_IN
#defineMISO_UP
#defineMISO_STU
#define IRQ_IN
#defineIRQ_UP
#define IRQ_L
#define IRQ_H
#define MOSI_OUT s3c2410_gpio_cfgpin(MOSI, MOSI_OUTP)//数据线设置为输出
#defineMOSI_UP
#define MOSI_L
#define MOSI_H
#define CSN_OUT
#defineCSN_UP
#define CSN_L
#define CSN_H
//NRF24L01
#defineTX_ADR_WIDTH
#defineRX_ADR_WIDTH
#define TX_PLOAD_WIDTH
#define RX_PLOAD_WIDTH
uint8 const TX_ADDRESS[TX_ADR_WIDTH]={0×34,0×43,0×10,0×10,0×01};
uint8 const RX_ADDRESS[RX_ADR_WIDTH]={0×34,0×43,0×10,0×10,0×01};
//NRF24L01寄存器指令
#defineREAD_REG
#defineWRITE_REG
#defineRD_RX_PLOAD
#defineWR_TX_PLOAD
#defineFLUSH_TX
#defineFLUSH_RX
#defineREUSE_TX_PL
#defineNOP
//SPI(nRF24L01)寄存器地址
#defineCONFIG
#defineEN_AA
#defineEN_RXADDR
#defineSETUP_AW
#defineSETUP_RETR
#defineRF_CH
#defineRF_SETUP
#defineSTATUS
#defineOBSERVE_TX
#defineCD
#defineRX_ADDR_P0
#defineRX_ADDR_P1
#defineRX_ADDR_P2