⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rrw.c

📁 pic18F4620通过SPI口读写cc2420寄存器
💻 C
字号:
#include <p18f4620.h>
#include <spi.h>
#include <usart.h>
#include "cc2420.h"
#include <delays.h>
#define CC2420_CS_SET PORTCbits.RC0 = 0;
#define CC2420_CS_UNSET PORTCbits.RC0 = 1;

extern void Init(void);
extern void Write_register(char register_addr , unsigned int register_value);
extern void Read_register(char register_addr);
extern void Trans_data(unsigned char a);
extern void Write_Command(char addr);
extern unsigned char SPIGet(void);
extern void CC2420_Reset(void);
extern void Init_IO(void);

void main(void)
{
	unsigned char i;
	unsigned char register_addrdess;
	CC2420_Reset();
	Init();
	for(i = 0x00; i <= 0x30 ;i ++)
	{
		Trans_data('*');
		Trans_data(i);
		register_addrdess = i ;
		Read_register(register_addrdess);
	}
   	
	for(;;);
}

void Init(void)
{	
	TRISA = 0;	
	PORTA = 0;
	TRISCbits.TRISC2 = 0;					//output: RESETn			
	PORTCbits.RC2 = 1; 						//RESETn initially set high (CC2420)
	ADCON0 = 0x1C; 							//turn off analog input
	TRISBbits.TRISB0 = 1; 					//input: FIFO (CC2420)
	TRISBbits.TRISB1 = 1; 					//input: CCA (CC2420)
	TRISBbits.TRISB2 = 1; 					//input: SFD (CC2420)
	TRISBbits.TRISB3 = 1; 					//input: FIFOP (CC2420)
	TRISCbits.TRISC0 = 0; 					// output: CSn
	PORTCbits.RC0 = 1; 						//CSn initially set high (CC2420)

	OpenSPI(SPI_FOSC_4,MODE_00,SMPMID);		
	OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE &
			  USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,25 );
}


void Write_register(char register_addr , unsigned int register_value)
{	
	CC2420_CS_SET
	WriteSPI(0x00 | register_addr);
	WriteSPI((register_value & 0xFF00) >> 8);
	WriteSPI(register_value & 0x00FF);
	CC2420_CS_UNSET
	
}

void Read_register( char register_addr)
{
	unsigned int value_high = 0 , value_low = 0;

	CC2420_CS_SET
	WriteSPI(register_addr | 0x40);
	SSPBUF = 0;
	while(!SSPSTATbits.BF);
	value_high = SSPBUF;
	SSPBUF = 0;
	Trans_data(value_high);
	while(!SSPSTATbits.BF);
	value_low = SSPBUF;
	Trans_data(value_low);
	CC2420_CS_UNSET

	
}

void Trans_data(unsigned char a)
{
	while(BusyUSART());
	WriteUSART(a);
}

void Write_Command(char addr)
{
	CC2420_CS_SET
	WriteSPI(addr);
	CC2420_CS_UNSET
}
 

unsigned char SPIGet(void)
{
	char a;
    CC2420_CS_SET
    WriteSPI(0x00);
	while(!SSPSTATbits.BF);
	a = SSPBUF;
    CC2420_CS_UNSET
    return a;
}

void CC2420_Reset(void)
{
	int i;
	PORTCbits.RC2 = 0; //RESETn set high
	for(i=0;i<30000;i++);
	PORTCbits.RC2 = 1; //RESETn set high
	for(i=0;i<30000;i++);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -