spi_drive.c

来自「基于c的电动机保护程序」· C语言 代码 · 共 40 行

C
40
字号
#include "SPI_Drive.h"

void NOP()
{
	int i;
	for(i=0;i<1;i++);
}

void init_SPI(void)
{
	/* 初始化PD3为输出,作为AD7927的CS脚 */
	*(unsigned long *)PORTD_DIR &= ~0x8;
	*(unsigned long *)PORTD_SEL |= 0x8;
	*(unsigned long *)PORTD_DATA |= 0X8;
	
	/* 配置SPI模块 */
	*(unsigned long *)SPICR |= 0x6f;	//不使能SPI,第一个下降沿有效,16位数据
	*(unsigned long *)SPIBR = 0x0000;		//BaudRateDivisor为4
	
}

/* 返回接收值,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 + =
减小字号Ctrl + -
显示快捷键?