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

📄 spidriver.c

📁 uboot底层驱动
💻 C
字号:
#include "hardware_reg.h"
#define SPI_CS_H()	do{*(unsigned long *)PORTD_DATA |= 0X8;}while(0);
#define SPI_CS_L()	do{*(unsigned long *)PORTD_DATA &= ~0X8;}while(0);
void NOP()
{
	int i;
	for(i=0;i<1;i++);
}

void init_SPI(void)
{
	/* 3?ê??ˉPD3?aê?3?£?×÷?aAD7927μ?CS?? */
	*(unsigned long *)PORTD_DIR &= ~0x8;
	*(unsigned long *)PORTD_SEL |= 0x8;
	*(unsigned long *)PORTD_DATA |= 0X8;
	
	/* ????SPI?£?é */
	*(unsigned long *)SPICR |= 0x6f;	//2?ê1?üSPI,μúò??????μ??óDD§£?16??êy?Y
	*(unsigned long *)SPIBR = 0x0000;		//BaudRateDivisor?a4
	
}

/* ·μ???óê??μ£?command?üá? */
unsigned short SPI_Transfer(unsigned short command)
{
	unsigned short data, i;

    /* set the command through the spi that let AD exchange data */     
	*(unsigned long *)SPITR = command;
	SPI_CS_L();
	NOP();
	*(unsigned long *)SPICR |= 0x80;
	NOP();
	while(!(( (*(volatile unsigned long *)SPISR)) & 0x01));// wait for the data from spi
	NOP();
	SPI_CS_H();
	NOP();
	data = *(unsigned long *)SPIRR; 

	return data;
}

⌨️ 快捷键说明

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