#include <stm32f10x_lib.h> /* STM32F10x Library Definitions */
typedef unsigned char uchar ;
typedef unsigned int uint ;
/* cmx868 Register Address Definitions */
#define GENRESET 0x01
#define GENCTRL_ADDR 0xE0
#define TXMODE_ADDR 0xE1
#define RXMODE_ADDR 0xE2
#define TXDATA_ADDR 0xE3
#define RXDATA_ADDR 0xE5
#define STAT_ADDR 0xE6
#define PROG_ADDR 0xE8
//定义寄存器
uint genctrl;
uint rxmode;
uint stat;
uint txmode;
uchar txdata;
uchar rxdata;
uint prog;
uchar int_func;
#define CDATA1 GPIO_SetBits(GPIOD, GPIO_Pin_0)
#define CDATA0 GPIO_ResetBits(GPIOD, GPIO_Pin_0)
#define SPICLK1 GPIO_SetBits(GPIOD, GPIO_Pin_1)
#define SPICLK0 GPIO_ResetBits(GPIOD, GPIO_Pin_1)
#define RDATA1 GPIO_SetBits(GPIOD, GPIO_Pin_2)
#define RDATA0 GPIO_ResetBits(GPIOD, GPIO_Pin_2)
#define CSN1 GPIO_SetBits(GPIOD, GPIO_Pin_3)
#define CSN0 GPIO_ResetBits(GPIOD, GPIO_Pin_3)
#define IRQ1 GPIO_SetBits(GPIOD, GPIO_Pin_4)
#define IRQ0 GPIO_ResetBits(GPIOD, GPIO_Pin_4)
void write_8bit(uchar come)
{
uchar i,j;
CSN1;
for(j=0;j<100;j++){;}
CSN0; for(j=0;j<100;j++){;}
for(i=0;i<8;i++)
{
if((come&0x80)!=0)
{
CDATA1 ;
}
else
{
CDATA0 ;
}
SPICLK0 ;
for(j=0;j<100;j++) {;}
SPICLK1 ; for(j=0;j<100;j++) {;}
come=come<<1;
}
}
uchar read_8bitoo(void)
{
uchar i;
uchar j;
uchar k;
RDATA1;
j=0;
for(j=0;j<100;j++){;}
CSN0; for(j=0;j<100;j++){;}
for(i=0;i<8;i++)
{
SPICLK0; for(j=0;j<100;j++) {;}
j=j<<1;
k=GPIO_ReadOutputDataBit(GPIOD, GPIO_Pin_2);
if(k)
j^=0x01;
SPICLK1;for(j=0;j<100;j++) {;}
}
return(j);
}
uchar read_8bit(void)
{
uchar i;
uchar j;
uchar k;
RDATA1;
j=0;
CSN1;
for(j=0;j<100;j++){;}
CSN0; for(j=0;j<100;j++){;}
for(i=0;i<8;i++)
{
SPICLK0; for(j=0;j<100;j++) {;}
j=j<<1;
k=GPIO_ReadOutputDataBit(GPIOD, GPIO_Pin_2);
if(k)
j^=0x01;
SPICLK1;for(j=0;j<100;j++) {;}
}
return(j);
}
uchar read_16bit(void)
{ uchar i;
write_8bit(PROG_ADDR) ;
i=read_8bitoo();
i=i<<0x08;
i+=read_8bitoo();
return(i);
}
void write_8bitOO(uchar come)
{
uchar i,j;
for(j=0;j<100;j++){;}
CSN0; for(j=0;j<100;j++){;}
for(i=0;i<8;i++)
{
if((come&0x80)!=0)
{
CDATA1 ;
}
else
{
CDATA0 ;
}
SPICLK0 ;
for(j=0;j<100;j++) {;}
SPICLK1 ; for(j=0;j<100;j++) {;}
come=come<<1;
}
}
void write(uchar addr ,uchar wdata)
{
write_8bit(addr);
write_8bitOO(wdata);
}
void writedata(uchar addr ,uchar wdatal,uchar wdatah)
{
write_8bit(addr) ;
write_8bitOO(wdatal) ;
write_8bitOO(wdatah) ;
}
void init_cmx865(void)
{
int j;
write_8bit(GENRESET);
writedata(GENCTRL_ADDR,0x09,0X00);
for(j=0;j<100000;j++){;}
writedata(TXMODE_ADDR,0X3E,0X1A);
for(j=0;j<100;j++){;}
}
void writedata1(uchar a)
{
int i;
i=a;
write( TXDATA_ADDR ,i);} |