有谁能提供一下STC12A5A60S2单片机硬件SPI驱动ISD1700语音电路的程序
调试了无数次了,还是没反应,用软件模拟SPI已经调通,就是硬件SPI不行,望有调试成功的帮助一下。不胜感激。...
调试了无数次了,还是没反应,用软件模拟SPI已经调通,就是硬件SPI不行,望有调试成功的帮助一下。不胜感激。
展开
展开全部
这是硬件SPI的实现函数
uchar SPI_Write(unsigned char addr,unsigned char dat)
{ uchar temp;
bit t=EA;
EA=0;
SEL=0;
SPDAT=addr|0x80;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
temp=SPDAT;
SPDAT=dat;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
SEL=1;
EA=t;
return temp;
}
unsigned char SPI_Read(unsigned char addr)
{ unsigned char temp;
bit t=EA;
EA=0;
SEL=0;
addr=addr&0x7f;
SPDAT=addr;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
SPDAT=0x00;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
SEL=1;
temp=SPDAT;
EA=t;
return temp;
}
unsigned int SPI_Reads(unsigned char addr)
{ unsigned int temp;
bit t=EA;
EA=0;
SEL=0;
addr=addr&0x7f;
SPDAT=addr;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
temp=SPDAT<<8;
SPDAT=0x00;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
SEL=1;
temp=temp|SPDAT;
EA=t;
return temp;
}
uchar SPI_Write(unsigned char addr,unsigned char dat)
{ uchar temp;
bit t=EA;
EA=0;
SEL=0;
SPDAT=addr|0x80;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
temp=SPDAT;
SPDAT=dat;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
SEL=1;
EA=t;
return temp;
}
unsigned char SPI_Read(unsigned char addr)
{ unsigned char temp;
bit t=EA;
EA=0;
SEL=0;
addr=addr&0x7f;
SPDAT=addr;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
SPDAT=0x00;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
SEL=1;
temp=SPDAT;
EA=t;
return temp;
}
unsigned int SPI_Reads(unsigned char addr)
{ unsigned int temp;
bit t=EA;
EA=0;
SEL=0;
addr=addr&0x7f;
SPDAT=addr;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
temp=SPDAT<<8;
SPDAT=0x00;
while((SPSTAT&0x80)!=0x80);
SPSTAT=0xc0;
SEL=1;
temp=temp|SPDAT;
EA=t;
return temp;
}
更多追问追答
追问
请问这个是驱动ISD1700语音电路的吗,我主要是针对单片机SPI口的寄存器初始化不知道对不对,我针对ISD1700设定的SPTCL寄存器初始值设为0xfc,不知是不是这样。发送数据部分uchar ISD_SendData(uchar BUF_ISD)
{
uchar i,dat=BUF_ISD;
SS=0;
SPDAT=dat;
while(!(SPSTAT&0x80));
SPSTAT=0xc0;
i=SPDAT;
MOSI=0;
追答
ISD1700没用过,我当时做的是AX5051,RF射频模块,就是SPI接口的,我给你提供的就是单片机硬件SPI的通信函数,至于驱动,还得看datasheet阿
小谢
2024-11-18 广告
2024-11-18 广告
作为深圳市金创图电子设备有限公司的工作人员,我推荐您选择JTAG烧录器。JTAG烧录器是一种通用的芯片烧录方法,它通过串行的方式进行烧录,具有速度快、操作简单、价格低廉等优点。JTAG烧录器支持多种芯片类型,包括单片机、PLC、DSP等,可...
点击进入详情页
本回答由小谢提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询