📄 spi.txt
字号:
发信人: ivyzengmin (Ivy), 信区: DSPTech
标 题: Re: 哪位用过f2812的spi口,能否给个例子?
发信站: BBS 水木清华站 (Thu Jul 22 13:36:05 2004), 站内
一个实时时钟操作。
#include "DSP281x_Device.h"
extern struct RTC_TIME RtcTime;
void spi_xmit(int a)
{
SpiaRegs.SPITXBUF =a;
}
void InitSpi(void)
{
unsigned int i;
SpiaRegs.SPICCR.bit.SPISWRESET = 0;
SpiaRegs.SPIFFTX.all=0xE040;
SpiaRegs.SPIFFRX.all=0x204F;
SpiaRegs.SPIFFCT.all=0x0;
SpiaRegs.SPICCR.bit.CLKPOLARITY = 0; // rising edge
SpiaRegs.SPICCR.bit.SPICHAR = 7; // 8 char bits
SpiaRegs.SPICTL.all =0x0006;
SpiaRegs.SPIBRR = 5;
SpiaRegs.SPICCR.bit.SPISWRESET = 1;
for(i= 0;i<10;i++){};
return;
}
unsigned int RtcByte(unsigned int addr,unsigned int data)
{
//字节操作,读/写靠addr的D7位区分
unsigned int i;
CSRTC=1;
spi_xmit(addr<<8);
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { };
i = SpiaRegs.SPIRXBUF;
spi_xmit(data<<8);
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { };
i = SpiaRegs.SPIRXBUF;
data = i&0xFF;
CSRTC=0;
return data;
}
void InitRtc(void)
{
//2030/12/31/23/59/00
RtcByte(0x8F,0x00);//WP=0
RtcByte(0x80,0x00);//sec
RtcByte(0x81,0x59);//min
RtcByte(0x82,0x61);//hour
RtcByte(0x83,0x03);//day
RtcByte(0x84,0x31);//date
RtcByte(0x85,0x12);//month
RtcByte(0x86,0x30);//year
RtcByte(0x8F,0x40);//WP=1
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -