quartus编译错误不支持芯片_mm32芯片使用心得(二)音频播放程序移植

本文介绍了在mm32芯片上移植音频播放程序时遇到的问题及解决过程,包括SPI通信、DAC引脚配置、代码移植、编译链接错误等。在解决SPI与DAC引脚冲突、编译空间不足等问题后,成功完成了程序移植,但还可能存在兼容性问题,需要进一步验证。
摘要由CSDN通过智能技术生成

调通SPI通信之后,并将所需要的音频文件静态的写入到W25Q80DV的flash中后,接下来要做的主要工作就是将音频文件通过mm32芯片播放出来。

主要工作就是将W25Q80DV中的音频文件读取出来,并且储存到mm32的内存当中,再通过DAC将音频文件通过mm32引脚输出。

首先就是将所对应的引脚进行初始化,设置成模拟输入的形式。这里遇到了第一个问题,由于选用的mm32芯片的型号引脚数量有限,所以导致SPI的引脚与DAC引脚功能冲突。

6892c7947209b0dd059476b8f19f0715.png

这个并不难解决,所有的I/O口都可以模拟各种引脚的功能,写好对应的代码即可。我从最简单的引脚入手,即改变片选信号的功能,直接用GPIO引脚置高,来代替片选信号的高。低则同样设置。那么PA4引脚就实现了DAC的功能。

下一步就是对音频程序的移植,音频程序是运行在STM32芯片上的,不能直接下载到mm32芯片上。所以,需要对所需要的功能进行移植。将代码拷贝过来之后,有大量错误。找到所对应的错误,发现其函数需要所依赖其他文件,将其他文件以同样的结构移植进来,并且在文件中包含头文件。但是此处再次遇到了问题。发现包含文件时,找不到此文件的目录。从网上得知,在keil中需要在配置中添加所对应的路径

3edac2853b947360be6c1ffc161ec0d1.png

这样,慢慢的进行修改,直至没有错误。但是在编译没有错误之后,又产生了大量的连接错误:No space in execution regions with .ANY selector... ,提示空间不足,那么可以修改所对应的的空间大小,也可以改变其编译等级

59fb6ce868400bdc9ef70302c99757ba.png
a98a29de80fa4e1b8f55c45d988a1521.png

这样基本就解决了编译以及连接的错误,接下来就是将从FLASH中读取数据的数组移到主函数当中来。将其以外部变量的形式读取到函数当中,再就是将其在内存中的地址传给移植过来的函数即可。接下来的问题是所定义的数组为无符号char型,而传过去的地址是无符号int型,直接取地址赋值给子函数不行,因为子函数接收时就不是以指针类型进行接收的。所以这个时候会产生类型不匹配的问题

我的第一个想法就是,将其进行强制类型转换,然后将其传下去,但是此时传下去的是数据,并不是所需要的地址。第二个想法就是将其数组中的值重新赋值给另一个无符号int型的数组,发现赋值出来的数据全是0。第三个想法就是(uint32_t)&rxtmpdata,将数组取地址之后再强制类型转换。发现可以将数组地址传到子函数当中。至此,整个程序移植基本就结束了,接下来就要验证一下是否有声音了,因为考虑到兼容性的问题,其他很多方面还是可能存在问题的。

71b66bd8caa6cdb65adb28fd86be285f.png

从此次进行开发来看,主要问题都是一个很小的问题就会导致整个项目无法向下进行。反而是看起来很复杂的的问题一步步照着错误提示去改,很快就可以修改完成。就像那些没有错误,感觉逻辑也说得通,但就是实现不了其功能的问题。需要耗费很大的精力去查阅文献,并且去慢慢的通过逻辑分析排除问题,这样耗费的时间较长。

a5b62f469142f9885185fa4ccca40132.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值