21.2.瑞萨RA6M5的I2C特性及架构如果我们直接控制RA6M5的两个GPIO引脚,分别作为SCL和SDA,并根据上述信号的时序要求,像控制LED灯一样直接控制引脚的输出(如果接收数据时读取SDA电平),就可以实现I2C通信。同样,如果我们按照USART要求控制引脚,也可以实现USART通信。所以只要遵循协议,就是标准通信。无论你如何实现,无论是ST生产的控制器还是ATMEL生产的存储器,它们都可以按照通信标准进行交互。
由于CPU在直接控制GPIO引脚电平产生通信时序时需要控制每个时刻的引脚状态,因此被称为“软件模拟协议”方法。
相比之下,还有“硬件协议”方法。 RA6M5的I2C片上外设专门负责实现I2C通信协议。只要配置好外设,它就会根据协议要求自动生成通信信号,发送和接收数据并缓存。 CPU只需检测外设的状态并访问数据寄存器即可完成数据的发送和接收。这种由硬件外设处理I2C 协议的方式减少了CPU 的工作量,并使软件设计更加简单。
21.2.1.瑞萨RA6M5的I2C外设简介瑞萨RA6M5 的I2C 外设可用作通信主站和从站。它支持100Kbit/s、400Kbit/s和1Mbit/s速率。支持7位和10位设备地址,支持DMA数据传输,并具有数据校验功能。其I2C外设还支持SMBus2.0协议。 SMBus协议与I2C类似,主要用于笔记本电脑的电池管理。
表1:瑞萨RA6M5的IIC支持频率
21.2.1.1.通讯引脚I2C的所有硬件架构都是基于图左侧的SCL线和SDA线开发的(SMBA线用于SMBUS警告信号,不使用I2C通信)。 RA6M5芯片具有多个I2C外设,它们的I2C通信信号引至不同的GPIO引脚。使用时必须将它们配置到这些指定引脚,请参见表22-1。
关于GPIO引脚的复用功能,请参考《RA6M5GroupUser_sManual》,以此为准。
表221:RA6M5的I2C引脚(整理自 《RA6M5GroupUser_sManual》 )
21.2.2.瑞萨RA6M5的I2C功能框图
注:这里主要介绍的是瑞萨的fsp库的使用,所以这里对寄存器做一些简单的介绍。
21.2.3. 时钟控制逻辑下面将介绍时钟控制流程
21.2.3.1. IIC起始信号与重启信号当ICCR2 中的RS 位设置为1 时,IIC 发出重启条件请求。当ICCR2 的BBSY 标志位为1(总线忙状态)且ICCR2 的MST 位为1(主模式)时,IIC 发出重启条件。发出重启条件:
释放SDAn 线。
确保ICBRL 中设置的SCLn 线的低电平周期已经过去。
释放SCLn 线(从低到高)。
检测SCLn线上的高电平并确保ICBRL中设置的时间和重启条件设置时间已经过去。
将SDAn线拉低(从高电平拉到低电平)。
确保ICBRH 中设置的时间和重启条件在此期间得到维持。
将SCLn 线驱动为低电平(从高到低)。
检测到SCLn 线上的低电平可确保ICBRL 中设置的SCLn 线上的低电平周期已经过去
21.2.3.2. IIC循环发送初始化IIC。
读取ICCR2 中的BBSY 标志,检查总线是否打开,然后将ICCR2 中的ST 位设置为1(请求启动条件)。 IIC收到请求后,发出启动条件。同时,BBSY 位和START 被设置为1,ST 位自动设置为0。如果检测到启动条件,且当ST 位为1 时,SDA 输出状态的内部电平与SDAn 线上的电平匹配,则IIC 认为启动条件已成功发出,因为ST 位已成功完成请求。 ICCR2 的MST 和TRS 位自动设置为1,IIC 处于主发送模式。当TRS 位设置为1 时,ICSR2 中的TDRE 标志也自动设置为1。
检查ICSR2 中的TDRE 标志是否为1,然后将传输值(从机地址和R/W# 位)写入ICDRT。发送数据写入ICDRT后,TDRE标志自动设置为0。数据从ICDRT发送到ICDRS后,TDRE标志再次设置为1。该字节包含从机地址,当发送R/W# 位时,TRS 位的值将根据发送的R/W# 位的值自动更新,选择主机发送或主机接收模式。如果R/W# 为0,则IIC 继续主传输模式。如果此时ICSR2.NACKF 标志为1,则表示从设备无法识别该地址,或者存在通信错误,向ICCR2.SP 位写入1 发出停止条件。如果要以10位地址格式传输数据,首先将11110b和从机地址的高两位以及W写入ICDRT作为第一个地址传输。然后该地址的低8 位将被写入ICDRT 作为第二次地址传输。
确认ICSR2的TDRE标志位为1后,将发送数据写入ICDRT寄存器。 IIC 自动将SCLn 线保持为低电平,直到数据准备好传输、发出重启条件或发出停止条件。
将待发送的数据字节全部写入ICDRT寄存器后,等待ICSR2中的TEND标志位的值恢复为1。确认ICSR2的START标志位为1后,将ICSR2的START标志位设置为0。
将ICCR2 中的RS 位设置为1(重新启动条件问题请求)。收到请求后,IIC 发出重启条件。
检查ICSR2 中的START 标志位为1 后,将传输值(从机地址和R/W# 位)写入ICDRT。
21.3. EEPROM简介EEPROM是断电后不丢失数据的存储器。常用于存储一些配置信息,以便系统再次上电时可以加载。 EEPROM芯片最常用的通信方式是I^2^C协议。本节以EEPROM读写实验为例,讲解如何使用RA6M5的I^2^C。实验中,RA6M5的I2C外设采用主机模式,分别作为主发送器和主接收器。通过查询事件来保证正常通信。
本实验板中EEPROM芯片(型号:AT24C02)的SCL和SDA引脚连接到Renesas RA6M5的相应I2C引脚。它们与上拉电阻一起形成I2C 通信总线。它们通过I2C 总线进行交互。 EEPROM芯片的设备地址共有7位,其中高4位固定为:1010b,低3位由A0/A1/A2信号线的电平决定,见图22_12。图中的R/W是读写方向位,与地址无关。
图2212 EEPROM 设备地址(摘自《AT24C02》 规格书)
根据我们这里的连接,A0/A1/A2都是0,所以EEPROM的7位设备地址是:1010 000b,也就是0x50。由于在I2C通信中,地址和读写方向往往连接在一起组成一个8位数字,而当R/W位为0时,表示写方向,因此加上7位地址,其值为“0xA0”,通常称为I2C设备的“写地址”;当R/W位为1时,表示读方向,加上7位地址后,值为“0xA1”,也就是常说的“读地址”。
EEPROM芯片中还有一个WP引脚,具有写保护功能。当该引脚电平为高电平时,禁止写入数据。当该引脚为低电平时,可以写入数据。我们直接将其接地,不使用写保护功能。
有关EEPROM 的更多信息,请参阅其数据表《AT24C02》。如果您使用的实验板的EEPROM型号、设备地址或控制引脚不同,您只需根据我们的项目进行修改即可。程序的控制原理是一样的。
标题:瑞萨RA系列FSP库开发实战指南之瑞萨RA6M5的I2C特性及架构
链接:https://yqqlyw.com/news/sypc/71136.html
版权:文章转载自网络,如有侵权,请联系删除!