雅特力

GPIO特性

  • 最大封装(144pin)具有116个多功能双向的I/O口;

  • 所有I/O口都可以映射到16个外部中断;

  • 绝大部分I/O口可容忍5V输入信号;

  • 所有I/O口均为快速I/O,寄存器存取速度最高fAHB;

  • I/O引脚的外设功能可以通过一个特定的操作来开启写保护,以避免意外的写入I/O寄存器;

  • 每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口;

  • 可选的每个I/O口的电流推动/吸入能力;

  • 端口位设置/清除寄存器(GPIOx_SCR)和端口位清除寄存器(GPIOx_CLR)为GPIOx_ODT寄存器提供位访问能力。

GPIO

GPIO在复位期间和刚复位后,复用功能未开启,大部分I/O端口被配置成浮空输入模式。

当作为输出配置时,写到输出数据寄存器(GPIOx_ODT)上的值会输出到相应的I/O引脚。可以以推挽模式或开漏模式(仅低电平被驱动,高电平表现为高阻)使用输出驱动器。

输入数据寄存器(GPIOx_IDT)在每个AHB时钟周期捕捉I/O引脚上的数据。

所有GPIO引脚有一个内部弱上拉和弱下拉,它们被激活或断开有赖于GPIOx_PULL寄存器的值。

1.png

图1. I/O端口位的基本结构

2.png

表1. I/O端口位配置表

GPIO toggle

AT32F435/437提供的I/O口均为快速I/O,寄存器存取速度最高为fAHB,所以可以看到在主频为240MHz时,GPIO翻转频率能够轻松达到120MHz:

3.png

图2. I/O翻转速度

IO引脚的5V or 3.3V容忍

标准3.3V容忍引脚(TC)

所有振荡器和USB_OTG用到的引脚都是标准3.3V容忍引脚。

  • PC14/PC15(LEXT_IN/OUT)

  • PH0/PH1(HEXT_IN/OUT)

  • PA11/PA12(OTGFS1_D-/D+)

  • PB14/PB15(OTGFS2_D-/D+)

4.png

表2. TC引脚示例

带模拟功能5V容忍引脚(FTa)

ADC占用端口为带模拟功能5V容忍引脚。

  • PA0–PA7,PB0–PB1,PC0–PC5,PF3–PF10

  • FTa引脚设置为输入浮空、输入上拉、或输入下拉时,具有5V电平容忍特性;设置为模拟模式时,不具5V电平容忍特性,此时输入电平必须小于VDD+0.3V

5.png

表3. FTa引脚示例

带20mA吸入能力5V容忍引脚(FTf)

部分I2C可提供带20mA吸入能力的5V容忍引脚。

6.png

表4. FT引脚示例

5V容忍引脚(FT)

其余的GPIO都为5V容忍引脚。

7.png

表5. FT引脚示例

IOMUX

I/O复用功能输入/输出

  • 大多数外设共享同一个GPIO引脚(比如PA0,可作为TMR2_CH1/TMR2_EXT/TMR5_CH1/TMR8_EXT/I2C2_SCL/USART2_CTS)

  • 而对某个具体的GPIO引脚,在任意时刻只有一个外设能够与之相连

  • 某些外设功能还可以重映射到其他引脚,从而使得能同时使用的外设数量更多

选择每个端口线的有效复用功能之一是由两个寄存器来决定的,分别是GPIOx_MUXL和GPIOx_MUXH复用功能寄存器。可根据应用的需求用这两寄存器连接复用功能模块到其他引脚。

8.png9.png

表6. 通过GPIOA_AFR寄存器配置端口A的复用功能

10.png

11.png

表7. 通过GPIOB_AFR寄存器配置端口B的复用功能

12.png

13.png

表8. 通过GPIOF_AFR寄存器配置端口C的复用功能

14.png

15.png

表9. 通过GPIOF_AFR寄存器配置端口D的复用功能

16.png

17.png

表10. 通过GPIOF_AFR寄存器配置端口E的复用功能

18.png

19.png

表11. 通过GPIOF_AFR寄存器配置端口F的复用功能

20.png

21.png

表12. 通过GPIOF_AFR寄存器配置端口G的复用功能

22.png

23.png

表13. 通过GPIOF_AFR寄存器配置端口H的复用功能

特殊I/O

调试复用引脚

在复位时,和复位后不像其他GPIO一样处于浮空输入状态,而是处于AF模式

  • PA13:JTMS/SWDIO,AF上拉

  • PA14:JTCK/SWCLK,AF下拉

  • PA15:JTDI,AF上拉

  • PB3:JTDO/SWO,AF浮空

  • PB4:JNTRST,AF上拉

振荡器复用引脚

  • 振荡器关闭的状态下(复位后的默认状态),相关引脚可用作GPIO

  • 振荡器使能状态下,相应引脚的GPIO配置无效

  • 振荡器处于bypass模式(使用外部时钟源)时,HEXT_IN/LEXT_IN为振荡器时钟输入引脚,HEXT_OUT/LEXT_OUT可做GPIO使用

电池供电域引脚

  • 电池供电域引脚包括PC13、PC14以及PC15。电池供电域由VDD或VBAT引脚供电,当VDD主 电源被切断时,电池供电域自动切换至VBAT引脚供电,以保障ERTC正常工作。

  • 当电池供电域由VDD供电时,PC13可以作为通用I/O口、TAMPER引脚、ERTC校准时钟、ERTC闹钟或秒输出,PC14和PC15可以用于GPIO或LEXT引脚。(PC13至PC15作为I/O口的速度必须限制在2MHz以下,最大负载为30pF,而且这些I/O口绝对不能当作电流源)。

  • 当电池供电域由VBAT供电时,PC13可以作为TAMPER引脚、ERTC闹钟或秒输出,PC14和PC15只能用于LEXT引脚。

GPIO固件驱动程序API

Artery提供的固件驱动程序包含了一系列固件函数来管理GPIO的下列功能:

  • GPIO寄存器复位

  • 初始化配置

  • 读取输入端口或某个输入引脚

  • 读取输出端口或某个输出引脚

  • 设置或清除某个引脚的输出

  • 锁定引脚

  • 引脚的复用功能配置

输出模式

GPIO提供了两种不同类型的输出模式分别是,推挽输出以及开漏输出,下面是输出模式的配置示例:

24.png

输入模式

GPIO提供了三种不同类型的输入模式分别是,浮空输入、上拉输入以及下拉输入,下面是输入模式的配置示例:

25.png

模拟模式

当需要使用ADC或COMP通道作为输入时,需要将相应的引脚配置为模拟模式,下面是模拟模式的配置示例:

26.png

