在了解瑞萨RA系列的驱动框架思路后,会发现我们并不需要关心驱动是怎么写的,仅仅需要知道怎么使能对应模块,怎么配置所需要的资源便可快速的开启想要的功能。
芯片I2C资源分配情况
从资源上看,板卡端最终可以使用的I2C接口有两个,一个是P511/P512,另一个是P415/P414。处于方便考虑,这里优先实现P415/P414功能。
配置过程
RTT配置添加
KConfig之前已有添加I2C1配置,但未添加所需的I2C2配置,因此添加该部分配置:
对应的驱动文件drv_i2c.c修改:drv_i2c.c中是直接引用RASC生成的文件,因此不需要在drv_config.h中添加I2C相关头文件。
配置代码
在emu中运行menuconfig,打开I2C配置,由于启明6M5引出的GPT0默认被RTT串口占用,GPT9无对应引脚,因此暂不设置该接口。
从rtt软件仓库中下载at23cxx软件包,并解压至bsp的board目录下:运行scons --target=mdk5,把I2C部分导入工程配置I2C打开新生成的keil工程后运行RASC,增加I2C相关配置生成代码配置修改代码
注释掉掉生成文件r_gpt.c中的代码 #include "r_gpt_cfg.h",这可能是这版RASC的bug,生成时未包括该文件。
/*********************************************************************************************************************** * Includes **********************************************************************************************************************/ #include "r_gpt.h" //#include "r_gpt_cfg.h" /*********************************************************************************************************************** * Macro definitions **********************************************************************************************************************/ /* "GPT" in ASCII, used to determine if channel is open. */ #define GPT_OPEN (0x00475054ULL)
编译固件
结果验证
需预先知道的知识:
从AT24C02C-SSHM-T规格书中可知,该芯片I2C地址为
而野火该部分原理图如下:
因此对应的7位I2C地址为0x50;
由于rtt并未实现命令行的i2c测试命令,因此使用第三方已经写好的at24cxx软件包来测试,毕竟不是测at24cxx的软件逻辑,而是确认硬件是否打通。
\ | / - RT - Thread Operating System / | \ 5.2.0 build Jun 13 2024 23:26:11 2006 - 2024 Copyright by RT-Thread team [I/I2C] I2C bus [i2c2] registered Hello RT-Thread! msh >at24cxx probe i2c2 msh >at24cxx check msh >at24cxx write write ok msh >at24cxx read read at24cxx : WELCOM TO RTT msh >
运行过程讲解:
使用软件at24xx来快速验证I2C接口是否配置成功,其中:
at24cxx probe i2c2 为注册I2C2为at24cxx的指定i2c口(未指定i2c地址是因为此测试程序默认地址为0x50了)
at24cxx check 为检查是否挂载了 at24cxx设备,若未挂载,则打印fail
at24cxx write 为向eeprom写入 "WELCOM TO RTT" 字段,若写入失败,则报错,写入成功,也打印write ok
at24cxx read 为从eeprom中读取50字节的内容并打印,若读取失败,则打印失败,成功,打印读取到的内容
以上结果表明,i2c2配置成功