完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件部分:
STM32F411E-DISCO套件 microUSB数据线 3.5mm音频口耳机 软件部分: 操作系统WIN10 1909 STM32CubeIDE CS43L22驱动 目的: 在MDK下调试STM32F411E-DISCO套件的CS43L22驱动时,I2C久久不能初始化成功。遂更换思路来验证codec的硬件功能,顺带也了解下ST官方的这个eclipse+GNUC的开发环境。 1,安装ST官网下载的STM32CubeIDE;在生成代码的时候需要下载HAL版本的库。整个安装完成大概需要5-6GB空间。。 2,打开IDE新建项目,找到stm32f411ve,这里借用STM32F411E-DISCO的套件IO配套,也可以选择对应的MCU型号后自己根据需要选择; MCU引脚分布及模块使用情况 此次案例使用到的模块 system view I2C1配置:标准模式、100000,其它保持默认; I2S3配置:16Bits Data on 16 Bits Frame、48KHz、DMA Settings 打开DMA1 Stream5 优先级High; NVIC选择4 bits for pre-emption priority 0 bits for subpriority,同时把USB OTG中断优先级设置比System tick timer低一级,否则延时函数HAL_Delay()会死循环,USB连接电脑会枚举失败; USB中间层PID修改为0x5730 到这里就可以自动生成代码,然后不出意外下载到MCU上连上PC就可以找到AUDIO硬件了: 音量控制器也有显示了 到此,基本上完成了一半的工序。接下来,需要在project里添加CS43L22的驱动和对接4个接口函数; 排除掉编译器的错误后,就可以在PC上实现一个基于STM32F411的USB声卡了;只是稍微简陋了点,而且还有BUG。当然是还有很多优化空间的! 总结: 1,自动生成代码确实降低了实现初始化MCU各个模块的配置时间,对于新入手ST方便了不少;也有缺陷:虽然在IDE设置里配置了生成代码时不覆盖用户代码,但只限于main.c;而且main.c的代码中初始化顺序都是按默认,比如要在所有模块之前初始化UART,但它会始终变成最后初始化的那个样式; 2,STM32F411E-DISCO用来作为声卡确实简陋,目前发现一定时间后声音会出现杂音,大概是I2S3在48KHz有-2.34%的时钟误差。这个受硬件限制,暂时莫办法解决。 3,CS43L22这个codec只能将就听听,DS上写着I2C的频率只到标准模式(100KHz),但用了快速模式(400KHz)也可以工作起来。看来之前的案子不是因为这个原因导致初始化不成功! 4,优势自然是开源了,虽然MDK版本更新到533,但还是要license滴;ARM最新消息也放弃了自家的汇编语言转身拥抱GNU汇编,可见开源仍然是最终的那片开发者福地! |
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4085 浏览 18 评论
1171浏览 3评论
602浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
594浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2331浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 07:05 , Processed in 1.156946 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号