复用模式

  1. 不论使用何种外设模式,都必须将I/O配置为复用功能,之后系统才能正确使用I/O(输入或输出)。

  2. I/O引脚通过复用器连接到相应的外设,该复用器一次只允许一个外设的复用功能(IOMUX)连接到I/O引脚。这样便可确保共用同一个I/O引脚的外设之间不会发生冲突。每个I/O引脚都有一个复用器,该复用器具有16路复用功能输入/输出(MUX0到MUX15),可通过gpio_pin_mux_config()函数对这些引脚进行配置:

    —复位后,所有I/O都会连接到系统的复用功能0(MUX_0)

    —通过配置MUX0到MUX15可以映射外设的复用功能

  3. 除了这种灵活的I/O复用架构之外,各外设还具有映射到不同I/O引脚的复用功能,这可以针对不同器件封装优化外设I/O功能的数量;例如,可将USART2_TX引脚映射到PA2或PA14引脚上。

  4. 配置过程:

      —使用gpio_pin_mux_config()函数将引脚连接到所需的外设复用功能,例如配置PA0作为                  TMR2_EXT输入

      gpio_pin_mux_config(GPIOA,GPIO_PINS_SOURCE0,GPIO_MUX_1);

      —使用gpio_init()函数配置I/O引脚:

          -通过以下方式配置复用功能模式下的所需引脚

          gpio_init_struct.gpio_mode=GPIO_MODE_MUX;

          -通过以下成员选择类型、上拉/下拉和驱动能力

          gpio_pull、gpio_out_type和gpio_drive_strength成员

根据上述配置过程,下面将介绍几种外设的常用配置示例。
USART I/O复用模式配置

27.png

TMR I/O复用模式配置

28.png

I2C I/O复用模式配置

29.png

案例 LED翻转

功能简介

通过系统时钟延时来对LED进行翻转。

资源准备

1) 硬件环境:

对应产品型号的AT-START BOARD

2) 软件环境:

project\at_start_f437\examples\gpio\led_toggle

软件设计

1) 配置流程

  • 配置系统时钟;

  • 初始化延时函数和LED;

  • 翻转LED。

2) 代码介绍

  • main函数代码描述

30.png

  • LED翻转代码描述

31.png

实验效果

  • 上电运行会看到LED2、LED3和LED4以间隔200ms时间交替的进行翻转。

案例 SWJTAG接口复用

功能简介

对SWJTAG接口的I/O进行复用。

资源准备

3) 硬件环境:

对应产品型号的AT-START BOARD

4) 软件环境:

project\at_start_f437\examples\gpio\swjtag_mux

软件设计

3) 配置流程

  • 配置系统时钟;

  • 初始化延时函数;


  • 配置SWJTAG接口的复用和USART2初始化。

4) 代码介绍

  • main函数代码描述

32.png

  • SWJ配置代码描述

33.png

实验效果


将PA13接示波器,PA14接入串口打印工具;

程序运行过程中PA13每隔500ms会翻转一次,表示jtms/swdio引脚已被用为GPIO使用;

PA14接入串口打印工具后,每隔500ms会看到USART2_TX打印主循环执行次数。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 475

I2C接口简介

I2C接口是由数据线SDA和时钟线SCL构成,在标准模式下通信速度可达到100kHz,快速模式下则可以达到400kHz,增强快速模式可达到1MHz。一帧数据传输从开始信号开始,在结束信号后停止,在收到开始信号后总线被认为是繁忙的,当收到结束信号后,总线被认为再次空闲。I2C接口具有主机和从机模式、多主机功能、可编程建立和保持时间、时钟延展功能、DMA存取数据、支持SMBus 2.0协议等特点。

1.png

图1. I2C框图

I2C接口通信

主机通信流程

主机通信初始化

主机时钟初始化在启动外设(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.png

图2. 主机时钟的产生

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. 主机10 bits寻址的特殊时序初始化

在10位地址传输模式下,I2C_CTRL2的READH10用于产生特殊时序,当READH10=1时,支持如下传输序:主机先发送数据给从机,然后再从从机读取数据,传输时序图如下图所示:

3.png

图3. 10位地址的读访问READH10=1

主机在软件结束模式(ASTOPEN=0)下,发送数据到从机,当数据发送完成后设置READH10=1,然后再从从机接收数据。

4.png

图4. 10位地址的读访问READH10=0

主机通信初始化软件接口

主机通信初始化所用到的软件接口通过独立的函数接口实现,如下:

5.png

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标志,传输结束。

6.png

图5. I2C主机发送流程图

7.png

图6. I2C主机发送时序图

主机发送流程软件接口

主机发送通过独立的函数接口实现,如下:

8.png

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标志,传输结束。

9.png

图7. I2C主机接收流程图

10.png

图8. I2C主机接收时序图

主机接收流程软件接口

主机接收通过独立的函数接口实现,如下:

11.png

i2c_master_receive函数为i2c_application.c文件所提供的应用层接口函数,参数包括:I2C结构体指针、从机地址、接收数据指针、接收数据字节数和函数超时时间。

注:此函数为Artery所提供的标准主机接收函数。用户也可根据前述主机接收流程,自行编写主机接收函数。

从机通信流程

从机通信初始化

从机地址配置

每个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=0

CNT可以是大于1的值,来实现多个字节以自动ACK接收完毕后再启动应答控制,从设备发送时推荐关闭SCTRL,此时无需字节应答控制。
从机通信初始化软件接口

从机通信初始化所用到的软件接口通过独立的函数接口实现,如下:

12.png

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没有写进待发送数据,将发生时钟延展,如下流程图:

13.png

图9. I2C从机发送流程图

需要注意的是,在时钟延展关闭(STRETCH=1)的情况下,如果在将要传输数据的第一个Bit位开始发送之前,也就是SDA边沿产生之前,如果数据还未写入TXDT数据寄存器,那么会发生欠载错误,此时I2C_STS的OUF将会置1,并将0xFF发送到总线。

为了能及时的写入数据,可以在通信开始前,先将数据写入到DT寄存器:软件先将TDBE置1,目的是为了清空TXDT寄存器的数据,然后将第一个数据写入TXDT寄存器,此时TDBE清零。

14.png

图10. I2C从机发送时序图

从机发送流程软件接口

从机发送通过独立的函数接口实现,如下:

15.png

指针、发送数据指针、发送数据字节数和函数超时时间。

注:此函数为Artery所提供的标准从机发送函数。用户也可根据前述从机发送流程,自行编写从机发送函数。
从机接收流程

1) 当收到数据后,RDBF=1,读取RXDT数据寄存器,RDBF被自动清零;

2) 重复步骤2直到所有数据接收完成;

3) 等待收到STOP条件,当收到STOP条件时,I2C_STS的STOPF置1,将I2C_CLR的STOPC写1,清除STOPF标志,传输结束。

16.png


图11. I2C从机接收流程图

17.png


图12. I2C从机接收时序图

从机接收流程软件接口

从机接收通过独立的函数接口实现,如下:

18.png

i2c_slave_receive函数为i2c_application.c文件所提供的应用层接口函数,参数包括:I2C结构体指针、接收数据指针、接收数据字节数和函数超时时间。

注:此函数为Artery所提供的标准从机接收函数。用户也可根据前述从机接收流程,自行编写从机接收函数。

