VS1053调试过程

工作环境(蓝色粗体字为特别注意内容)
1,硬件环境:VS1053解码芯片、STM32F103C8T6
2, 软件环境:Keil UV5

这两天刚刚放假,闲来无事折腾折腾VS1053,搞了两天终于调通了,在此记录一下,希望能够给迷茫的朋友提供点思路吧,电路图和程序我打包放到文章最后了,需要的朋友可以下载使用,改一下IO口就能工作。

秉着自己动手,丰衣足食的原则,动手设计了STM32最小系统和VS1053的电路图,并且手工做了PCB看看效果。先来看看VS1053的电路图,跟官方推荐的差不多。

板子做好后的效果如下:

一开始连好线,发现耳机一点声音都没有,测量12.288M晶振的两个引脚,发现没有任何波形,于是按压晶振,发现耳机有反应,怀疑是晶振有问题的原因,二话不说,换晶振,换了另外一个晶振之后发现耳机有反应了,发出断断续续的沙沙声,但是没听到滴滴的正弦波测试音。测量XIAL0(pin17)的波形,发现有波形了!

测量XIAL1(pin18)的波形 如下图所示:

波形是我把示波器表笔打到了10倍衰减之后测量得到的,不衰减的话接上表笔一瞬间信号就消失了,应该是表笔影响了测量信号的原因。既然信号出来了,说明晶振工作正常,按理说芯片基本上应该正常工作了。可是为什么只有沙沙声呢?仔细检查引脚,最终发现MISO和MOSI引脚接反了!换过来之后,正弦波的滴滴声终于出来了。。。

贴一下我的测试代码:


/******************** Pang ********************
 * 文件名  :main.c
 * 描述    :STM32F103C8T6 12M测试代码
 * 库版本  :3.5
 * 编译软件:KEIL4
 * 作者    :Pang

 LED- -> PB15

*****************************************************************/
#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "IIC.h"
#include "vs_spi.h"
#include "math.h"
#include "led.h"
#include "vs1053.h"


void disableJTAG()
{
	//开启AFIO 时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
	// 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
	// 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
}

int main()
{
	u16 i = 0;
	SystemInit();		//系统时钟等初始化
	delay_init();	     //延时初始化
	NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	disableJTAG();
	uart_init(115200);	//串口初始化为115200
	LED_Init();
	//I2C_GPIO_Config();
	//SPI_init(256);
	//VS1053初始化

	VS_Init();
	//	VS_Sine_Test();
	VS_Set_All();

	while(1)
	{

		delay_ms(2000);
		i = VS_Ram_Test();
		VS_Sine_Test();
		printf("ram:%x\r\n", i);
		delay_ms(1000);
		
	}

	while(1)
	{
		LED_Flash();
		printf("hello!\r\n");
		delay_ms(2000);
	}
}

但是读器件MODE和RAM的时候,发现VS1053读出来始终是0!测量MISO和MOSI引脚都有信号的。读不到数据但是能够发出正弦波说明MOSI引脚正常,于是把目标锁定在MISO(主机输入从机输出)引脚上。断开MISO引脚,检测STM32的MISO引脚,发现居然有信号!经测量发现该信号竟然和SCK信号一样!原因真是无语,STM32最小系统的MISO引脚和SCK引脚短路了。。。。

问题排除之后Mode和RAM都能够正常读出来了~

顺便提一下,STM32F103的SPI1引脚定义如下:

SCK -> PA5

MISO -> PA6

MOSI -> PA7

另外需要注意一点就是VS1053工作时序是DREQ为芯片工作状态引脚,高电平才处于就绪状态,如果是低电平则不要给芯片发送数据。所以通过测量该引脚的波形也可以判断芯片是否正常工作!所以通过测量该引脚的波形也可以判断芯片是否正常工作!

STM32+VS1053工程文件+电路图

猜你喜欢

转载自blog.csdn.net/pang9998/article/details/86667147