📄 spidriver.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 + -