I2C配置工具

功能简介

I2C配置工具Artery_I2C_Timing_Configuration.exe可以实现对主机和从机的时钟、数字滤波、模拟滤波配置。

资源准备

1) 软件环境Artery_I2C_Timing_Configuration.exe

19.png

图13. Artery I2C Timing Configuration

使用步骤

1) 选择芯片型号

选择当前使用的芯片型号,例如可以选择AT32F435、AT32F437。

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时钟源频率来配置,例如AT32435 I2C时钟源为PCLK1,当AT32435主频为288MHz,APB1为144MHz时,这里设置为144000。

6) 模拟滤波使能

On:打开;

Off:关闭。

模拟滤波使能后,将过滤50ns以下的脉冲。

7) 数字滤波(范围0~15)

数字滤波时间=数字滤波值x TI2C_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。

20.png

图14. 上升沿(tr)下降沿(tf)规范

21.png

表1. I2C时间规范

22.png

表2. 常用上拉电阻阻值的tr、tf参考值(VDD=3.3V)

注:该值是总线上连接两片AT32 MCU,一个作为主机,一个作为从机测试出来的值,实际可能会因为总线挂的设备数量、布线等差异而有所不同。

10) 产生代码

点击产生代码,上诉配置的值,将会以代码的形式产生出来,如下图红框所示,只需要将右侧输出的代码替换到自己的程序即可。

23.png

图15. 代码产生

案例 读写EEPROM

功能简介

使用硬件I2C接口对EEPROM存储设备进行读写访问。

资源准备

1) 硬件环境

对应产品型号的AT-START BOARD

4.7K上拉电阻

EEPROM存储设备

2) 软件环境

project\at_start_f4xx\examples\i2c\eeprom

软件设计

1) 配置流程

  • 开启I2C外设时钟

  • 配置I2C所复用的GPIO

  • 配置I2C所用的DMA通道

  • 使能I2C外设接口

  • 写入EEPROM并读取写入的数据

  • 比较读写数据内容是否正确

2)代码介绍

  • main函数代码描述

24.png

实验效果

  • 如若读写数据完全相同,则LED3会被点亮。

案例 轮询方式通信

功能简介

通过轮询方式让两块AT-START BOARD的I2C接口进行通信,测试作为主机或从机发送和接收数据。

资源准备

1) 硬件环境

对应产品型号的AT-START BOARD两块

4.7K上拉电阻

2) 软件环境

project\at_start_f4xx\examples\i2c\communication_poll

软件设计

1) 配置流程

  • 开启I2C外设时钟

  • 配置I2C所复用的GPIO

  • 使能I2C外设接口

  • 从机准备接收数据

  • 主机发送数据

  • 从机准备发送数据

  • 主机接收数据

  • 主机从机对比发送和接收到的数据是否正确

2) 代码介绍

  • main函数代码描述

25.png

实验效果

  • 通过宏定义:#define MASTER_BOARD来选择两块板子的主从关系;

  • 如若主机或从机的读写数据完全相同,则LED3会被点亮,否则LED2会不停闪烁。

案例 中断方式通信

功能简介

通过中断方式让两块AT-START BOARD的I2C接口进行通信,测试作为主机或从机发送和接收数据。

资源准备

3) 硬件环境

对应产品型号的AT-START BOARD两块

4.7K上拉电阻

4) 软件环境

project\at_start_f4xx\examples\i2c\communication_int

软件设计

3) 配置流程

  • 开启I2C外设时钟

  • 配置I2C所复用的GPIO

  • 使能I2C外设接口

  • 使能I2C中断

  • 从机准备接收数据

  • 主机发送数据

  • 从机准备发送数据

  • 主机接收数据

  • 主机从机对比发送和接收到的数据是否正确

4) 代码介绍

  • main函数代码描述

26.png

  • 主机中断处理函数代码描述

27.png

  • 从机中断处理函数代码描述

28.png

实验效果

  • 通过宏定义:#define MASTER_BOARD来选择两块板子的主从关系;

  • 如若主机或从机的读写数据完全相同,则LED3会被点亮,否则LED2会不停闪烁。

案例 DMA方式通信

功能简介

通过DMA方式让两块AT-START BOARD的I2C接口进行通信,测试作为主机或从机发送和接收数据。

资源准备

5) 硬件环境

对应产品型号的AT-START BOARD两块

4.7K上拉电阻

6) 软件环境

project\at_start_f4xx\examples\i2c\communication_dma

软件设计

5) 配置流程

  • 开启I2C外设时钟

  • 配置I2C所复用的GPIO

  • 配置I2C所使用的DMA通道

  • 使能I2C外设接口

  • 从机准备接收数据

  • 主机发送数据

  • 从机准备发送数据

  • 主机接收数据

  • 主机从机对比发送和接收到的数据是否正确

6) 代码介绍

  • main函数代码描述

29.png

  • 主机DMA发送接收完成中断处理函数代码描述

30.png

实验效果

  • 通过宏定义:#define MASTER_BOARD来选择两块板子的主从关系;

  • 如若主机或从机的读写数据完全相同,则LED3会被点亮,否则LED2会不停闪烁。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 183

2022年已经迈入尾声,经过全年不间断的研发生产与客户的交流反馈,雅特力在微控制器(MCU)市场上获得不少好评,今年年末随着疫情逐步放开,各行各业也开始活络起来,距离全球景气回升指日可待。

物联网(IoT)议题仍持续发烧到许多应用领域,举例来说,在环境监控或是智能设备上,具有高效能、高集成、灵活性和低功耗特性的MCU经常与RF射频相关芯片搭配,如Wi-Fi, Bluetooth与毫米波(mmWave)雷达,MCU可用来执行复杂的资料处理和算法;又以后疫情时代,追求更精准、精密的医疗系统设备,且便于人们在家中就能简易的进行身体健康管理,通过长时间监测人体的生理状况,发现慢性或隐性疾病的征兆,协助患者早日进行诊疗,MCU为这些物联网设备的运行与算法提供支持,并具有高精准度、低功耗、小体积封装与低成本等特性。

在工业、制造业领域,雅特力已累积许多成熟的案例,服务各类型科技行业客户,如传统的PLC可能需要更多的数位/类比转换器或外接模块来协助工厂大型设备运作,且存储器储存空间受限,若重新替换设备、升级需耗费大量的成本与人力学习。AT32 MCU系列能够帮助客户更简单的实现操作,通过高精度12-bit ADC数据采集外部信号、数个通讯接口、多通道PWM,提供不同容量的Flash、SRAM供选用,满足客户的多样需求。以下重点回顾AT32 MCUs全产品系列:

1.jpg

超值型系列

