
STM32
shaynerain
欢迎交流shaynerain@163邮箱
展开
-
DAC输出音乐2-解决pu pu 声
前言上篇:DAC输出音乐https://blog.youkuaiyun.com/shaynerain/article/details/108052191相关文章:WAV文件解析https://blog.youkuaiyun.com/shaynerain/article/details/108052144上篇中的双缓冲输出后大部分歌曲都会有pupu声,经过检查是在读取音乐时读取多了一部分其他信息。Main正常的音频文件前后都会有0x00来缓冲,如图所示,但是导出的wav文件在data数据后还有一些附加信息,.原创 2020-09-01 22:35:44 · 463 阅读 · 0 评论 -
DAC输出音乐
简介单片机可使用自带DAC输出模拟信号,借此可输出音乐,过程中把握好定时器频率和缓存数据及时刷新。另外在网上看到有使用定时器直接触发DAC DMA发送的,我经过测试发现发送的是瞬间完成而不是触发一次发送一次,我的测试没有通过本篇和WAV解析篇联系极大https://shimo.im/docs/WCrx6thYcXkQ68jkDAC配置直接开启ADC不需要其他额外配置,如果单声道可以只开一个,立体声就开两个定时器配置定时器配置中断,和音乐源的采样频率相同,如果是立体声,则频率是原创 2020-08-17 11:21:54 · 2138 阅读 · 2 评论 -
WAV文件解析
下载csdn:https://download.youkuaiyun.com/download/shaynerain/12712663设置的0积分下载,后面可能会被系统改简介WAV音频格式之一,属于无损型的,主要内容就是PCM的数据。前面文件前面44字节(或46)存放信息,信息内容非常重要,下面会详细讲,解析也主要是这段的解析。格式使用AU2020导出wav文件,前面44字节存储的信息,其他没有测试。分为四块RIFF块、fmt块、fact块(压缩格式才有,一般没有)data块例子:原创 2020-08-17 11:20:13 · 1225 阅读 · 0 评论 -
CS4344驱动
简介音频PCM输出相关文章最多的就是WM8978,这里说同个公司推出的更低成本的方案,CS4344。该芯片只有输出没有输入,不需要配置任何东西,内部自动检测直接使用。使用CS4344使用iis传输数据,iis相关定义可查看https://shimo.im/docs/6ghVVQPXyTrVyKvv,正常接引脚后,可直接使用,可以带动耳机,如果接喇叭需要功放。控制引脚 MCU CS4344 I2S_SD:串行数据 S原创 2020-08-17 11:17:05 · 4666 阅读 · 1 评论 -
IIS的使用
简介iis接口主要用来传输音频信号,详细定义可以查看百度百科,其中需要理解左右声道控制、时钟、等,下面逐个描述接口I2S_SD:串行数据 I2S_ext_SD:为支持全双工使用扩展SD进行接收数据 I2S_CK:串行时钟线 I2S_WS:声道切换 I2S_MCK:主时钟输出IIS模式分为四种,根据需求选择合适的模式:全双工主机模式、全双工从机模式、半双工主机模式、半双工从即模式顾名思义都能理解,主机模式下还可选择是否输出时钟通讯协议飞利浦模式、左对齐、右对齐、长数据原创 2020-08-17 11:15:26 · 3135 阅读 · 0 评论 -
VS10xx驱动
下载csdn:https://download.youkuaiyun.com/download/shaynerain/12712576简介mp3解码芯片vs1053驱动,vs1003同样适用,前者带麦克风后者不带。个人觉得这两个芯片还是贵,如果存储介质空间大的话最好还是使用wav文件播放声音,使用DAC或者PCM解码器等,都会比这个便宜SPI配置SPI模式3,速度需要配置两个速度,高速和低速,配置的时候使用低速,播放音乐时使用高速,在驱动文件中可以查看到 移植1、移植主要修改vs10xx.h原创 2020-08-17 11:11:05 · 511 阅读 · 0 评论 -
W25QXX驱动
下载设置的0积分,如果被系统修改可联系我发你csdn:https://download.youkuaiyun.com/download/shaynerain/12710107简介w25qxx多少多少M,指的是bit,需要除以8才是byte,由于容量小,可擦除一次要4k,不灵活,所以不再使用,此处记录使用过程及驱动SPI设置我比较喜欢支持多高就开多高,天下武功唯快不破,模式0,18M,Cube配置如下移植修改一共三个文件w25qxx.c:主要程序,读写擦,初始化w25qxx.h原创 2020-08-17 11:09:31 · 896 阅读 · 0 评论 -
SDCard驱动(SPI)
下载移植正点原子的,修改成Cube库使用https://download.youkuaiyun.com/download/shaynerain/12710346简介SDCard主要协议可参考https://shimo.im/docs/pKhdkrHPYyHWRhC3,比较重要的是在SD卡写入的时候是比较慢的,如果和读同一个速度会导致SD卡内部缓存没及时释放,导致无法正常写入,这个时候如果是文件系统在写文件结尾或者开头就极有可能文件系统损坏、或文件损坏;购买卡时可查看读写速度,在我整理的协议中有简单的原创 2020-08-17 11:07:04 · 541 阅读 · 0 评论 -
STM32 光栅编码器Demo
环境win10、MDK5、Cube、STM32F071CBTx工程下载GitHub:https://github.com/Shaynerain/STM32Capture优快云:https://download.youkuaiyun.com/download/shaynerain/12709976Cube配置1、首先正常设置RCC时钟等(48M)2、TIM2设置编码器模式3、设置TIM2参数,Counter Period 可根据需要设置成对应编码器线数来设置此处直接最大值,Encod原创 2020-08-17 11:05:06 · 1234 阅读 · 0 评论 -
STM32比较器的使用
前言首先芯片需要使用带有比较器的型号,有些是没有带比较器的环境STM32F071CBT6STM32CUBEMXMDK5步骤1、使用Cube新建工程,选择相应芯片2、设置时钟等基础设置3、开启COMP1设置参数参数解释结合框图更容易明白Input+:信号输入Input-:比较信号,把输入的信号和该信号相比较如果大于则1小于则0,可以配置取反Speed/Power Mode:速度,越高毛刺影响约大Interrupt Trigger M.原创 2020-08-17 11:02:00 · 11143 阅读 · 1 评论 -
STM32 HAL库模拟SPI
由于SPI口不够,所以使用模拟SPI,程序较为简单,使用的SPI模式0,在过程中,移植无法通讯,使用逻辑分析仪后发现时钟线弄错一个时钟,现在没问题。#define SSD1306_SOFT_SPI_MOSI_PORT OLED_DATA_GPIO_Port#define SSD1306_SOFT_SPI_MOSI_PIN OLED_DATA_Pin#define SSD1306_SOFT_SPI_MISO_PORT OLED_DATA_GPIO_Port#define SSD.原创 2020-08-17 10:59:19 · 2799 阅读 · 0 评论 -
STM32 + FreeRTOS 的一些理解
中断管理问题FreeRTOS的中断管理是可配置的,有专门的寄存器用来配置哪些中断是可被管理,那些是不可被管理,该寄存器设置阈值,小于阈值不被管理,大于阈值被管理,好处在于某些紧急中断不应该被管理,应该打断系统调度进行及时响应,并且ISR中不能出现系统相关函数时基问题对于HAL、OS都需要时基HAL时基用来管理HAL API,提供与系统无关的延时、超时等操作;OS时基是基础,且强制是systick,系统时钟源如果使用同一个则会出现,如果在终端服务函数中调用了HAL_Delay().原创 2020-07-03 18:11:14 · 935 阅读 · 0 评论 -
Fatfs+HAL库的使用
环境FatFs R0.11 STM32CubeMX 5.6.1 STM32F103C8T6个人推荐配置选择使用TINY模式可以节省内存,具体其他配置可查看配置详解完善相关函数生成代码后需要完善的函数有:初始化、读、写、状态、查询打开user_diskio.c文件进行补充USER_initialize函数初始化,加入存储设备的初始化函数USER_status状态函数,建议直接返回RES_OKUSER_read读函数,加入存储设备读取函数USER_wri原创 2020-07-03 18:07:16 · 1776 阅读 · 0 评论 -
Fatfs Cube配置详解
环境FatFs R0.11 STM32CubeMX 5.6.1 STM32F103C8T6官方配置文档http://elm-chan.org/fsw/ff/doc/config.html配置选项功能配置FF_FS_READONLY读/写(0)或只读(1)。只读配置还删除了编写API函数f_write,f_sync,f_unlink,f_mkdir,f_chmod,f_rename,f_truncate,f_getfree和可选的编写函数。FF_FS_MINIMIZE此选原创 2020-07-03 18:04:50 · 2899 阅读 · 0 评论 -
STM32驱动AD7190
这篇介绍的时高精度、速度AD芯片AD7190的驱动,针对STM32,并且使用的时HAL库,改成其他库也很容易,只需要把相关通讯部分改了就行。我在上网找到的中文数据手册:https://shaynerain.com/shaynerain/file/AD7190_cn.pdfSPI设置,首先看时序图 时序图中已经包含了很多信息,所以SPI配置如下,其中时钟最高为5M,在数据...原创 2018-12-09 12:10:22 · 7279 阅读 · 5 评论 -
C语言&单片机不定参数个数的函数定义
在学习使用C语言的时候都会告知main函数是可以接入多个参数的,那么问题来了,不定参数个数的函数如何定义的呢,它是否可以在单片机中使用呢定义和使用//首先引用#include <stdarg.h>//定义,count是参数个数需要传入具体的参数,可循环判断取多少个值是结尾void move(int count,...){ int value1...原创 2020-03-25 00:14:11 · 977 阅读 · 0 评论 -
MPU6050配置中断读取数据
MPU6050相关寄存器写满数据后产生数据中断,主机检测外部中断用于读取数据,如此节省CPU资源void MPU6050_Init(void){ int i = 0, j = 0; //加入中断初始化 EXIT_B5_Init(); //在初始化之前要延时一段时间,若没有延时,则断电后再上电数据可能会出错 //没试...原创 2018-11-27 21:48:35 · 9077 阅读 · 4 评论