完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
|
|
相关推荐
20个回答
|
|
|
RCC->APB2ENR|=1<<4; //PORTC时钟使能
GPIOC->CRL&=0XFFFF0000; GPIOC->CRL|=0X00003383;//PC0.1.3 推挽 ,DREQC2输入 GPIOC->ODR|=0x000B; //PC0.1.3上拉 |
|
|
|
|
|
#defineVS_DCS_H GPIOC->BSRR=1<<3
#defineVS_DCS_L GPIOC->BRR=1<<3 #defineVS_CS_H GPIOC->BSRR=1<<0 #defineVS_CS_L GPIOC->BRR=1<<0 #defineVS_RST_H GPIOC->BSRR=1<<1 #defineVS_RST_L GPIOC->BRR=1<<1 #defineVS_DREQ (GPIOC->IDR&1<<2) |
|
|
|
|
|
直接用我们的例子呢?
|
|
|
|
|
|
直接用例子很流畅,我在51上实现也很流畅,但参照我在51的程序,修改后,到STM32就不行了,具体现象是这样,初始化时,SPI 256分频,然后播放时,如果是4分频,没声音,8分频和16分频,声音完全是尖锐的噪音,32分频至256分频可以听到音乐,但是播放的慢,而且噪声大。而且修该硬复位的延时,对声音有影响,但均不能做到流畅播放
|
|
|
|
|
|
那你对比下就知道了.一好一坏,剩下就是你自己找问题了.
|
|
|
|
|
|
#define VS_DREQ GPIOA->IDR&1<<12 这样子检测DREQ可以吧? while(VS_DREQ==0);
|
|
|
|
|
|
多检查
|
|
|
|
|
|
重新写了一遍,还是失真啊,悲剧
|
|
|
|
|
|
我开始怀疑楼主之前那个显示图片的程序也有问题了。。。
|
|
|
|
|
|
什么问题
|
|
|
|
|
|
|
|
|
|
|
|
哦,一个是STC12的,一个是STM32的,都是用SPI,都能看到刷屏
|
|
|
|
|
|
顶不顺了,调了一下午,把原子哥的例程删节到只有VS1003的功能,烧进去能播放,然后我照抄主函数和子函数,都是不能播放,原子哥的例程里是不是设置了什么?
|
|
|
|
|
|
#define VS_XDCS_H GPIOA->BSRR=1<<4
#define VS_XDCS_L GPIOA->BRR=1<<4 #define VS_XCS_H GPIOA->BSRR=1<<8 #define VS_XCS_L GPIOA->BRR=1<<8 #define VS_RST_H GPIOA->BSRR=1<<11 #define VS_RST_L GPIOA->BRR=1<<11 #define VS_DQ GPIOA->IDR&1<<12 |
|
|
|
|
|
只有这部分是不同的
|
|
|
|
|
|
int main(void)
{ Stm32_Clock_Init(9);//系统时钟设置 delay_init(72);//延时初始化 SPI_Flash_Init();//SPI FLASH初始化 SD_Init(); //初始化SD卡 VS_Init(); while(1) { u8 n; u16 i; u32 ii; VS_HD_Reset();//硬复位 VS_Soft_Reset(); //软复位VS10XX for(ii=0;ii<50000;ii++) //播放音乐的主循环 { SD_ReadSingleBlock(32299+ii,BUFFER);//读取一个扇区的数据 SPIx_SetSpeed(SPI_SPEED_8);//高速,对VS1003B,最大值不能超过36.864/6Mhz,这里设置为4.5M i=0; do //主播放循环 { if(VS_DQ!=0) // 非暂停 送数据给VS1003 { VS_XDCS=0; for(n=0;n<32;n++) { SPIx_ReadWriteByte(BUFFER[i++]); } VS_XDCS=1; } }while(i<511);//循环发送512个字节 } } } 这个是删节后的函数,原子哥那样设置IO能播放,同样的IO,我那样设置就播放不了 |
|
|
|
|
|
原因找到了,是因为GPIOA->IDR&1<<12不行,请问下原子哥,怎么才能让读IDR代替PAin(12)
|
|
|
|
|
|
软件仿真测试了,这条语句可以啊,不过建议加些括号吧,有时候运算的优先级会搞死人的。
比如这样写,意思才比较明确 GPIOA->IDR& (1<<12) 如果是宏定义,我一般会这样写 ( GPIOA->IDR& (1<<12) ) 另外,如果 pa12脚的状态是 1那么, 那个宏的结果是 (1<<12) 而PAin(12)的结果是1 这个在写程序的时候也需要注意的 |
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4138 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3228 浏览 1 评论
2752 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2181 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
14980 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3086浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1896浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2066浏览 3评论
1979浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2168浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 08:46 , Processed in 1.310211 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6728