全系列采用32位高效能Cortex®-M4内核,提供丰富界面与各种功能,考量到追求高性价比的开发客户,雅特力部分M4内核产品媲美Cortex®-M0价格。超值型系列MCU具有高质量、小尺寸、低成本、高效能和灵活性等优势,适合成本敏感型嵌入式应用,如物联网节点、光模块、无线充电、电机控制、工业自动化、安防、家用电器、电子玩具、机器人、电竞周边、5G应用等应用领域。超值型产品线现有五款型号,市场上已推出AT32F415、AT32F425、AT32F421、AT32F4212四个系列,特别是AT32F4212系列集成2个运算放大器OPA与比较器,满足高速数据采集、混合信号处理、工业控制与电机应用要求。AT32F423预计2023年2月开始提供样品。

主流型系列

全系列采用32位高效能Cortex®-M4内核,CPU最高支持240 MHz工作频率,集成高效能的运算速度和丰富的系统资源,以高性能、高集成、高性价比和低功耗的优势打造一流市场竞争力,已广泛应用于工业自动化、电机控制、物联网及消费性电子等领域市场,满足各种成本敏感及高运算需求的设计。主流型产品线共有四款,目前已推出AT32F413、AT32F403A、AT32F407三个系列,AT32F407系列还兼容IEEE-802.3 10/100 Mbps Ethernet以太网络控制器接口,协助开发人员降低设备成本,AT32F405预计2023年下半年开始提供样品。

高效能系列

高性能产品线共2款微控制器-AT32F435和AT32F437,全系列采用32位高效能Cortex®-M4内核,配合先进制程与卓越的整合技术,创下M4业界最高主频288MHz的运算速度。除此之外,丰富外设资源支持3组高速(5.33 Msps)ADC独立引擎,和2组DAC等接口,另外AT32F437系列集成IEEE-802.3 10/100 Mbps Ethernet以太网络控制器接口,加快了数据传输效率和提升稳定性。领先的处理能力、性能及弹性易用的产品灵活性,超越业界同级芯片水平,为各种高运算、大存储需求的设计提供了最佳选择,现已成功量产并进入工业自动化、电机控制、物联网及消费性电子等应用市场。

无线型系列

无线型产品现已推出首款蓝牙BLE 5.0 MCU—AT32WB415系列,通过Bluetooth SIG蓝牙BQB认证 (Declaration ID : D059796),具有高效能CPU、卓越射频性能,丰富存储器资源与通讯界面,协助开发人员减少系统成本和占板空间,快速进入无线物联网市场。AT32WB415广泛应用于消费性电子、智慧家居、工业物联网等领域。
雅特力未来将持续发力工业、智能制造、物联网、消费性电子、车用、医疗、5G通讯等领域,致力实现通用型MCU设计,打造全方位微控制器平台,专注开发ARM®-Cortex®-M4/M0+,并提供数字信号处理器(DSP)、单精度浮点运算(FPU)、高速的CPU效能、相对业界更大的内存、丰富的外设、自主研发的sLib二次开发安全库,与不同尺寸封装供客户选择,持续研发28nm/40nm先进制程,强化主频效能、功耗和封装尺寸等各方面优势。同时雅特力提供完整的生态链,通过与合作伙伴结盟产出更多具有市场竞争力的产品,扩大MCU产品渠道,携手与我们的客户共同迈向下一年度,创造更多智能科技,延续美好生活经济。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 57

随着人们消费力及现代工业技术水平的提升,电吹风市场步入了绿色节能、高效多功能化产品的发展阶段,人们对电吹风的需求和要求都不断增加。传统电吹风采用交流电机使用寿命有限,维护不方便,能耗高、电机可调控性不高,已不能满足新一代消费者使用需求。高速风筒凭借其精巧的外观设计、舒适的手感、更低的噪声、出色的干发效果,快速博得消费者的青睐,成为电吹风产品迭代升级的方向。

电吹风风速的大小由电机转速所决定,传统马达转速通常在2万转以下,主要靠电热丝发热干发,对发质伤害大。高速风筒采用无刷马达,转速能达到每分钟10万转以上,高速气流快速吹走头发表面的水分,无需过高的温度就能够吹干头发,减少对头发的伤害。与普通电吹风相比,高速风筒具有噪声低、风量大、护发效果好、干燥时间短等优点。

1.png

雅特力AT32F4212高速风筒应用方案

基于市场新趋势,雅特力已推出高达12万转的高速风筒应用方案。采用无感FOC矢量控制,搭配雅特力最新电机控制算法,对速度控制信号产生快速响应,从而快速建立新的目标速度。在负载有较大改变后对速度进行稳健控制,具有转矩波动小、效率高、噪声小、动态响应快等优点。

2.png

作为电吹风的核心零部件,高速电机的技术突破成为行业进阶的关键环节,而MCU作为电机驱动器的控制核心,成了高性能驱动器设计的关键。

雅特力高速风筒采用高性价比AT32F4212系列电机MCU,主频高达120MHz,搭配Cortex-M4F核心运算,具有快速高效的算法能力,控制精度高。高频、高解析的PWM确保电机高效稳定运转,实现了电机工作时的低振动,使用电吹风时具有更舒适的手感。

AT32F4212集成丰富的接口资源,内置1个比较器和2路运算放大器OPA,可精简电路设计,有效减小高速风筒的体积和重量,同时降低物料成本,相对于市场上M0内核的高速风筒性能、性价比更高。

雅特力AT32F4212应用优势

  • M4内核,120MHz主频,快速完成FOC算法和电流调节

  • 内建高性能双OPA,精简电路并节省成本

  • 整合内建比较器,可实现过流保护

  • 高PWM频率与高PWM解析度

  • 高级定时器输出多路互补PWM,驱动功率模块

  • ADC规则和注入模式实现电流精准检测

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 35

EE Awards Asia为亚洲区半导体和电子业的年度颁奖盛会,全球137家相关科技企业,超过400份提名角逐,奖项包含新创奖、产品奖、人气奖、企业奖与推荐奖,共有22个奖项进行投票,同时邀请各个专业领域工程师评选出最优秀的品牌和产品。

今年雅特力AT32F435/437荣幸获选「亚洲区—年度最佳MCU/Driver IC产品奖」,得到亚洲区微控制器市场高度认可,由雅特力产品与营销处长杜立博先生代表公司上台领奖。

1.jpg

经过市场不断的淬炼和客户的反馈下,AT32 MCU逐渐在全球微控制器市场中脱颖而出,最具代表性的超高性能AT32F435/437微控制器,一经推出便获得众多工程师青睐,该产品采用32位ARM® Cortex®-M4内核,创下M4业界CPU最高主频288MHz,并提供超大容量4032KB Flash和高达512KB SRAM,和丰富的外设资源,如2xOTG、2xQSPI、8xUART、2xCAN、4xSPI/I2S和3组5.33 Msps高速ADC独立引擎,使MCU能够处理更高阶、复杂的运算工作;此外产品集成数字摄影机并行DVP接口,可用于补捉CMOS影像摄影机所输出的并行数据;同时整合XMC接口,支持外接SDRAM、SRAM和PSRAM等储存器扩展储存空间,满足客户对可视化影像、听觉、触觉等操作应用要求。为了加快网络传输效率和稳定性,AT32F437还兼容IEEE-802.3 10/100 Mbps Ethernet以太网络控制器,协助开发人员降低设备物料成本,拓展应用领域,如物联网、工业控制、工业自动化、智能制造和5G通讯等。

