【经验】如何使用雅特力32位MCU AT32F425的I2C接口?
I2C接口是由数据线SDA和时钟线SCL构成,在标准模式下通信速度可达到100kHz,快速模式下则可以达到400kHz,增强快速模式可达到1MHz。一帧数据传输从开始信号开始,在结束信号后停止,在收到开始信号后总线被认为是繁忙的,当收到结束信号后,总线被认为再次空闲。I2C接口具有主机和从机模式、多主机功能、可编程建立和保持时间、时钟延展功能、DMA存取数据、支持SMBus 2.0协议等特点。
I2C接口通信
主机通信流程
主机通信初始化
1. 主机时钟初始化在启动外设(I2CEN)之前,必须先设置I2Cx_CLKCTRL寄存器的各个位用以配置I2C主时钟。
DIV[7:0]:I2C时钟分频;
SDAD[3:0]:数据保持时间(tHD;DAT)
SCLD[3:0]:数据建立时间(tSU;DAT)
SCLH[7:0]:SCL高电平时间
SCLL[7:0]:SCL低电平时间
该寄存器的配置可以使用Artery_I2C_Timing_Configuration时钟配置工具计算,见第三章节。低电平控制:当检测到SCL总线为低电平时,内部SCLL计数器开始计数,当计数值达到SCLL值时,释放SCL线,SCL线变为高电平。
高电平控制:当检测到SCL总线为高电平时,内部SCLH计数器开始计数,当计数值达到SCLH值时,拉低SCL线,SCL线变为低电平,当在高电平期间,如果被外部总线拉低,那么内部SCLH计数器停止计数,并开始低电平计数,这为时钟同步提供了条件。
2. 主机通信初始化
在启动通讯前须先设定I2C_CTRL2寄存器中的几项参数:
1) 设置传输字节数
≤255字节
配置I2C_CTRL2的RLDEN=0,关闭重载模式
配置I2C_CTRL2的CNT[7:0]=N
>255字节
配置I2C_CTRL2的RLDEN=1,使能重载模式
配置I2C_CTRL2的CNT[7:0]=255
剩余传输字节数N=N-255
2) 设置传输结束模式
ASTOPEN=0:软件结束模式,当数据传输完成后,I2C_STS的TDC标志置1,软件设置GENSTOP=1或者GENSTART=1,发送STOP条件或者START条件。
ASTOPEN=1:自动结束模式,当数据传输完成后,自动发送STOP条件。
3) 设置从机地址
设置寻址的从机地址值(I2C_CTRL2的SADDR)
设置从机地址模式(I2C_CTRL2的ADDR10)
ADDR10=0:7位地址模式
ADDR10=1:10位地址模式
4) 设置传输方向(I2C_CTRL2的DIR)
DIR=0:主机接收数据
DIR=1:主机发送数据
5) 开始传输
设置I2C_CTRL2的GENSTART=1,主机开始在总线上发送START条件和从机地址。
3. 主机10bits寻址的特殊时序初始化
在10位地址传输模式下,I2C_CTRL2的READH10用于产生特殊时序,当READH10=1时,支持如下传输序:主机先发送数据给从机,然后再从从机读取数据,传输时序图如下图所示:
主机在软件结束模式(ASTOPEN=0)下,发送数据到从机,当数据发送完成后设置READH10=1,然后再从从机接收数据。
主机通信初始化软件接口
主机通信初始化所用到的软件接口通过独立的函数接口实现,如下:
i2c_init函数三个参数分别为:所使用的I2C、数字滤波值和主机时钟配置值。i2c_transmit_set 函数用于初始化通信参数,包括:所使用的I2C、从机地址、传输字节数、停止条件产生模式和起始条件产生模式。
i2c_addr10_mode_enable函数用于使能10位地址模式。i2c_addr10_header_enable函数用于使能10位地址头读取时序,即主机发送完整的10位从机地址读序列或主机只发送10位地址的前7位。
主机发送流程
1) I2C_TXDT数据寄存器为空,I2C_STS的TDIS=1;
2) 向TXDT数据寄存器写入数据,数据开始发送;
3) 重复1、2步骤直到发送CNT[7:0]个数据;
4) 如果此时I2C_STS的TCRLD=1(重载模式),分为以下两种情况:
剩余字节数N>255:向CNT写入255,N=N-255,TCRLD被自动清0,传输继续;
剩余字节数N≤255:关闭重载模式(RLDEN=0),向CNT写入N,TCRLD被自动清0,传输继续。
5) 结束时序
停止条件产生:
软件结束模式(ASTOPEN=0):此时I2C_STS的TDC置1,设置GENSTOP=1产生STOP条件;
自动结束模式(ASTOPEN=1):自动产生STOP条件。
等待产生STOP条件,当STOP条件产生时,I2C_STS的STOPF置1,将I2C_CLR的STOPC写1,清除STOPF标志,传输结束。
主机发送流程软件接口
主机发送通过独立的函数接口实现,如下:
i2c_master_transmit函数为i2c_application.c文件所提供的应用层接口函数,参数包括:I2C结构体指针、从机地址、发送数据指针、发送数据字节数和函数超时时间。
注:此函数为Artery所提供的标准主机发送函数。用户也可根据前述主机发送流程,自行编写主机发送函数。
主机接收流程
1) 当收到数据后,RDBF=1,读取RXDT数据寄存器,RDBF被自动清零;
2) 重复步骤2直到接收CNT[7:0]个数据;
3) 如果此时I2C_STS的TCRLD=1(重载模式),分为以下两种情况:
剩余字节数N>255:向CNT写入255,N=N-255,TCRLD被自动清0,传输继续;
剩余字节数N≤255:关闭重载模式(RLDEN=0),向CNT写入N,TCRLD被自动清0,传输继续。
4) 当在接收到最后一个字节时,主机会自动发送一个NACK。
5) 结束时序
停止条件产生:
软件结束模式(ASTOPEN=0):此时I2C_STS的TDC置1,设置GENSTOP=1产生STOP条件;
自动结束模式(ASTOPEN=1):自动产生STOP条件。
等待产生STOP条件,当STOP条件产生时,I2C_STS的STOPF置1,将I2C_CLR的STOPC写1,清除STOPF标志,传输结束。
主机接收流程软件接口
主机接收通过独立的函数接口实现,如下:
i2c_master_receive函数为i2c_application.c文件所提供的应用层接口函数,参数包括:I2C结构体指针、从机地址、接收数据指针、接收数据字节数和函数超时时间。注:此函数为Artery所提供的标准主机接收函数。用户也可根据前述主机接收流程,自行编写主机接收函数。
从机通信流程
从机通信初始化
1. 从机地址配置
每个I2C从设备可同时支持2个从设备地址,由OADDR1和OADDR2指定
I2C_OADDR1
通过ADDR1EN使能
通过ADDR1MODE配置为7位(默认)或10位地址
I2C_OADDR2
通过ADDR2EN使能
固定7位地址模式
可通过ADDR2MASK[2:0]来在进行地址匹配比较时屏蔽掉0~7个LSB地址位
ADDR2MASK=0表示7位地址中的每一位都要参与匹配比较
ADDR2MASK=7表示任何非保留地址的7位地址都会被该从设备应答
2. 从机地址匹配当
I2C启用的地址选中匹配时,ADDRF中断状态标志会被置1,如果ADDRIEN位为1,就会产生一个中断。如果两个从地址都使能,在地址匹配产生ADDR中断时,可以查看状态寄存器中的ADDR[6:0]来得知是OADDR1还是OADDR2被寻址了。
3. 从机字节控制模式(通常SMBus模式下才使用)从设备可以对每个收到的字节进行应答控制。所需配置:SCTRL=1 & RLDEN=1 & STRETCH=0 & CNT≥1从机字节控制流程:
1) 每收到一个字节TCRLD置位,时钟延展于第8和第9个脉冲之间
2) 软件读取RXDT中的值,并决定是否置位ACK
3) 软件重装载CNT=1来停止时钟延展
4) 应答或非应答信号在第9个脉冲时刻出现在总线上
注意:置位SCTRL时,必须开启时钟延展,即STRETCH=0CNT可以是大于1的值,来实现多个字节以自动ACK接收完毕后再启动应答控制,从设备发送时推荐关闭SCTRL,此时无需字节应答控制。
从机通信初始化软件接口
从机通信初始化所用到的软件接口通过独立的函数接口实现,如下:
i2c_own_address1_set函数用于配置OADDR1地址模式以及ADDR1地址值。
i2c_own_address2_set函数用于配置ADDR2地址值以及ADDR2屏蔽位。
i2c_own_address2_enable函数用于使能ADDR2地址。
i2c_slave_data_ctrl_enable函数用于使能从机字节控制模式。
i2c_clock_stretch_enable函数用于使能从机时钟延展功能。
i2c_reload_enable函数用于使能发送数据重载模式。
从机发送流程
1) 响应主机地址,匹配时回复ACK;
2) TXDT为空时,置位TDIS,从设备写入发送数据;
3) 每发送一个字节会收到ACK,且置位TDIS;
4) 如果收到NACK位:
置位NACKF,产生中断;
从设备自动释放SCL和SDA(以便主设备发送STOP或RESTART);
5) 如果收到STOP位:
置位STOPF,产生中断;
当从机发送开启时钟延展(STRETCH=0)时,在等待ADDRF标志时和发送前一个数据的第9个时钟脉冲后,会把TXDT中的数据拷贝到移位寄存器中,如果此时TDIS还是置位,表示TXDT没有写进待发送数据,将发生时钟延展,如下流程图:
需要注意的是,在时钟延展关闭(STRETCH=1)的情况下,如果在将要传输数据的第一个Bit位开始发送之前,也就是SDA边沿产生之前,如果数据还未写入TXDT数据寄存器,那么会发生欠载错误,此时I2C_STS的OUF将会置1,并将0xFF发送到总线。为了能及时的写入数据,可以在通信开始前,先将数据写入到DT寄存器:软件先将TDBE置1,目的是为了清空TXDT寄存器的数据,然后将第一个数据写入TXDT寄存器,此时TDBE清零。
从机发送流程软件接口
从机发送通过独立的函数接口实现,如下:
i2c_slave_transmit函数为i2c_application.c文件所提供的应用层接口函数,参数包括:I2C结构体指针、发送数据指针、发送数据字节数和函数超时时间。注:此函数为Artery所提供的标准从机发送函数。用户也可根据前述从机发送流程,自行编写从机发送函数。
从机接收流程
1) 当收到数据后,RDBF=1,读取RXDT数据寄存器,RDBF被自动清零;
2) 重复步骤2直到所有数据接收完成;
3) 等待收到STOP条件,当收到STOP条件时,I2C_STS的STOPF置1,将I2C_CLR的STOPC写1,清除STOPF标志,传输结束。
从机接收流程软件接口
从机接收通过独立的函数接口实现,如下:
i2c_slave_receive函数为i2c_application.c文件所提供的应用层接口函数,参数包括:I2C结构体指针、接收数据指针、接收数据字节数和函数超时时间。注:此函数为Artery所提供的标准从机接收函数。用户也可根据前述从机接收流程,自行编写从机接收函数。
I2C配置工具
功能简介
I2C配置工具Artery_I2C_Timing_Configuration.exe可以实现对主机和从机的时钟、数字滤波、模拟滤波配置。
资源准备
1) 软件环境Artery_I2C_Timing_Configuration.exe
使用步骤
1) 选择芯片型号选择当前使用的芯片型号,例如可以选择AT32F425。
2) 选择设备模式
Master:主模式,I2C作为主机;
Slave:从模式,I2C作为从机。
3) 选择I2C速度模式
Standard-mode:标准模式,范围0~100kHz;
Fast-mode:快速模式,范围0~400kHz;
Fast-mode Plus:增强快速模式,范围0~1000kHz。
4) 设置I2C速度(单位kHz)根据实际需求设置I2C通信速度,例如需要通信速度为10kHz,那么这里设置为10。
5) 设置I2C时钟源频率(单位kHz)根据实际使用的I2C时钟源频率来配置,例如AT32425 I2C时钟源为PCLK1,当AT32425主频为144MHz,APB1为144MHz时,这里设置为144000。
6) 模拟滤波使能
On:打开;
Off:关闭。
模拟滤波使能后,将过滤50ns以下的脉冲。
7) 数字滤波(范围0~15)数字滤波时间=数字滤波值xTI2C_CLK;其中TI2C_CLK=1/I2C时钟源频率。当值为0时,数字滤波关闭,当值>0时将过滤小于数字滤波时间的脉冲。
8) 上升时间(tr单位ns)SCL和SDA总线的上升沿,如图18所示。I2C协议中规定了在标准模式(Standard-mode)、快速模式(Fast-mode)、增强快速模式(Fast-mode Plus)下的范围,详情请参照表1。上升时间和上拉电阻的阻值关系很大,上拉电阻越小,上升时间越短,可以支持的通信速度就越快,但是功耗也越高。
表2中给出了一些常用上拉电阻阻值所对应的上升沿时间,实际可能会因为总线挂的设备数量、布线等差异而有所不同,仅供参考。
9) 下降时间(tf单位ns)SCL和SDA总线的下降沿,如图18所示。I2C协议中规定了在标准模式(Standard-mode)、快速模式(Fast-mode)、增强快速模式(Fast-mode Plus)下的范围,详情请参照表1。
注:该值是总线上连接两片AT32MCU,一个作为主机,一个作为从机测试出来的值,实际可能会因为总线挂的设备数量、布线等差异而有所不同。
10) 产生代码
点击产生代码,上诉配置的值,将会以代码的形式产生出来,如下图红框所示,只需要将右侧输出的代码替换到自己的程序即可。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由玉鹤甘茗转载自雅特力 微信公众号,原文标题为:AT32讲堂057 | 雅特力AT32F425 I2C使用指南,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】雅特力32位MCU AT32F421 GPIO的使用指南
本文中雅特力将为大家分享32位微控制器AT32F421 GPIO的使用指南。
雅特力AT32F423 DMA使用指南
本文介绍雅特力AT32F423 DMA控制器的作用和使用指南。DMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。
【经验】雅特力32位MCU AT32F413RCT7串口测试详解
本文主要说明雅特力AT32F413RCT7开发板上的串口功能使用配置以及一些区别注意点。
【选型】可替代意法半导体STM32F103系列的国产32位MCU AT32F403A系列,主频更高,RAM更大
STM32F103系列是意法半导体销量较高的芯片,本文推荐雅特力AT32F403A系列替代STM32F103系列。我们以AT32F403AVGT7和STM32F103VGT6为例,对比二者发现,AT32F403AVGT7使用Cortex-M4F内核,主频高达240MHz,性能更好,处理速度更快,AT32F403AVGT7还拥有更大的RAM,可以存储更多的数据。
雅特力32位MCU选型表
雅特力AT32 MCU的选型的相关技术参数如下,32位MCU,多种封装:TSSOP20,QFN28,QFN32,QFN48,LQFP48,LQFP64,LQFP100,LQFP144,稳定的工作温度:-40°C~85°C,-40°C~105°C,频率范围在96MHz~288MHz之间
产品型号
|
品类
|
Core
|
FPU
|
Speed(MHz)
|
Flash(KB)
|
SRAM(KB)
|
I/O
|
Advanced TM(16-bit)
|
GPTM(32-bit)
|
GPTM(16-bit)
|
Basic TM(16-bit)
|
Systick(24-bit)
|
WDT
|
WWDT
|
RTC
|
I2C
|
SPI
|
(F/H)I2S(1)(2)
|
USART/UART
|
SDIO
|
USB Device
|
CAN
|
ADC Engine
|
12-bit ADC ch
|
DAC Engine
|
12-bit DAC ch
|
PKG
|
Size(mm)
|
Temp(℃)
|
AT32F403ZCT6
|
32位MCU
|
M4
|
FPU
|
200MHz
|
256KB
|
96KB/224KB
|
112
|
3
|
2
|
8
|
2
|
1
|
1
|
1
|
1
|
3
|
4
|
0/4
|
3/2
|
2
|
1
|
1
|
3
|
21
|
2
|
2
|
LQFP144
|
20mmx20mm
|
-40℃~85°C
|
选型表 - 雅特力 立即选型
国产32位MCU,240M高主频、独有安全库、AD/DA、CAN、EMAC接口外设应有尽有
描述- 雅特力科技推出的AT32系列32位ARM Cortex-M4/M0+ MCU,采用55nm制程,主频高达240MHz,具备丰富的外设接口如AD/DA、CAN、EMAC等,并拥有独有安全库,适用于工业、安全和高性能应用。产品线涵盖高性能、主流型和超值型,支持多种开发工具和实时操作系统,广泛应用于电机控制、电力监测、舞台灯光等领域。
型号- AT32F413,AT32F415,STM32F407VET6,STM32F407VGT6,STM32F407,AT32F421,AT32F403ARGT7,AT32F4XX,STM32F103RET6,AT32F403ARET7,STM32F107VBT6,AT32F403,AT32F403ARCT7,STM32F207,AT32F407,AT32F403AVET7,STM32F107RBT6,AT32F403ACGT7,AT32F403AVGT7,AT32F403ACET7,AT32F403ACCT7,AT32L031,AT32F403AVCT7,STM32F103VCT6,STM32F103VET6,STM32F103VGT6,STM32F103RGT6,STM32F207VGT6,AT32F407AVCT7,STM32F207VCT6,AT32F435,AT32F437,AT32F407VCT7,AT32F407AVGT7,AT32F403AXXU7,AT32F407VGT7,AT32F407XXT7,AT32F407RCT7,AT32F403ACGU7,AT32F407VET7,AT32,AT32F407RET7,AT32F403ACEU7,AT32F407RGT7,AT32F403ACCU7,AT32 SERIES,STM32F207VET6,AT32F403A 系列,AT32F425,STM32F103,STM32F107VCT6,STM32F107,AT32F403AXXT7,STM32 SERIES,AT32F407 系列,STM32F107RCT6,AT32F403A,AT32L415,AT32F407A
【应用】国产32位MCU AT32F413CBT7用于车辆视频监控系统,主频最高200MHz
针对车辆视频监控系统中的主控MCU,推荐雅特力AT32F413CBT7,供电电压2.6V至3.6V,高达128K字节的内存和64K字节的SRAM,最高200MHz工作频率,-40至+105℃温度范围。
雅特力32位MCU-AT32快速选型指南
描述- 本资料为AT32系列微控制器(MCU)选型表,详细列出了不同型号的AT32 MCU的特性和支持功能。包括I2S通信模式(全双工/半双工)的支持情况,以及不同型号之间的差异。资料更新日期为2022年3月8日,版本号为V202203,支持多个系列型号。
型号- AT32F413CCU7,AT32F437ZCT7,AT32F415CBT7,AT32F415R8T7,AT32F425F8P7,AT32F437ZGT7,AT32F403ZET6,AT32F421K6T7,AT32F425C6U7,AT32F437VMT7,AT32F425R8T7,AT32F437RGT7,AT32F421K4U7-4,AT32F437RCT7,AT32F403ARGT7,AT32WB415CCU7-7,AT32F413CBT7,AT32F435CMT7,AT32F403ARCT7,AT32F415CCU7,AT32F435RCT7,AT32F435ZGT7,AT32F403AVET7,AT32F435RGT7,AT32F435VMT7,AT32F421C6T7,AT32F403ACET7,AT32F413KBU7-4,AT32F435ZCT7,AT32WB415,AT32F435CMU7,AT32F413CBU7,AT32F415KBU7-4,AT32F407RCT7,AT32F403ACGU7,AT32F407VET7,AT32F425K8U7-4,AT32F407RGT7,AT32F403ACCU7,AT32F415RCT7,AT32F425R8T7-7,AT32F415CBU7,AT32F425K6T7,AT32F421K6U7,AT32F425K6U7-4,AT32F425C6T7,AT32F421G4U7,AT32F415RBT7-7,AT32F421G8U7,AT32F421F4P7,AT32F421F8P7,AT32F413RCT7,AT32F425R6T7-7,AT32F413KCU7-4,AT32F413,AT32F425F6P7,AT32F415,AT32F437VCT7,AT32F421K4T7,AT32F437VGT7,AT32F437ZMT7,AT32F421K8T7,AT32F425C8U7,AT32F403ZGT6,AT32F403ZCT6,AT32F425R6T7,AT32F413C8T7,AT32F415RBT7,AT32F421,AT32F403ARET7,AT32F403,AT32F435VGT7,AT32F435CGT7,AT32F407,AT32F435VCT7,AT32F421C8T7,AT32F435CCT7,AT32F403ACGT7,AT32F403AVGT7,AT32F421C4T7,AT32F403ACCT7,AT32F435ZMT7,AT32F403AVCT7,AT32F413RBT7,AT32F415C8T7,AT32F435,AT32F415RCT7-7,AT32F437,AT32F435CGU7,AT32F407VCT7,AT32F415CCT7,AT32F407VGT7,AT32F435CCU7,AT32F415KCU7-4,AT32,AT32F407RET7,AT32F403ACEU7,AT32F415K8U7-4,AT32F415R8T7-7,AT32F435RMT7,AT32F413CCT7,AT32F425,AT32F421K4U7,AT32F425K8T7,AT32F421K8U7-4,AT32F421K8U7,AT32F425C8T7,AT32F437RMT7,AT32F421G6U7,AT32F421K6U7-4,AT32F421F6P7,AT32F403A
【应用】国产32位MCU AT32F421K8U7用于电子调速器,最高工频达120MHz,工作温度宽至-40~+105℃
车模电调的性能高低取决于硬件元器件的选择,以及软件算法方面的优化调试。其硬件部分主要由MCU、晶振、电源管理单元、MOS驱动等组成。今天给大家推荐一款国产的32位MCU AT32F421K8U7,主频高达120MHz。
【应用】国产32位MCU AT32F421C8T7用于电子烟,可替换STM32F030C8T6,主频高达120MHz
本文件推荐雅特力的AT32F421C8T7,与STM32F030C8T6在引脚上Pin2Pin兼容,软件也高度兼容,内核、CPU速度、SRAM、外设等相比STM32也大幅度提升。
【经验】 雅特力32位MCU AT32F435/437 DMA使用指南
DMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7个通道。每个通道都支持外设的DMA请求映射到任意通道上。
【经验】32位MCU AT32F403A启动进入Hard Fault Handler的解决办法
雅特力科技推出的AT32F403A系列高效能微控制器,搭载32位ARM® Cortex®-M4内核,配合先进制程有效提升整体效能达240MHz的运算速度。内建的单精度浮点运算单元(FPU)及数字信号处理器(DSP),搭配丰富的外设及灵活的时钟控制机制,能满足多种领域应用。在开发中发现有些时候会启动不起来,调试发现进入Hard Fault Handler,关于该问题的原因及解决办法如下。
【应用】国产32位MCU AT32F403RCT6用于舞台灯光控制,具有多达3个16位带死区控制的PWM控制器驱动电机
舞台灯光控制选用国产雅特力的AT32F403RCT6 MCU,包括多达3个16位带死区控制的PWM控制器驱动电机。高达50MHz SPI 速度,扩展接口可配接W5500和esp8266 网络模块,实现快速以太网通讯。支持art-net协议能满足新型的舞台灯光控制协议控制。支持并行LCD接口,兼容8080/6800模式可以接入各种不同接口的LCD,可选范围更宽。
【应用】雅特力高性能32位MCU AT32F407VGT7用于数据采集卡,主频高达240MHz,片上资源丰富
在数据采集卡中,通过传感器将环境被测的物理量(温度、压力、光源、位移等)转换成模拟电信号,之后通过模数转换器转换成数字信号给到微控制器进行数据处理,本文推荐雅特力的高主频MCU AT32F407VGT7。
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可定制PCB最高层数:32层;板材类型:罗杰斯高频板/泰康尼高频板/ZYF中英天线板/F4B高频板/高频电路板/高频混压板/高频纯压板等;最大加工尺寸:609*889mm。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论