前言
瑞萨官方FSP(灵活软件配置包)中包含了I2S协议的模块,所以用户可以很方便的使用I2S来管理音频,而不需要自己手动定义。最近在做一些音频解码相关的内容,所以也是需要用到I2S,正好根据之前使用的经验来介绍一些如何使用E2studio配合FSP来为RA MCU配置I2S。
开发准备
本次使用到的开发板是瑞萨官方的EK-RA6M4,大伙如果是从事嵌入式开发的工程师或者在校大学生可以尝试去瑞萨官网申请开发板,还是有机会能申请到的,不过如果没有申请到也没有关系,野火也出了挺多瑞萨的板子,使用野火的板子也可以(官方的板子上有on-board jlink,可以直接连电脑debug,野火的板子好像还需要额外的jlink仿真器),只要确保我们后续使用的I2S的IO有引脚接出来既可。
软件方面使用的是E2studio 2024-10版本配合FSP5.7.0,这些软件都是免费的,可以上官网直接下载,没有任何限制,使用的编译器也是GCC,免费使用。
根据图中选择自己的PC系统既可。
模块配置
安装好e2studio以及FSP插件后,可以直接选择新建RA工程:
之后因为我使用的是官方的EK-RA6M4开发版,所以是可以在新建工程界面直接选择开发板进行开发的:
如果选择了官方开发板,那么FSP里会将板子上一些外设的IO提前定义好,其余没有太大区别,所以如果你使用的是自定义板或者网上买的一些第三方开发板也是没有太大影响的,在这个页面选择custom user board和对应的芯片型号就行。
之后按照提示一直点下一步就新建好工程了,这时候e2studio会自动跳转到FSP配置页面:
之后我们进入"stack"页面,添加I2S模块,在FSP里I2S的模块名为r_ssi:
添加之后点击r_ssi模块对其中的属性进行配置,如下:
并且启用DTC数据传输来对音频数据进行后台传输:
DTC(data transfer control)模块是瑞萨独有的技术,可以粗略的和DMA类比,不过有些许差别,后续可以出个文章来专门介绍DTC,这边大家就把它当作DMA使用既可。
DTC的配置如下:
随后我们还需要添加一个timer来充当WDT的功能检测I2S是否能在指定时间内传输完数据,配置如下:
当配置完I2S和Timer后,点击右上角生成代码,我们就可以进入主函数设计程序了。
代码
首先进入src/hal_entry.c我们的主程序入口,对各个接口进行初始化以及一些全局变量的初始化:
进行完初始化后,在src目录下新建一个文件用于存放I2S数据,audio_data.h:
之后我们返回主函数,进行I2S数据传输,这次我们的RA6M4既当主机也当从机,自己穿数据给自己,目的是确保I2S数据链路都调通,在主函数初始化各个模块之后添加主循环:
并且定义好I2S的回调函数,主要就是在I2S终端中传输一下I2S的状态:
这样我们的例程就算完成了,可以编译调试。
|