2.png

AT32全系列MCU支持Pin-to-Pin接口,方便客户快速替换升/降级选型,且支持工业级芯片温度范围-40~105℃,适合应用于各种严苛的工业或户外场景。雅特力正全力投入打造一个全方位的MCU平台生态系统,专注于开发ARM® Cortex®-M4/M0+微控制器,不断提升CPU效能,推出相对业界更大内存、超低功耗、丰富外设的高性能产品,搭配自主研发sLib二次开发安全库,持续朝向28nm/40nm先进制程、高效能的市场研发精进。丰富多元的产品系列,不同尺寸的封装选择,具有竞争力的价格和良好的质量与服务,AT32 MCU各具特色的优势性能,协助客户共同实现终端智慧科技。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 18

11月6日,为期三天的ELEXCON深圳国际电子展暨嵌入式系统展在深圳会展中心(福田)盛大开幕!作为电子与嵌入式领域一年一度的行业盛会,吸引了众多业界人士的关注,现场汇聚了400+优质展商,雅特力作为32位微控制器的创新领导者,携工业控制、电机控制、消费电子、智能家居及汽车电子等五大领域近百款产品与方案亮相此次展会,全面展示了雅特力最新技术与成果,吸引了众多电子行业人士参观交流!

现场直击

开展首日,还有很多小伙伴没有来到活动现场,小编为大家带来新鲜出炉的现场实况,一览首日精彩瞬间!

AT32 MCU Family

AT32 MCU Family目前包含低功耗、超值型、主流型、高性能及无线型五大系列,此次展会重点展示了AT32F435、AT32F437系列超高性能MCU,主频高达288MHz;AT32WB415系列双模蓝牙BLE,已通过蓝牙SIG协会BQB认证;近期推出的AT32F4212系列双运放高性价比电机MCU,打造智慧精准的电机方案;以及即将推出的AT32L021系列入门级低功耗MCU,抢先一步获取新品信息和最新规格。

工业控制展区

雅特力不断拓宽市场领域及中高端市场,近两年不断在工控领域发力,AT32 MCU以高性能、高稳定性、高性价比、低功耗的优势在工业控制上得到越来越广泛的应用,此次展品中变频器、伺服驱动、PLC、微机综保、数字电源、断路器、DTU、授时服务器、BMS智能保护板等应用都备受关注。

1.jpg

电机控制展区

AT32 MCU搭配Cortex-M4F核心运算,具有快速高效的算法能力和高性价比的价格优势,可满足电机控制在系统复杂性、实时性和智能化等方面日益严苛的要求。现场展示了工业缝纫机控制器、无人机电调、智能无叶净化扇、高速风筒等电机应用,以及基于双ADC引擎AT32F413的低压电机开发板,运行了雅特力最新开发的电机库,可执行有位置传感器/无位置传感器FOC弦波矢量控制和120°方波BLDC电机控制,适用于多种电机驱动应用。

2.jpg

消费性应用展区

随着消费性应用需求的不断升级,使得对于MCU性能、集成度要求越来越高。雅特力持续深耕消费性应用领域,全系列搭载32位ARM® Cortex®-M4/M0+内核,在消费性领域有着相当成熟的应用经验,此次展会重点展示了读卡模块、数字对讲机、数位板、肩颈按摩仪等消费类电子产品,还有3D打印、纸币识别器、IP公共广播、VM二代呼吸机、注射泵等商务及医疗类电子产品。

3.jpg

智能家居展区

随着技术的进步和信息化程度的提高,以及人们对智能家电产品需求的提升,家电产品的智能化将会成为未来家电产品的主要形态。雅特力紧跟市场需求,坚持技术创新,全面促进家电产品实现智能化升级,本次展会现场展示了亚马逊智能开关、吸尘器、安防报警器、智能无叶净化扇等智能家居应用。现场还可以深度体验毫米波雷达在智能家居场景中的应用,通过AT32 MCU超强算力和搭配毫米波雷达,实现人体存在检测、距离检测、动态检测等功能。同时雅特力还提供IEC 60730安全B类库,帮助用户顺利通过IEC 60730 B类家电安全标准认证,快速研发出更安全、更可靠的产品。

4.jpg

车载应用展区

在汽车电子领域,AT32 MCU以高可靠、高安全、高性能等优势迅速占领部分市场,AT32F403A/F413系列MCU更是获得国内前三大汽车厂商采用并量产。目前在车载多媒体、ADAS/360全景、汽车仪表、T-Box、OBDII/CAN Box、车载协议盒等车载设备以及汽车尾箱控制、充电桩上得到大量应用。

5.jpg

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 19

雅特力AT32F421系列超值型Cortex®-M4 MCU,着眼于超低开发预算需求,发售价可媲美Cortex®-M0价格,自2020年9月正式发布,产品推出两年来受到市场用户一致认可,已经成功应用于电机控制、工业自动化、物联网及消费性电子等众多领域。

10月21日,雅特力推出全新AT32F4212系列超值型Cortex®-M4 MCU,在AT32F421系列产品基础上内置2路运算放大器OPA,有效简化电路设计节省物料清单成本。OPA具有放大电流和短路保护的作用,可用于电流检测,使用磁场定向控制(FOC),或者检测线路电流从而判断是否堵转等故障出现,然后及时关闭控制避免硬件出现损坏。同时有着开源增益高,输入阻抗大,输出阻抗小的特点,提供极好的低电平信号、输出高电压、大电流,可驱动各种负载,非常适用于电动工具,园林机械,E-bike,洗衣机,无人机,机械臂,高速风筒,吸尘器,排气扇,抽油烟机等电机驱动类应用。

AT32F4212继承AT32F421的性能优势,CPU最高支持120 MHz工作频率,内置高速嵌入式存储器,最高可支持64KB闪存存储器(Flash)及16KB随机存取存储器(SRAM),并内建数字信号处理器(DSP),是目前业界极具性价比优势的MCU产品,可运行于工业级芯片工作温度范围-40~105°C,供电电压2.4 V至3.6 V,省电模式可达到低功耗应用的要求。

1.pngAT32F4212系列配备丰富的接口资源来增强连接性。片上集成了多达2个USART、2个SPI(可复用I²S)、2个I²C、1个16位高级定时器、5个16位通用定时器和5通道DMA控制器。其丰富的片上资源分配、高集成及高性价比造就一流市场竞争力。同时还扩展了2个高速轨到轨输入/输出模拟电压比较器,1个采样率高达2M SPS的12位15通道高速ADC,2个运算放大器OPA,可充分满足高速数据采集、混合信号处理和工业控制与电机应用要求。几乎所有I/O口可容忍5V输入信号,且所有I/O口均为快速I/O,具有多种可选功能还支持端口重映射,极佳的灵活性和易用性满足多种应用需求。可广泛用于电机控制,健康医疗,物联网节点,工业自动化,安防,家用电器,电子玩具,机器人等设备。

