打印

为什么通过不了正弦波测试?(vs1053) 求解!!

[复制链接]
2702|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cooolsky|  楼主 | 2011-5-6 01:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cooolsky 于 2011-5-6 01:05 编辑

main.rar (1.29 KB) 提供源文件下载.
这里也把代码复制过来.觉得网页里看的累的可以下源文件.

参考了一些别人的程序.基本上思维都是按照资料里写的.不知道哪里不对了.求高人指点~!跪谢!!!!

#include "stm32f10x.h"
void RCC_Configuration(void);
void SPI1_Configuration(void);
void GPIO_Configuration(void);
void Delay(void);
void VS_Soft_Reset(void);
void VS_Write(u8 add,u16 data);
u16 VS_Read(u8 add);
void VS_Soft_Reset(void);
void VS_Test(void);

#define VS_DQ GPIOA,GPIO_Pin_1;
#define VS_XDCS GPIOA,GPIO_Pin_4;
#define VS_RST GPIOA,GPIO_Pin_2;
#define VS_XCS GPIOA,GPIO_Pin_3;

#define VS_REG_MODE 0x00
#define VS_REG_CLOCKF 0x03
#define VS_REG_AUDATA 0x05
#define VS_REG_BASS 0x02
#define VS_REG_VOL 0x0B



int main(void)
{
RCC_Configuration();
SPI1_Configuration();
GPIO_Configuration();
VS_Soft_Reset();

while(1)

{

VS_Test();

}
}

void RCC_Configuration(void)
{

SystemInit();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
}


void GPIO_Configuration(void)
{

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);
}


void SPI1_Configuration(void)
{

/*SPI初始化定义*/

SPI_InitTypeDef SPI_InitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

/*GPIO端口配置 PA6为MISO,浮空输入,PA7为MOSI,复用推挽输出*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,&GPIO_InitStructure);


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

/*SPI1 端口设置*/

SPI_Cmd(SPI1,DISABLE);

SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//SPI设置为全双工

SPI_InitStructure.SPI_Mode=SPI_Mode_Master;//设置为主SPI

SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;

SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;

SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;

SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_4;

SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial=7;

SPI_Init(SPI1,&SPI_InitStructure);

SPI_Cmd(SPI1,ENABLE);
}

void VS_Soft_Reset(void)
{

GPIO_ResetBits(GPIOA,GPIO_Pin_2);//VS_RST=0

Delay();

SPI_I2S_SendData(SPI1,0xff);

GPIO_SetBits(GPIOA,GPIO_Pin_4);//VS_XDCS=1;

GPIO_SetBits(GPIOA,GPIO_Pin_3);//VS_XCS=1;

GPIO_SetBits(GPIOA,GPIO_Pin_2);//VS_RST=1;

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0)//VS_DQ=1;

{

VS_Write(0x00,0x0804);

Delay();

Delay();

}

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0)//VS_DQ=1;

{

VS_Write(0x03,0x9800);

Delay();

VS_Write(0x05,0xbb81);

    Delay();

VS_Write(0x02,0x0055);

Delay();

VS_Write(0x0b,0x2020);


GPIO_ResetBits(GPIOA,GPIO_Pin_4);//VS_XDCS=0;


SPI_I2S_SendData(SPI1,0xff);

SPI_I2S_SendData(SPI1,0xff);

SPI_I2S_SendData(SPI1,0xff);

SPI_I2S_SendData(SPI1,0xff);

}
}

void Delay(void)
{

unsigned long x;

for(x=0;x<0x500;x--);
}

void VS_Write(u8 add,u16 data)
{

while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0);

SPI1->CR1|=5<<3;//64分频

GPIO_SetBits(GPIOA,GPIO_Pin_4);//XDCS=1

GPIO_ResetBits(GPIOA,GPIO_Pin_3);//XCS=0

SPI_I2S_SendData(SPI1,0x02);//Send 0x02 choose write COMMAND

SPI_I2S_SendData(SPI1,add);

SPI_I2S_SendData(SPI1,data>>8);

SPI_I2S_SendData(SPI1,data);

GPIO_SetBits(GPIOA,GPIO_Pin_3);//XCS=1

SPI1->CR1|=2<<3;//high speed
}

u16 VS_Read(u8 add)
{

u16 temp=0;

while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0);

SPI1->CR1|=5<<3;//64分频

GPIO_SetBits(GPIOA,GPIO_Pin_4);//XDCS=1

GPIO_ResetBits(GPIOA,GPIO_Pin_3);//XCS=0

SPI_I2S_SendData(SPI1,0x03);//send read command 0x03

SPI_I2S_SendData(SPI1,add);

temp=SPI_I2S_ReceiveData(SPI1);

temp=temp<<8;

temp+=SPI_I2S_ReceiveData(SPI1);

GPIO_SetBits(GPIOA,GPIO_Pin_3);//XCS=1

SPI1->CR1|=2<<3;//high speed

return temp;
}

void VS_Test(void)
{

VS_Write(0x00,0x0820);

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0)

{

GPIO_ResetBits(GPIOA,GPIO_Pin_4);

GPIO_SetBits(GPIOA,GPIO_Pin_3);

SPI_I2S_SendData(SPI1,0X53);

SPI_I2S_SendData(SPI1,0XEF);

SPI_I2S_SendData(SPI1,0X6E);

SPI_I2S_SendData(SPI1,0X30);

SPI_I2S_SendData(SPI1,0X00);

SPI_I2S_SendData(SPI1,0X00);

SPI_I2S_SendData(SPI1,0X00);

SPI_I2S_SendData(SPI1,0X00);

Delay();

Delay();

Delay();

SPI_I2S_SendData(SPI1,0X45);

SPI_I2S_SendData(SPI1,0X78);

SPI_I2S_SendData(SPI1,0X69);

SPI_I2S_SendData(SPI1,0X74);

SPI_I2S_SendData(SPI1,0X00);

SPI_I2S_SendData(SPI1,0X00);

SPI_I2S_SendData(SPI1,0X00);

SPI_I2S_SendData(SPI1,0X00);

GPIO_SetBits(GPIOA,GPIO_Pin_4);

Delay();

}
}
沙发
fusd| | 2011-12-22 15:37 | 只看该作者
比较深奥……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

27

帖子

1

粉丝