python显示“pa安装完成无法初始化化设备prn”


1、时钟选择:采用外部晶振
2、I2S配置:半双工只有音频播放,没有音频采集;采用48K采样率I2S标准
3、DMA配置:I2S采用DMA进行发送数据,16bit数据宽度
5、时钟配置:外部晶振位8M
6、项目配置:注意堆栈大小设置如果太小,导致程序运行异常会电脑识别USB失败的现象
CubeMX只是生成了基础框架,在usbd_audio_if.c文件里提供好了usb audio的上层接口函数但函数里面都是空的,需要自己添加代码实现音频数据的播放这里我们是采用DMA把音频数据发送到I2S接口,而I2S和DMA的功能函数已经由CubeMX生成好叻我们直接调用即可。
1、把音频数据通过DMA发送到I2S
usbd_audio_if.c代码里面我们唯一需要关心的就是AUDIO_AudioCmd_FS()函数它在收到电脑发过来的音频数据时被调用,在這个函数里我们要把音频数据通过DMA发送给I2S需要增加如下两行代码
2、DMA完成数据发送后,处理回调
我们向I2S注册两个回调函数一个是数据发送到一半时的回调,一个是数据完全发送后的回调首先我们要先在stm32f4xx_hal_conf.h头文件里打开注册回调的宏
 

然后在main.c里面对I2S初始化时进行注册
 
 

  
 
 

如果硬件沒有什么问题的话,下载后把设备连接到电脑就可以正常识别的音频设备了
用bus hound可以看到设备的枚举过程
把电脑的音频播放设备切换成自巳的设备
可以看到已经有音频数据发送到设备了
1、堆栈设置的太小,导致USB识别失败
2、CubeMX生成的项目代码默认的编译优化等级为LEVEL2在USB进行get_cur获取配置时,程序异常进入HardFault,导致USB识别失败暂时先把优化等级设置成0
3、硬件一开始采用杜邦线连接,播放的声音失真是由于接触不良导致信号传输不完整,最好采用焊接方式连接
4、间隔4秒左右,声音出现一点杂音通过调试信息输出发现,声音正常时每次的play size为7680字节,當出现7676时声音就有杂音,目前这个问题还不知道是什么原因

我要回帖

更多关于 无法初始化设备prn 的文章

 

随机推荐