雅特力AT32F4212系列MCU着眼于取代及提升传统Cortex®-M0/M3产品的解决方案,导入Cortex®-M4架构的高速主流平台,搭载雅特力自行开发的sLib安全库 (Security Library),可支持密码保护指定范围程序区,方案商烧录核心算法到此区域,提供给下游客户做二次开发,强化了产品本身的安全性、可靠性和二次开发的使用便利度,具有低成本、高能效和灵活性的优势。AT32F4212采用LQFP48 7x7封装,将于2022年10月开始提供样片。

2.png

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 73

IAP概述

工作原理

在应用中编程(IAP)是一种在现场通过 MCU 通信接口(例如 USART、USB、CAN 和以太网)进行固件升级的方式。

启动微控制器时,可以选择让其在以下任一模式运行:

  • IAP模式,用于执行IAP代码

  • 正常模式,用于执行应用程序代码

无论是IAP代码还是应用程序代码都位于微控制器的内置FLASH中,IAP代码通常存储在MCU FLASH的第一页,而用户应用程序代码则占据剩余的FLASH区域。

图1介绍了IAP操作流程

“图1

使用MCU以太网接口实现IAP

如果有以太网可用,则它通常是嵌入式系统中实现IAP功能的首选接口,其优势包含:

  • 高速通信接口(10/100 Mbps)

  • 通过网络(LAN或WAN)进行远程编程

  • 可以使用FTP、TFTP、HTTP等基于TCP/IP栈的标准应用协议实现IAP

通过以太网在AT32F407上实现IAP

本应用笔记将介绍两种使用以太网通信外设在AT32F407上实现IAP的解决方案:

  • 使用TFTP(简单文件传输协议)的IAP

  • 使用HTTP(超文本传输协议)的IAP

这两种解决方案均基于LwIP栈(2.1.2), 它是轻量级的TCP/IP协议栈

使用TFTP实现IAP方法

使用TFTP实现IAP的方法广泛应用于需要具有固件升级功能的嵌入式系统应用中(例如,嵌入式Linux bootloader中)。

TFTP是一种在UDP传输层上执行的简单文件传输协议。此协议非常适合在局域网环境中使用。它基于客户端/服务器架构,在这种架构中,客户端会向服务器发出文件传输请求(读取或写入操作)。为实现IAP,需要在LwIP协议栈上实现一个简单的TFTP服务器,服务器只须处理来自PC的TFTP客户端的写入请求即可。

使用HTTP实现IAP方法

使用HTTP协议进行固件升级没有使用TFTP常见,但是在需要通过Internet进行远程编程时,这种解决方案就显得极为有用。这时,需要使用TCP传输协议来实现HTTP服务。

HTTP基于TCP协议运行,它提供了一个一种以HTML表单形式从Web客户端(Mozilla Firefox或Microsoft Internet Explorer)发送一个二进制文件的方式。这称为HTTP文件上传(RFC1867)。

本文档中的后续章节将详细介绍这两种IAP方法的实现,并会对如何使用软件进行说明。

使用TFTP实现IAP

TFTP概述

TFTP是一种基于UDP的简单文件传输协议。文件传输由TFTP客户端发起,会向TFTP服务器发送读取或写入请求。服务器确认请求后,即开始进行文件数据传输。数据将以固定大小的块尽情发送(例如每块含512个字节)。

必须在每个发出的数据块都得到接收方确认后,才可以发送下一个数据块。这种确认机制通过随各个数据块一同发送的编块号来实现。数据块小于固定块大小表示文件传输的结束。

图2描述了各种TFTP数据包的格式:

“图2
图2 TFTP数据包

表1列出了TFTP操作码。

“表1
表1 TFTP操作码

使用TFTP为AT32F407实现IAP

此IAP实现由基于LwIP TCP/IP栈的TFTP服务器组成。

此服务器会对远程TFTP客户端(PC)发来的写请求做出响应。

TFTP读请求会被忽略。

TFTP通常会将接收到的文件写入到文件系统,但是该服务器却并非如此,它会将接受到的数据块写入到MCU FLASH(用户FLASH区域中)。

注:在这个实现过程中,数据块大小固定为512个字节。

图3概述了使用TFTP实现IAP操作的过程。

“图3
图3 使用TFTP实现IAP流程图

使用软件

要通过TFTP对IAP进行测试,需执行以下步骤:

1. 在iap.h文件中,取消USE_IAP_TFTP选项的注释。

2. 重新编译软件。使用生成的映射文件,确保IAP代码区域之间没有重叠(从地址0x0开始),而且用户FLASH区域从以下地址开始:APP_START_SECTOR_ADDR(在iap.h中定义)。

3. 在AT32 FLASH中编写并运行软件程序。

4. 要进入IAP模式,需要在按住开发版上的USER Key。

5. 分配完IP后(可以是静态或动态地址),用户即可启动IAP流程。

6. 在PC侧,打开TFTP客户端(例如Tftpd64),然后配置TFTP服务器地址(Tftpd64中的主机地址)

7. 单击Tftpd64实用程序中的Put(写入)按钮,启动文件写请求

8. 在IAP操作结束时,可以复位开发板并在AT32 FLASH中运行刚刚编写的应用程序

“图4
图4 TFTP64对话框

使用HTTP实现IAP

HTTP文件上传概述

RFC1867中定义了使用HTTP进行文件上传。此文件上传方法是基于HTTP表单。发送原始二进制数据时,要使用HTTP POST方法而不是GET方法。

以下是一个HTML代码示例,用于实现基于表单的文件上传:

“图5
图5 文件上传HTML表单的浏览器画面

注:在发送文件数据前,Web客户端会首先发送HTTP头文件数据,其中包含诸如文件名称和内容长度等信息,Web 服务器必须对其中的一些信息进行解析。

Web客户端使用的HTTP头文件格式并不总是相同。图6显示的是Internet Explorer在POST请求中的HTTP头文件格式。图7显示的是Mozilla Firefox的HTTP头文件格式。

HTTP Web服务器必须能够处理这些不同的格式。

“图6
图6 IE11 HTTP头文件格式

“图7
图7 Mozilla Firefox HTTP头文件格式

使用HTTP在AT32F407上实现IAP

此IAP实现由基于LwIP栈的HTTP Web服务器组成。

在浏览器中输入的AT32的IP地址后,将显示登录Web页面(图8)。此登录Web页面只有已获授权的用户才能使用IAP文件上传功能。

“图8
图8 登录web页面

注:1. 默认的User ID(用户ID)为user, Password(密码)为at32
2. 如果User ID(用户ID)或Password(密码)不正确,登录Web页面会重新加载。

登录成功后,浏览并选择要上传到AT32 FLASH的二进制文件

