【EK-RA6E2开发指南】I2C使用

描述

RA6E2有3路硬件I2C,对于应用而言,软件和硬件都是一样的。

1 RT-Thread 的I2C简介

I2C(Inter Integrated Circuit)总线是 PHILIPS 公司开发的一种半双工、双向二线制同步串行总线。I2C 总线传输数据时只需两根信号线,一根是双向数据线 SDA(serial data),另一根是双向时钟线 SCL(serial clock)。

I2C 总线允许同时有多个主设备存在,每个连接到总线上的器件都有唯一的地址,主设备启动数据传输并产生时钟信号,从设备被主设备寻址,同一时刻只允许有一个主设备。如下图所示:

总线

一般情况下 MCU 的 I2C 器件都是作为主机和从机通讯,在 RT-Thread 中将 I2C 主机虚拟为 I2C总线设备,I2C 从机通过 I2C 设备接口和 I2C 总线通讯,相关接口如下所示:

函数描述
rt_device_find()根据I2C总线设备名称查找设备获取设备句柄
rt_i2c_transfer()传输数据

关于I2C更详细的内容,请参看官方手册:

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/i2c/i2c

2 I2C使用实例

I2C使用起来很简单。

1.首先根据 I2C 设备名称查找 I2C 名称,获取设备句柄,然后初始化设备。

2.其次就是与设备进行通信。

2.1 硬件连接

这里使用SCI9,电路图对应如下:

总线

2.2 RA6E2 RTC配置

接下来配置RTC,只需要简单配置就可使用。

  • FSP配置RTC

打开RA Smart Configurator,根据硬件连接,I2C使用的是I2C3,因此在配置界面里面依次打开“Pins->Peripherals->Connectivity:SCI>SCI9”配置SCI模块,选择开发板所用的I2C引脚,这里SCL和SDA分别接的是P110和P109引脚。

总线

[]()[]()[]()Figure 2‑1 I2C引脚设置

接下来就是添加I2C的stack。

总线

[]()[]()[]()Figure 2‑2 添加I2C的stack步骤

接下来需要配置I2C的参数。

总线

[]()[]()[]()Figure 2‑3 I2C参数设置

这里可以设置I2C的参数,我这里设置I2C的变量名、通道以及从机地址,I2C的编号和Channel编号是一一对应的,因此需要设置为9,回调函数依据C语言命名规范任意编译一个就行。

值得注意的是,这里的从机地址是7位,代码中自动左移了。然后让软件自动生成配置代码即可。

本文将使用I2C点亮OELD,值得注意的是OLED接口一般有两种:I2C(4线)和SPI(7线或8线)。笔者这里使用的是I2C9。

接下来就是配置相应的驱动。首先配置软件I2C。

总线

接下来就是配置OLED驱动。笔者这里使用的SSD1306的软件包。

总线

以上参数默认即可,笔者这里还使用了SSD1306的sample。

最后保存即可,然后生成MDK工程。值得注意的是,如果编译提示没有“_ansi.h”文件,删除该头文件即可。

2.3 测试

编译下载,然后在终端输入“ssd1306_TestAll”即可进行测试。

总线

正常情况下,OLED将会点亮。

总线

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分