注:确保二进制文件大小不超过AT32用户FLASH区域的总容量。
单击Upload(上传)按钮后(参见图x),将向服务器发出POST请求。这时,服务器开始擦除用户FLASH区域的全部内容,等待接受二进制文件原始数据。然后将街收到的数据写入用户FLASH区域。

注意,要接收的数据总长度信息将从传输开始时发出的HTTP头文件数据中提取。

在IAP操作结束后,Web页面将只是IAP操作成功,同时显示一个可用于复位MCU的按钮。

“图9
图9 文件上传完成web页面

图10对使用HTTP实现IAP方法进行了总结

“图10
图10 使用HTTP实现IAP的流程图

使用软体

要使用HTTP对IAP进行测试,需执行以下步骤:

1. 在iap.h文件中,取消选项USE_IAP_HTTP的注释。

2. 重新编译软件,使用生成的映射文件,确保IAP区域代码之间没有重叠(从地址0x0开始),而且用户FLASH区域从以下地址开始:APP_START_SECTOR_ADDR(在iap.h中定义)。

3. 在AT32 FLASH中编写并运行软件程序。

4. 要进入IAP模式,需要再按住开发版上的USER Key。

5. 分配完IP地址后(可以是静态或动态地址),用户即可启动IAP流程

6. 打开Web客户端(Mozilla Firefox或Internet Explorer),输入AT32 IP地址

7. 会显示登录Web页面。在User ID(用户ID)字段中输入”user”,在Password(密码)字段中输入”at32”,然后按下Login(登录)按钮。

8. IP操作结束后,将加载新的Web页面,只是文件上传操作已经成功完成。

9. 可以按下Reset MCU(复位MCU)按钮复位MCU,然后在AT32 FLASH中运行刚刚编写的应用程序。

注:使用以下Web客户端对软件进行测试:Microsoft Internet Explorer 11和Mozilla Firefox 80.0

已知限制

二进制文件中添加的额外字节

Internet浏览器(Microsoft Internet Explorere或Mozilla Firefox)会在上传的二进制文件的末尾添加一个随机边界标记(根据RFC1521规定,此标记不得超过72个字节)。在最新的IAP软件版本中,并没有删除此边界标记,而是在空间足够的情况下将其存储在FLASH中。如果没有足够空间,则不会在FLASH中写入额外字节,也不会返回错误。

环境

硬件配置

1. DM9162以太网模块

2. AT-START-F407开发板

3. 以太网线

软件源码

utilities\at32f407_emac_iap_demo\source_code\bootloader, emac iap源程序,运行iap升级程序

MAC地址和IP地址设置

在netconf.h文件中对MAC地址进行了定义。

默认的MAC地址固定为:00:00:44:45:56:01。

在netconf.h文件中对IP地址进行了定义。

IP地址可以设置为静态地址,也可以设置为由DHCP服务器分配的动态地址。默认的静态地址为:192.168.81.37。

可以通过在lwipopts.h文件中使能LWIP_DHCP来选择DHCP模式。

软件文件组成

“表2
表2 介绍了项目源文件

注:表格中没有列出标准固件库和LwIP栈中所使用的文件。

构建IAP映像

为了构建IAP映像(将会使用IAP软件加载),应确保以下几点:

1. 编译/链接的软件必须从用户FLASH区域的起始地址开始运行(此地址应与iap.h的
APP_START_SECTOR_ADDR 中所定义的地址相同)。

2. 将向量表的起始地址配置为用户FLASH区域的起始地址:
A. 在应用程序代码中,使用misc.h/.c驱动程序的NVIC_SetVectorTable函数来重新定位应用程序加载地址的向量表。

例如,将向量表基本位置设置为0x08010000:

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);

B. 通过修改system_at32f4xx.c文件中定义的VECT_TAB_OFFSET常量的值。

例如,将向量表基本位置设置为0x08010000:

#define VECT_TAB_OFFSET 0x10000

3. 编译后的软件大小不超过用户FLASH区域的总容量。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 51

GPIO特性

  • 最大封装(48pin)具有39个多功能双向的I/O口

  • 所有I/O口都可以映射到16个外部中断

  • 几乎所有I/O口可容忍5V输入信号(4个LEXT / HEXT引脚除外)

  • 所有I/O口均为快速I/O,寄存器存取速度最高fAHB

  • I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器

  • 每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口

  • 可选的每个I/O口的电流推动/吸入能力

  • GPIO设置/清除寄存器(GPIOx_SCR)和GPIO清除寄存器(GPIOx_CLR)为GPIOx_ODT寄存器提供位访问能力

GPIO

GPIO在复位期间和刚复位后,复用功能未开启,大部分I/O端口被配置成浮空输入模式。

当作为输出配置时,写到输出数据寄存器(GPIOx_ODT)上的值会输出到相应的I/O引脚。可以以推挽模式或开漏模式(仅低电平被驱动,高电平表现为高阻)使用输出驱动器。

输入数据寄存器(GPIOx_IDT)在每个AHB时钟周期捕捉I/O引脚上的数据。

所有GPIO引脚有一个内部弱上拉和弱下拉,它们被激活或断开有赖于GPIOx_PULL寄存器的值。

“图1.
图1. GPIO基本结构

“表1.
表1. GPIO 配置表

GPIO toggle

AT32F421提供的I/O口均为快速I/O,寄存器存取速度最高为fAHB,所以可以看到GPIO翻转频率能够轻松达到60MHz:

“图2.
<图2. I/O翻转速度

IO引脚的5V or 3.3V容忍

标准3.3V容忍引脚(TC)

所有振荡器用到的引脚都是标准3.3V容忍引脚。

  • PC14/PC15 (HEXT_IN/ OUT)
  • PF0/PF1 (LEXT_IN/ OUT)

“表2.
表2. TC引脚示例

带模拟功能5 V容忍引脚(FTa)

比较器输入引脚以及ADC占用端口为带模拟功能5 V容忍引脚。

  • PA0 – PA7
  • PB0 – PB2,PB12 – PB15
  • FTa引脚设置为输入浮空、输入上拉、或输入下拉时,具有5V电平容忍特性;设置为模拟模式时,不具5V电平容忍特性,此时输入电平必须小于VDD + 0.3V

“表3.
表3. FTa引脚示例

其余的GPIO都为5V容忍引脚。

“表4.
表4. FT引脚示例

IOMUX

I/O复用功能输入/输出

  • 大多数外设共享同一个GPIO引脚(比如PA0,可作为TMR1_EXT / USART2_CTS /I2C2_SCL / CMP_OUT)
  • 而对某个具体的GPIO引脚,在任意时刻只有一个外设能够与之相连
  • 某些外设功能还可以重映射到其他引脚,从而使得能同时使用的外设数量更多

选择每个端口线的有效复用功能之一是由两个寄存器来决定的,分别是GPIOx_MUXL和GPIOx_MUXH复用功能寄存器。可根据应用的需求用这两寄存器连接复用功能模块到其他引脚。

“表5.
表5. 通过GPIOA_MUX*寄存器配置端口A的复用功能

“表6.
表6. 通过GPIOB_MUX*寄存器配置端口B的复用功能

“表7.
表7. 通过GPIOF_MUX*寄存器配置端口F的复用功能

特殊I/O

调试复用引脚

  • 在复位时,和复位后不像其他GPIO一样处于浮空输入状态,而是处于复用模式
  • PA13:SWDIO,复用上拉
  • PA14:SWCLK,复用下拉

振荡器复用引脚

  • 振荡器关闭的状态下(复位后的默认状态),相关引脚可用作GPIO
  • 振荡器使能状态下,相应引脚的GPIO配置无效
  • 振荡器处于bypass模式(使用外部时钟源)时,LEXT_IN/HEXT_IN为振荡器时钟输入引脚,LEXT_OUT/HEXT_OUT可做GPIO使用

备份域引脚

  • 当1.2V区域断电(当器件进入待机模式)时,PC13/PC14/PC15失去GPIO功能。在这种情况下,若GPIO配置没有被RTC配置为bypass,则这些引脚被设为模拟输入模式。

  • 以下内容在F421系列不存在: 模拟开关(power switch)只能通过少量的电流(3mA),在输出模式下使用PC13/PC14/PC15的I/O口功能是有限制的:只能工作在适中电流推动/吸入能力模式下,最大负载为30pF,而且这些I/O口绝对不能当作电流源(如驱动LED)。

GPIO固件驱动程序API

Artery提供的固件驱动程序包含了一系列固件函数来管理GPIO的下列功能:

  • 初始化配置
  • 读取输入端口或某个输入引脚
  • 读取输出端口或某个输出引脚
  • 设置或清除某个引脚的输出
  • 锁定引脚
  • 引脚的复用功能配置

注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

输出模式

GPIO提供了两种不同类型的输出模式分别是,推挽输出以及开漏输出,下面是输出模式的配置示例:

“AT32F421

输入模式

GPIO提供了三种不同类型的输入模式分别是,浮空输入、上拉输入以及下拉输入,下面是输入模式的配置示例:

“AT32F421

模拟模式

当需要使用ADC或CMP通道作为输入时,需要将相应的引脚配置为模拟模式,下面是模拟模式的配置示例:

“AT32F421

复用模式

1. 不论使用何种外设模式,都必须将I/O配置为复用功能,之后系统才能正确使用I/O(输入或输出)。

2. I/O引脚通过复用器连接到相应的外设,该复用器一次只允许一个外设的复用功能(MUX)连接到I/O引脚。这样便可确保共用同一个I/O引脚的外设之间不会发生冲突。每个I/O引脚都有一个复用器,该复用器具有16路复用功能输入/输出(MUX0到MUX15),可通过gpio_pin_mux_config()函数对这些引脚进行配置:

— 复位后,所有I/O都会连接到系统的复用功能0(MUX0)
— 通过配置MUX1到MUX7可以映射外设的复用功能

3. 除了这种灵活的I/O复用架构之外,各外设还具有映射到不同I/O引脚的复用功能,这可以针对不同器件封装优化外设I/O功能的数量;例如,可将USART2_TX引脚映射到PA2或PA14引脚上。

4. 配置过程:

— 使用gpio_pin_mux_config()函数将引脚连接到所需的外设复用功能(MUX),例如配置PA0作为TMR1_EXT输入
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE0, GPIO_MUX_4);

— 使用GPIO_Init()函数配置I/O引脚:

- 通过以下方式配置复用功能模式下的所需引脚
gpio_init_struct.gpio_mode = GPIO_MODE_MUX;

- 通过以下成员选择类型、上拉/下拉和驱动力
gpio_out_type、gpio_pull和gpio_drive_strength成员

根据上述配置过程,下面将介绍几种外设的常用配置示例。

USARTI/O复用模式配置

“AT32F421

TMR I/O复用模式配置

“AT32F421

I2C I/O复用模式配置

“AT32F421

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 470

电子科技产品迭代更新,消费性产品逐步迈向智能化,且绿色环保意识提升,随写即丢的纸本已渐渐无法满足数字时代需求,数位板也就此诞生。数位板属于计算机输入设备的一种,由一块电子平板和一支电磁感应笔所组成。相较传统绘图工具,数位板能通过USB或蓝牙BLE与计算机设备连接,直接将数据传送至计算机屏幕上显示手绘效果,在作业效率及图像质感细致度上大幅提升,目前生活中,如医院、银行、电信业的电子签名,以及教育产业、创作设计等,都十分常见。

数位板采用的是电磁式感应原理,依靠电磁笔操作过程中和面板下的感应天线产生磁场变化来判别,电磁笔为信号发射端,主机中电磁感应板为信号接收端,当接近感应时磁通量发生变化,经由精密放大器放大后传送到A/D转换电路进行信号采集,通过A/D转化后由MCU读取,并且通过MCU算法,处理计算接触点的坐标,最后在PC或LCD液晶屏幕上显示。过去因手指的摩擦力太大,无法呈现较精细的笔划,同时由于数位板系统的规格大小与功能特性局限,因此开发出了电磁感应笔,用来作为手写面板与用户的媒介,笔划精确度高、反应速度快,能够实现接触点的坐标显示、图像显示及轨迹显示等功能,当用户在数位板上画图、写字或描绘图形时,通过MCU能够迅速跟踪电磁感应笔的动作,使图形完整地在PC或LCD上显示轨迹。

“雅特力AT32

雅特力AT32 MCU采用32-bit ARM® Cortex®-M4/M0+内核,具有高性能、高精度及高稳定性优势等,特别适合用来解决手写识别问题,使用上更加贴近使用者习惯,并且提供三种低功耗电源模式,包括睡眠、深睡眠和待机状态,使产品在长时间工作下,仍可维持适当的电流消耗。如超值型AT32F415系列和无线型AT32WB415系列,主频高达150MHz,最高可支持256KB Flash和32KB SRAM,同时内建USART/SPI/I2C/OTG/CAN等标准通讯接口,便于开发者连接各类无线模块、传感器等扩充产品功能,满足多种应用需求。

AT32F415系列和AT32WB415系列MCU产品应用特点

  • 丰富外设整合UART、SPI、I2C、USB OTG、CAN等多种标准通讯接口,产品应用领域广泛

  • 内建12-bit独立ADC,2Msps采样率,可同时运作,且多达8个采样高速通道,提高量测位置坐标分辨率

  • 宽电源电压范围2.6-3.6V,有助量测值恒定及提升可靠性

  • 采用BLE5.0 SoC芯片,支持蓝牙2.4GHz频段,Rx灵敏度可达到-97dBm,Tx值介于-20dBm~+4dBm之间,有效范围传输超过30m,实现高识别精度和控制功能(仅限AT32WB415系列)

  • 支持工业级别温度范围-40℃~105℃,即便处在恶劣环境下仍可长期稳定操作

  • 搭配雅特力提供丰富的开发软件工具,简单设定即可完成操作设计

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 32

页面

订阅 RSS - 雅特力