i.MX RT

在i.MX RT微控制器上初始化LWIP协议栈是一个复杂但有趣的过程,它涉及多个步骤和关键组件的配置。以下是该初始化流程的介绍:

LWIP协议栈与开发平台简介

LWIP(Light Weight IP),是一种轻量化且开源的TCP/IP协议栈。LwIP在有限的RAM和ROM条件下,实现了一个完整的TCP/IP 协议栈,并且LwIP在MCU平台上得到了非常广泛的应用。此外,它既可以基于操作系统运行,也可以在裸机情况下运行。

TCP/IP协议栈的模型结构如下图所示:

1.png

本篇文章基于i.MX RT四位数跨界MCU平台,RT四位数跨界MCU最高主频可达1Ghz,并且搭载了很多性能强劲的外设,广泛的应用于工业,自动化,IoT,消费电子等领域,并且NXP官方提供免费的IDE,开发工具以及SDK软件包等,为开发者提供了全面的支持。

以太网接口及PHY管理接口硬件初始化

Ethernet MAC与PHY之间通过以太网接口连接,常见的接口有RMII,MII等。与此同时,RT四位数上的Ethernet MAC外设也配备了PHY管理接口,可通过MDC MDIO来实现PHY相关寄存器的读写。

此处以RT1060举例,在RT1060 EVK上默认使用的是RMII以太网接口,对照原理图完成RMII相关管脚的初始化。

2.png

MDC,MDIO初始化:

3.png

PHY INIT以及RESET管脚初始化,配成GPIO输出即可:

4.png

RMII的TX_CLK由MCU提供,因此要将TX_CLK的方向配置为输出:

5.png

至此,以太网接口,PHY管理接口等硬件配置基本初始化完成。

LWIP时基初始化与超时事件注册

在LWIP中,经常会进行一些超时判定,例如ARP缓存表的时间管理,IP分片数据报的重装等待超时等等,并且LwIP也提供了超时事件注册函数sys_timeout,在RT1060官方SDK的ping bm demo中就是通过超时事件来发送ping请求。

而超时的判定需要一个时基,MCU中一般会用系统滴答定时器来作为时基,且时间间隔设置为1ms并开启中断。每一次进中断都会将当前时间加1。设置滴答定时器的代码如下图所示。

6.png

在LWIP协议栈初始化时,也需要注册一些超时事件,通过调用sys_timeout函数,该函数中又会调用sys_timeout_abs函数。

在sys_timeout_abs函数中会计算出超时事件即将超时的时间,并且根据超时时间将这些超时事件连接成一个链表,如下图所示。当超时发生时就会调用对应的处理函数。

7.png

SDK中会把需要注册的超时事件都放在一个数组中,在初始化时调用注册函数去一个个注册这些超时事件。超时事件数组如下图所示。

8.png

LWIP内存堆内存池初始化

在LwIP中,内存分配策略一般有两种,一种是分配固定大小的内存块。如TCP 首部、UDP 首部,IP 首部,以太网首部等都是固定的数据结构,其大小就是一个固定的值,那么我们就能采用这种方式分配这些固定大小的内存空间,这样子的效率就会大大提高。另一种是利用内存堆进行动态分配,属于可变长度的内存块。

在LWIP协议栈初始化时一定要对这两种内存分配方式进行初始化,方便后续协议栈进行相关内存分配。内存堆初始化代码如下所示,其中LWIP_RAM_HEAP_POINTER实际上就是分配的内存堆数组首地址。

9.png

内存堆数组大小为想要分配的内存堆大小对齐后再加上两倍的mem结构体对齐后的大小,mem结构体中会存放一些内存堆相关管理信息,宏定义如下图所示。

10.png

不难看出在内存堆初始化代码中实际上就是初始化了两个mem结构体。第一个mem结构体在内存堆起始地址处,next成员为MEM_SIZE_ALIGNED, prev和used成员皆初始化为0。

第二个mem结构体ram_end设置为内存堆首地址偏移MEM_SIZE_ALIGNED处,used变量设置为1,next和prev皆指向偏移MEM_SIZE_ALIGNED的位置。

内存池初始化函数为memp_init,如下图所示。它使用轮询的方式调用memp_init_pool去初始化每一类内存池,memp_pools数组中存放了初始化过的memp结构体。

11.png

在memp_init_pool中会根据初始化过的memp结构体中的一些参数,比如下图中所示的num,num代表有多少个内存块,memp_init_pool中会根据num将内存块连接成单链表。

12.png

网卡挂载及初始化

调用netif_add来挂载网卡,netif结构体是抽象出来的网卡结构体,IP地址,网关,子网掩码等都会保存在该结构体中。网卡初始化函数也会作为参数之一传入netif_add函数,并在netif_add函数中被调用。在该初始化函数中最终会完成以下几部分初始化:

1.以太网相关数据结构的初始化,包括rx_buffer, tx_buffer, buffer descriptor,buffer descriptor ring。初始化这些数据结构,以便在接收发送以太网数据时使用。

2.phy的初始化,初始化以太网外设中的MDC MDIO,如下图所示。

13.png

通过MDC MDIO去操作PHY相关的寄存器,例如去配置PHY的百兆千兆模式,软复位PHY,检查自动协商,连接状态以及配置LED等等。确保PHY工作在想要的状态下,部分初始化PHY的代码如下所示。

14.png

3.设置netif相关参数,例如MAC地址长度,MTU,flags,以及网络接口层输入,网络接口层输出函数等。

4.初始化Ethernet MAC外设,去配置以太网外设中的接口类型,速度,工作模式,中断等等。部分配置代码如下所示。

15.png

LWIP不同API初始化

在完成上述初始化流程之后,还需要调用一些LwIP提供的API,LwIP常用的API有RAW API, Socket API, NETCONN API三种,前者是不需要基于操作系统的,后两者需要基于操作系统运行。这三种API在初始化时也是不同的,Socket API和NETCONN API类似,此处以RT1060 SDK中的ping demo来举例说明。

首先是RAW API,在raw.c中定义了一个raw_pcb结构体,初始化时会定义一个新的raw_pcb结构体并插入raw_pcbs链表。并且给新定义的raw_pcb赋初值,如下图所示,通过raw_recv绑定ping_recv函数。通过raw_bind绑定IP地址,并且注册一个超时事件,超时时就调用ping_timeout函数,参数为ping_pcb。在ping_timeout函数中会发送ping请求。

16.png

当LWIP跑在操作系统上时,LWIP协议栈是作为一个独立线程存在的。因此,在初始化时要创建tcpip_thread线程。用户代码与tcpip_thread线程之间是通过邮箱进行数据的交互的。因此,在初始化时也需要创建一个邮箱。

17.png

在使用Socket API时,首先要调用lwip_socket函数向内核申请一个套接字,然后调用setsockopt设置套接字的一些选项。接着就可以调用lwip_sendto函数去发送数据包。调用recvfrom函数接收数据包。

至此,在i.MX RT使用LwIP协议栈初始化流程介绍完毕,通过理解和实践这些步骤,开发者可以在i.MX RT微控制器上成功初始化LWIP协议栈,并实现网络通信功能。

总体看来,整个初始化流程还是相对复杂的,这个过程不仅涉及硬件驱动编程和TCP/IP协议栈的配置,还需要对内存管理、中断处理、超时检查等关键知识点有深入的理解。感兴趣的读者可以下载RT四位数的SDK深入了解。

来源:恩智浦MCU加油站

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

围观 21

最近碰到一个客户,他们在 i.MX RT500 上使能了 FlexSPI->MCR0[RXCLKSRC] = 2(即 loopbackFromSckPad),这个选项字面上的意思是设置读选通采样时钟源为 SCK 引脚,这个选项在恩智浦官方的代码包里未曾使能过。

客户在使用过程中遇到高频时 SCK 引脚被降压的问题(从正常的 1.8V 降至 1.2V),那么这个 loopbackFromSckPad 选项到底是什么作用,以及有什么使用限制呢?

注1: 参考手册里显示支持loopbackFromSckPad选项的型号有 i.MX RT1040/1050/1060/1064/1180/500

注2: 参考手册里没有提及支持loopbackFromSckPad选项的型号有 i.MX RT1010/1015/1020/1024/1160/1170/600

一、为什么存在Read Strobe?

对于串行 SPI 接口存储器,FlexSPI 外设主要支持如下两种读数据时序:一是所谓的经典 SPI 模式,IO0 (MOSI) 专用于发送命令和地址,IO1 (MISO) 专用于接收数据(图中上面的时序)。二是 Multi-I/O SPI 模式,SIO[n:0] 一起用于发送命令地址以及接收数据(图中下面的时序)。

显然经典 SPI 模式下 IO[1:0] 是单向的,而 Multi-I/O SPI 模式下,SIO[n:0] 是双向的。当 SIO 用于双向传输时,过程中必然存在引脚方向切换,而 FlexSPI 外设在处理 SIO 方向切换时,无法做到零等待周期读取数据,这就是为什么 Multi-I/O SPI 读时序中总是会存在 Dummy 周期。

1.png

因为 Dummy 周期的存在,FlexSPI 外设内部实际上有一个 Read Strobe 信号(即 DQS)来控制数据的选通性(即什么时候开始数据有效,将数据存入内部 FIFO)。更直白点说,Read Strobe 信号的存在就是由于 FlexSPI 外设无法支持如下这种情况的读时序(下图中 COMMAND 实际应为 COMMAND&ADDR)。

2.png

二、FlexSPI内部Read Strobe设计

在i.MX RT参考手册里有如下 FlexSPI 前端采样单元框图,其中 ipp_ind_dqs_fa/b_int[x] 即是 Read Strobe 信号,它控制着 FIFO 中实际数据的存储。

3.png

ipp_ind_dqs_fa/b_int[x] 信号共有四种来源,最原始的信号源由 FlexSPI->MCR0[RXCLKSRC] 选择,中间可能还会经过 DLLxCR 单元(这部分以后会另写文章单独介绍)、Phase Chain 单元做处理,然后送到采样单元里。

4.png

下图是 FlexSPI->MCR0[RXCLKSRC] = 0 的情况,此时 Read Strobe 经由 ipp_do_dqs0_fa/b 纯内部 loopback 回来,没有经过任何延迟单元。这种配置一般仅用于经典 SPI 传输模式(低速 60MHz SDR 场合),适用低容量 SPI NOR / EEPROM,这时候 FlexSPI DQS Pad 可用作其它功能或者 GPIO。

5.png

下图是 FlexSPI->MCR0[RXCLKSRC] = 1 的情况,此时 Read Strobe 经由悬空的 DQS 引脚 ipp_do_dqs1_fa/b 再 loopback 回来,此时有了 DQS 引脚绕一圈的延迟。这种配置可用于 Multi-I/O SPI 传输模式(较高速 133MHz SDR 场合),适用不含 DQS 引脚的大容量 QuadSPI NOR Flash,但是 FlexSPI DQS Pad 需要悬空。

注: 有一篇旧文 《使能串行NOR Flash的DTR模式》 跟这种配置相关,这时候 dummy cycle 数的设置很关键。

6.png

下图是 FlexSPI->MCR0[RXCLKSRC] = 3 的情况,此时 Read Strobe 完全由外部存储器的 DQS 引脚输出 ipp_ind_dqs3_fa/b 直通进来。这种配置可用于 Multi-I/O SPI 传输模式(最高速 166MHz/200MHz DDR 场合),适用于包含 DQS 引脚的 OctalSPI NOR Flash,这时 FlexSPI DQS Pad 与外部存储器相连。

注: 我有两篇旧文 《串行NOR Flash的DQS信号功能》、《启动含DQS的Octal Flash可不严格设Dummy Cycle》 跟这种配置相关。

三、loopbackFromSckPad选项意义

前面铺垫了那么多,终于来到本文的主题了,即下图 FlexSPI->MCR0[RXCLKSRC] = 2 的情况,此时 Read Strobe 经由 SCK 引脚 ipp_ind_sck_fa/b 再 loopback 回来,此时有了 SCK 引脚绕一圈的延迟。

这种配置从应用角度与 FlexSPI->MCR0[RXCLKSRC] = 1(即 loopbackFromDqsPad) 差不多,也可用于 Multi-I/O SPI 传输模式(较高速 133MHz SDR 场合),适用不含 DQS 引脚的大容量 QuadSPI NOR Flash,但是这时候 FlexSPI DQS Pad 被解放出来了,这也是它的最主要意义。

7.png

别小看只是省了一个 DQS 引脚,也许你认为 i.MX RT 有那么多I/O ,省一个引脚意义不大,但是如果某些 FlexSPI 引脚组不带 DQS 信号,你又想配置 FlexSPI 以 60MHz 以上频率去访问 Flash,这时候 FlexSPI->MCR0[RXCLKSRC] = 2 选项就会帮上大忙了,见旧文 《不支持DQS的FlexSPI引脚组连接串行NOR Flash注意事项》

四、loopbackFromSckPad使用限制

FlexSPI->MCR0[RXCLKSRC] = 2 选项虽好,但有如下两个实际使用限制:

  • 存在信号完整性问题:主要出现在 SCK 频率过高或者板级 PCB 上 SCK 信号走线过长时。

  • SCK自由运行模式下不可用:对于某些 FPGA 应用,有时需要设置 FlexSPI->MCR0[SCKFREERUNEN] = 1,即 SCK 需要持续给外部设备内部 PLL 提供参考时钟。

来源:恩智浦MCU加油站

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

围观 25

关于FlexSPI外设的lookupTable,之前写过一篇非常详细的文章 《从头开始认识i.MX RT启动头FDCB里的lookupTable》,这篇文章几乎可以帮助解决所有串行QuadSPI NOR Flash(四线) 以及Octal Flash(八线)的读时序配置问题,因为这些Flash都只用单一行地址(Row Addr)来寻址。

但是市面上也有一些特殊的存储器(比如八线HyperBus Flash/RAM,OctalRAM等)采用了行列混合寻址方式,对于这类存储器,我们在FlexSPI里配置读时序,尤其是读时序里的地址序列参数值时需要稍微注意一下,今天就来聊聊这个话题:

一、FlexSPI外设关于行列地址 Memory支持

先来看FlexSPI外设是如何支持行列混合寻址存储器的。

在FLSHxxCR1寄存器里有CAS控制位,这里配置的即是存储器列地址(Column Addr)位宽。对于不支持列地址的存储器,CAS需要设置为0;如果存储器支持列地址,那么CAS需要根据存储器实际情况来设置。

“理解i.MX

如果FLSHxxCR1[CAS]位不为0,那么FlexSPI外设在传输时序里会拆分实际映射Flash Address(即存储器自身偏移地址)为行地址FA[31:CAS]和列地址[CAS-1:0]来分别传输。

“理解i.MX

在最终lookupTable里我们可以用这样的时序配置来实现存储器的读访问,这里RADDR_DDR子序列即传输行地址,CADDR_DDR子序列即传输列地址(注:如下示例是在FLSHxxCR1[CAS] = 3的设置下)。

“理解i.MX

看到这里,似乎已经把FlexSPI对于行列地址Memory的支持讲完了。

但是我相信你还是会有疑问,上面序列表里RADDR_DDR和CADDR_DDR具体参数值设置似乎没有讲清楚,为什么行列地址加起来位宽是0x18 + 0x10一共40bit(一般 Memory行列地址总位宽也就32 bit)?并且明明CAS值只是 3,为何CADDR_DDR 里设成0x10也行?

是的,这里需要再详细展开!

首先我们要明白一点,因为FlexSPI连接的是八线Memory,在实际总线上行、列地址传输位一定都是8bits的整数倍,如果RADDR/CADDR_DDR参数值设置得不是8bits的整数倍,不足8bits的部分,FlexSPI会自动在低位插入相应保留位(即下图低保留bits,这些保留位的值是什么不确定,对FlexSPI来说也不在乎),然后在 RADDR/CADDR_DDR设置的参数值范围内,如果对应Memory实际行、列地址位宽小于参数值,超出实际行、列地址的部分会被FlexSPI自动填入0值(即下图高亮填充bits)。

“理解i.MX

二、常见行列混合地址Memory 读配置实例

大部分 HyperBus Flash/RAM 在行、列地址设计上是一样的,这里罗列了市面上常见的型号如下,我们就以MIMXRT1050-EVKB板卡上那颗S26KS512为例来介绍。

1、ISSI的IS26KSxxx系列HyperFlash
2、ISSI的IS66/67WVH系列HyperRAM
3、Cypress/Infineon的S26KSxxx系列HyperFlash
4、Cypress/Infineon的S80KSxxx系列HyperRAM
5、Winbond的W957D8、W959D8系列HyperRAM

我们在S26KS512手册里可以找到如下读时序图,主要关注时序最前面48bits的Command-Address序列,在手册Command / Address Bit Assignments表里有这48bits的详细定义,其中CA[37:16] 是行地址与高位列地址,CA[2:0] 是低位列地址。

“理解i.MX

“理解i.MX

再来看 \SDK_2_12_0_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\flexspi\hyper_flash\polling_transfer 例程里的如下lookupTable,RADDR_DDR参数值是0x18,CADDR_DDR参数值是0x10,根据上一节的分析,RADDR_DDR里的高2bits会被FlexSPI设为0(RADDR[21:0]用于传输CA[37:16])。

因为CAS = 3,所以CADDR_DDR里的高13bits也会被FlexSPI设为0(CADDR[2:0]用于传输CA[2:0]),这是符合S26KS512手册时序定义的。

flexspi_device_config_t deviceconfig = {
    .columnspace          = 3,
    .enableWordAddress    = true,
};

const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {
    /* Read Data */
    [0] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0xA0, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),
    [1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_READ_DDR,  kFLEXSPI_8PAD, 0x04),
};

三、特殊行列混合地址Memory 读配置实例

最近我们在支持客户的过程中也发现了一些Memory有着不一样的行、列地址设计,比如如下这颗IS66WVO OctalRAM。从手册里找到其Command / Address bit assignment表里48bits的定义。与上一节HyperBus Flash/RAM不一样的是,其高位列地址并不是在8bits对齐处出现的。

1. ISSI出品的IS66/67WVO系列OctalRAM

“理解i.MX

“理解i.MX

对于IS66WVO这样的行、列地址设计,我们在lookupTable里该如何填入RADDR/CADDR_DDR参数值呢?首先CAS设为4,CADDR_DDR设为0x08可以解决CA[3:0]传输问题。

现在的重点是RADDR_DDR参数值,总共24bits传输位,低位还需要留2个保留位,所以RADDR_DDR仅能被设为0x16(RADDR[20:2]用于传输RA[12:0] + CA[9:4]),即如下面代码:

flexspi_device_config_t deviceconfig = {
    .columnspace          = 4,
    .enableWordAddress    = false,
};

const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {
    /* Read Data with continuous burst Sequence in DDR command mode */
    [0] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0xA0, kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0x00),
    [1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x16, kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x08),
    [2] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DUMMY_DDR, kFLEXSPI_8PAD, 0x1E, kFLEXSPI_Command_READ_DDR,  kFLEXSPI_8PAD, 0x04),
};

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

围观 62

随着可扩展计算平台和网络显示器的兴起,汽车业正经历大规模的技术驱动型变革,完全连接的汽车逐渐成为规范。在显示器、信息娱乐系统和远程信息处理技术的最新创新的推动下,两轮车行业紧随其后,智能互联的两轮车应运而生。

01、智能互联的两轮车市场不断增长

两轮车市场包括各种等级和大小的摩托车,不仅有大型旅游摩托车和通勤自行车,还有更小的入门级摩托车和电动摩托车。大多数摩托车和滑板车都使用传统的内燃机 (ICE)。电动车辆也越来越受欢迎,部分原因是燃料价格不断上涨,以及维护内燃机车辆的成本和复杂性更高。电动车辆领域不断推出价位各异的双轮车型,许多具有卓越性能,对于通勤者而言续航里程更长。

两轮车在拥挤的道路上易于驾驶和操纵,同时燃油效率更高、碳排放更低,不失为一种有趣且经济的出行方式。有了这些优势,两轮车市场将继续在全球扩张,在未来数年拥有巨大的增长潜力。2021年,世界大多数地区的两轮车市场都出现了增长,尤其是在亚洲。Imarc集团研究发现,印度的两轮车市场销量在2021年达到1520万辆,预计到2027年将超过4200万辆。中国的两轮车行业发展迅速,除了与本田、铃木和宝马等领先品牌建立合资企业外,中国还有逾200家公司生产摩托车,已成为全球规模最大的市场。

与汽车市场类似,摩托车和踏板车制造商每年都会推出更快、更安全、更先进的车型,不断采用新技术提升用户体验。一个典型的例子是薄膜晶体管 (TFT) 显示器的出现,取代了旧式速度计/转速计表盘和其它数字模拟器。

我们都很熟悉智能手机、手持视频游戏、PC显示器和汽车信息娱乐系统上的TFT显示器。两轮车的最新TFT显示器整合并展示一系列重要的驾驶信息(路速、发动机转速、燃油水平和能效、发动机和环境温度、变速指示器、胎压、牵引力控制和导航),让您一目了然。

“i.MX
i.MX RT1170跨界MCU演示

设计两轮车的TFT显示器时,骑行人的安全性、便捷性和舒适性需要优先考虑。底层接口、处理、通信和远程信息处理技术与汽车信息娱乐系统的设计类似。

恩智浦是汽车信息娱乐系统片上系统 (SoC) 解决方案的领导者(数据来自Strategy Analytics的2021年两轮车市场份额信息),提供广泛的应用处理器、微控制器 (MCU)、软件和工具组合,帮助开发人员为两轮车市场创建下一代TFT显示器。

02、领先的两轮车信息娱乐系统处理平台

恩智浦的i.MX RT系列跨界MCU在两轮车中的应用方兴未艾,支持新车型获得与汽车信息娱乐系统显示器类似的新骑行信息、舒适性和安全性功能。两轮车手柄控件没有空间容纳多个显示器,因此主TFT显示器必须以简单、整洁的方式显示和传达各种信息和导航功能。 

了解i.MX RT1170跨界MCU在摩托车电动汽车表盘中的应用。

恩智浦的i.MX RT跨界MCU使两轮车TFT显示器成为骑行人和汽车传动系统、安全系统和远程信息处理系统通信的中心舞台。它可以为用户带来:

  • 搭载导航功能的两轮车显示器,搜索城市路线比使用智能手机更方便、便捷。 

  • 远程车辆诊断和远程信息处理功能,使无线更新 (OTA) 可以直接推送到摩托车或踏板车上,而不是要求骑行人将车辆带到车库手动更新。 

  • 传感器通过CAN总线相连,实时监测车辆 (从胎压到燃油) 的运行状况。 

  • 通过蓝牙连接智能手机,可以在屏幕上发出呼叫通知,使骑行人可以选择停止、停车、应答或拒绝呼叫。 

  • 通过蓝牙连接智能头盔,还可以为骑行人提供音频导航功能并接受语音指令。这些音频/视频播放功能虽然不是核心功能,但为两轮车显示器设计锦上添花。 

  • 当今的信息娱乐系统尽可能无缝地整合了远程信息处理、导航和无线通信功能。通过车联万物通信 (C-V2X),汽车和两轮车可以与其他车辆和交通管理系统共享实时信息,并协调关键安全措施和操作以避免交通危险。 

两轮车TFT显示器可支持新的创新应用,例如接收实时车辆信息、定位最近的公共停车位和加油站或电动汽车充电站、共享服务更新和警报、远程锁定和解锁摩托车、实现免提智能手机门禁、跟踪/找到被盗车辆等等。

在当今按需数字化的世界中,车辆需要一种时尚而简单的方式将复杂的信息传达给驾驶员。旋钮、按钮和模拟量表正逐渐被智能触摸屏和高分辨率2D/3D彩色显示器取代,彩色显示器拥有逼真的视觉渲染效果。恩智浦的i.MX跨界MCU产品组合为各种显示应用程序 (从入门级显示器到高端混合显示器) 提供经济高效的处理和控制解决方案。

03、i.MX RT为两轮车带来先进技术

虽然恩智浦的i.MX 6和i.MX 8系列应用处理器已在汽车市场广泛应用多年,但最近,恩智浦的i.MX RT跨界MCU在低端汽车和两轮车的显示器、仪表盘和远程信息处理系统方面获得了广泛的关注。i.MX RT跨界MCU为车辆显示器提供了两全其美的性能:高性能和微处理器的集成,以及MCU的低成本、易用性和实时功能。 

恩智浦利用在汽车市场多年的经验开发出具有强大功能的跨界MCU:

  • 基于高能效Arm®️ Cortex®️-M CPU内核,实现高性能实时处理 

  • 功能丰富的人机界面 (HMI) 和连接选项,具有人工智能 (AI) 和机器学习 (AI/ML) 功能 

  • 经济实惠的内存扩展和高度集成的设计,可优化物料清单 

  • AEC-Q100汽车设计和产品长期供货计划认证

  • 便于使用的软件、AUTOSAR MCAL服务、工具和综合生态合作体系 

  • 符合ISO 26262道路车辆功能安全标准定义的汽车安全完整性等级 (ASIL) 危险级别方案 

“面向汽车应用的i.MX
面向汽车应用的i.MX RT跨界MCU

恩智浦重视功能安全,将其作为核心竞争力,尤其是汽车市场的功能安全。i.MX RT1170i.MX RT1180跨界MCU是质量管理 (QM) 级器件,能够使用附加硬件支持ASIL-B解决方案。 

无论是在易于使用的软件工具方面,还是在生态合作体系伙伴关系方面,设计支持都是选择处理平台和开发解决方案的一个最重要方面。恩智浦及其生态合作体系伙伴提供全面的支持,使开发人员能够快速入门并快速进入全面的产品开发——直至大规模生产。

此外,MCUXpresso软件和工具套件为恩智浦通用跨界MCU产品组合提供统一的体验 。 

i.MX RT1170跨界MCU是首个温度范围为-40°C至+125°C的自动认证i.MX RT产品。这款MCU功能丰富,具有两个高性能内核平台和一流的多媒体功能。i.MX RT1170 SoC拥有支持矢量图形和OpenVG库的2D GPU。除了RGB显示器和并行CMOS传感器摄像头接口外,i.MX RT1170跨界MCU还支持MIPI CSI和DSI,为开发人员提供更多选择,让其可以选择合适的显示器和摄像头解决方案。

目前,i.MX RT1180跨界MCU已投入前期生产,其五个1Gb端口时间敏感网络 (TSN) 交换机将满足低端远程信息处理的要求。 

04、设计面向21世纪的两轮车TFT显示器

2020年,多功能一体式TFT显示器开始在选定的摩托车和踏板车型号中首次亮相,而现在,这些先进的骑手显示器已成为当今最新两轮车必备的功能。

了解恩智浦广泛的跨界MCU和支持解决方案产品组合如何帮助加快您的下一代两轮车TFT设计,更详细的信息请访问i.MX RT1170i.MX RT1180产品官网。

▲本文作者Shweta Latawa,恩智浦半导体边缘处理业务汽车细分市场经理

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

围观 27

看门狗模块(WDOG)在MCU应用里可以说是非常基础的功能模块。对于一个产品级的应用程序,如果它没有使能主控内部的看门狗模块,一般都不能算是一个合格的软件设计。

有的时候,硬件工程师觉得片内看门狗不可靠,还会在板级设计里再加入外部看门狗电路。

总之看门狗对于产品工作稳定性具有很重要的意义。

最近有一个i.MX RT客户注意到了芯片手册System Boot章节里提及了WDOG应用,想使能这个功能,并且要确认该功能真实生效以及评估对后续应用程序的影响。

借助客户的问题,我们来细聊下这个话题。

一、WDOG模块简介

首先我们来了解一下i.MX RT1xxx系列内部的WDOG模块,在i.MX RT1xxx内部一共有三个WDOG模块(WDOG1/2/3),虽然WDOG本质上就是个特殊功能定时器,但因为芯片设计时为其赋予的超时触发行为不同,所以其应用场合并不一样。

1.1 系统看门狗WDOG1/2

WDOG1和WDOG2属于系统看门狗,前者用于系统级复位(产生WDOG_RESET_B_DEB信号给SRC模块)防止系统发生异常,后者用于系统SNVS域安全警报(不会产生复位效果)。

不过从模块寄存器角度,WDOG1和WDOG2是一样的,因此除了超时触发行为外,它们其余方面特性是一样的:

“系统看门狗WDOG1在i.MX

1、模块内部两个计数时钟源是固定的,来自ipg_clk_32k以及anatop_xtal32k_clk 。

2、模块内部8bit定时器(Time-Out Counter)用于产生WDOG_RESET_B_DEB复位信号,计时精度固定为0.5秒,超时可设范围为0.5秒到128秒。

3、块内部定时器(Power Down Counter)用于产生对外输出的复位信号WDOG_B,其超时时间固定为16秒。

4、模块对外输出的信号最多有三个: WDOG_RST_B_DEB、WDOG_B、WDOG_ANY(仅WDOG1)。

5、模块使能信号WDOGx->WCR[WDE]可多次设置(并不是一次复位期间仅可write one once)。

6、模块配置寄存器与定时器计数值可直接修改。

7、模块Time-Out Counter默认是关闭的,Power Down Counter默认是开启的。

1.2 内核看门狗WDOG3(4)

WDOG3有时候又叫RTWDOG(对于i.MX RT1170,还存在用于默认CM4从核的WDOG4),属于内核看门狗,主要用于复位内核,防止程序陷入死循环。其模块寄存器跟WDOG1/2完全不同,更接近于一般的定时器模块设计:

“系统看门狗WDOG1在i.MX

1. 模块内部计数时钟源有四种选择,Bus clock / LPO clock / INTCLK / ERCLK 。

2. 模块内部16bit定时器(Time-Out Counter)用于产生内核复位信号。

3. 模块使能信号WDOGx->CS[EN]可多次设置(但是其属于write-once属性)。

4. 模块配置寄存器write-once bits与定时器计数值需要特殊unlock时序才可以修改。

5. 模块Time-Out Counter默认是开启的。

二、系统ROM里对WDOG的使用

i.MX RT1xxx系列芯片上电默认都是先执行系统BootROM,在BootROM里会有对看门狗的处理。默认情况下BootROM是不启用看门狗做代码执行守护的,只有当用户烧写了指定的eFuse位,看门狗功能才会生效。BootROM并没有使用默认开启的 WDOG3,而是将其关闭并打开了WDOG1作为看门狗。

2.1 看门狗使能

i.MX RT10xx系列芯片BootROM看门狗在eFuse里配置如下,包含eFuse 0x460[21]使能位与eFuse 0x6D0[15:13]超时时间设置。

“系统看门狗WDOG1在i.MX

i.MX RT1160/1170 芯片BootROM看门狗在eFuse里配置如下,包含eFuse 0x9A0[15]使能位与eFuse 0x9B0[2:0]超时时间设置,以及多了eFuse 0x9B0[5:3]关于WDOG_B外部信号脚选择设置。

“系统看门狗WDOG1在i.MX

2.2 看门狗作用

对于i.MX RT10xx系列,BootROM看门狗主要用于Serial Downloader分支程序下(SDP 模式BT_MODE = 2'b01,或者Device Boot模式BT_MODE = 2'bx0下启动失败进入了Serial Downloader)检测与主机通讯情况,只要在设置的超时时间里没有通信交互行为,看门狗就会复位整个系统(并不是单次通信就可以的,任意超时时间内都得保持交互)。如果在Device Boot模式下能够正常启动程序,则看门狗不会被使能。

对于i.MX RT1160/1170系列,BootROM看门狗不仅在Serial Downloader分支程序中有效,其在Device Boot模式下(BT_MODE = 2'bx0)也同样被使能了,这样做主要有两个用意:

如果因板级电路干扰导致首次启动程序失败,BootROM正常是直接跳转到了SDP模式不会再做启动程序行为。但是使能了看门狗,则在SDP模式下等待超时时间后系统复位会重新尝试启动程序,这样不断尝试直到板级干扰消失。

如果启动程序成功,BootROM会直接跳转到目标应用程序,但无法检验目标程序是否能够正常执行。但是使能了看门狗,如果应用程序不对看门狗做有效处理,系统还是会复位回来,这样相当于做了应用程序是否执行的验证。

三、使能WDOG后对i.MX RT开发的影响

现在回到文章开头提到的客户问题,如何判断BootROM中WDOG已经生效了,这个其实特别简单,在SDP模式下插上USB线,在资源管理器里观察是不是有HID设备每隔一段时间就会重新枚举一次,没错就是WDOG捣的鬼。

那么对于应用程序的开发,有什么注意事项呢?对于i.MX RT10xx其实没有任何影响,而对于i.MX RT1160/1170,则必须在应用程序里增加对WDOG1的处理。

在恩智浦提供的头文件system_MIMXRT1xxx.c文件里SystemInit()函数中其实有关于看门狗相关代码,默认是将全部的看门狗都关一遍(DISABLE_WDOG=1),这部分代码对于i.MX RT10xx程序是可以不做的,但是对于i.MX RT1160/1170就必须要做了。

“系统看门狗WDOG1在i.MX

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

围观 59

恩智浦i.MX RT1180跨界MCU可以实现多协议工业物联网通信,同时为实时以太网和工业4.0系统提供支持

“恩智浦推出支持多协议、集成时间敏感网络交换机的i.MX

恩智浦半导体(NXP Semiconductors N.V.,纳斯达克股票代码:NXPI)宣布推出新型i.MX RT1180跨界MCU,作为系列首款集成千兆(Gbps)时间敏感网络(TSN)交换机的微控制器,能够同时实现时间敏感型和工业实时通信,并支持多种通信协议,弥合了现有工业系统和工业4.0系统之间的沟通间隙。这款跨界MCU还带有EdgeLock®安全锁区,它是一种预先配置的自管理式自主片上安全子系统,为工业物联网应用实现可靠的系统级安全智能降低复杂性。

产品重要性

工业环境逐渐向工业4.0发展,网络协议的组合变得越发复杂,时间敏感型通信和实时通信之间难以实现无缝的工业连接。i.MX RT1180提供了实现无缝连接所需的多协议连接能力,可在工厂所有边缘设备间推动实现统一、安全的工业物联网通信环境。集成的EdgeLock安全锁区可以为复杂的网络系统提供安全启动、验证调试、生命周期安全管理、高级密钥管理和篡改监控功能,从而满足对信任根的需求。

更多详情

i.MX RT1180提供多种封装选项,最小封装为10x10mm BGA,以超小尺寸满足实时工业网络所需功能,更轻松地将TSN和工业网络相关功能集成到更广泛的工业应用中,包括I/O管理、电机控制、紧凑型运动控制或网关应用。除了单独作为集成解决方案外,i.MX RT1180还可用作网络系统中的辅助芯片,通过可扩展连接能力为主机处理器提供所需的所有工业网络连接,无需板载PHY即可实现与主机的无缝千兆直接通信,从而可节省额外的功耗和成本。此外,汽车连接应用越来越依赖以太网TSN的支持以实现高带宽和传输实时控制数据,i.MX RT1180同样能够在这方面一展身手。在汽车领域,i.MX RT1180可用作不同的汽车ECU之间的智能开关。

恩智浦资半导体工业边缘处理事业部副总裁兼总经理Jeff Steinheider表示: “工业和汽车行业的客户希望能够提供越来越先进的网络功能,因此要求解决方案不仅具备处理能力,还能管理时间敏感型网络流量。i.MX RT1180提供了集成交换机和EdgeLock安全锁区的一体化解决方案,能够同时满足汽车和工业物联网应用的需求,处理时间敏感型流量和非时间关键型流量,从而帮助客户实现具有先进实时通信功能的安全自动化系统。”

i.MX RT1180作为一款高性能跨界MCU,可在-40°C至125°C的扩展工业级温度范围内工作,采用双核架构,集成800 MHz Arm®Cortex®-M7和Cortex-M33内核,可实现设计灵活性。该器件的集成PMIC(电源管理集成电路),专为实现高能效而设计,适合设计功耗为250mW及以上的应用场景,有助于让许多工业应用实现出色的能效,同时还可降低电路板的复杂性和成本。i.MX RT1180配备多达5个千兆网口,并支持最新的TSN标准,以及多种工业实时网络协议,包括EtherCAT、Profinet、Ethernet/IP、CC-Link IE或HSR等。i.MX RT1180还可帮助OEM厂商轻松地使设备达到ISA/IEC 62443-4-1、-4-2标准。

更多信息,请访问NXP.com.cn/iMXRT1180

关于恩智浦半导体

恩智浦半导体(纳斯达克代码:NXPI)致力于通过创新为人们更智慧、安全和可持续的生活保驾护航。作为全球领先的嵌入式应用安全连接解决方案提供商,恩智浦不断寻求汽车、工业物联网、移动设备和通信基础设施市场的突破。恩智浦拥有超过60年的专业技术及经验,在全球30多个国家设有业务机构,员工达31,000人,2021年全年营业收入110.6亿美元。更多信息,请访问www.nxp.com

围观 43

作者:Eduardo Montanez

“恩智浦i.MX

随着处理器性能增强,电池续航时间延长,互联愈发普遍,传感、监控和跟踪更智能以及更友好的用户界面等方面技术的快速进步,可穿戴设备得到了大力发展,同时产品尺寸更小、成本更低。

智能手表设计的演变

智能手表已成为我们智能、互联和运动的生活方式中不可或缺的可穿戴设备。几十年前,随着《至尊神探》(Dick Tracy)中的双向腕式收音机/电视机、《杰森一家》(The Jetsons)中的笨重视频腕表以及《星际迷航》(Star Trek)电影中首次亮相的“腕式通讯器”等科幻小玩意的出现,智能手表的概念应运而生。带LED屏幕的数字手表是智能手表的前身,它于20世纪70年代初上市,而第一批具有处理和通讯功能的真正智能手表则出现在20世纪90年代末。

进入21世纪后,智能手表继续发展,与腕式健身追踪器展开竞争。如今的智能手表成为了功能丰富、无线连接的“腕式计算机”,可提供健身追踪器的生物识别健康监测功能,以及触摸屏和语音控制、图形、多媒体和移动电话功能——手腕上的智能手机集各种功能于一身。

热门趋势:功能丰富的智能手表,打造注重健康的生活方式

消费者对功能丰富的智能手表的需求日益增长,尤其是精通科技的千禧一代城市人口,市场应运增长。智能手表也在吸引包括老年人在内的新用户,因为可穿戴设备制造商增加了健康监测功能,能使用户实时跟踪自己的健康状况和生物识别数据。

“恩智浦i.MX

访问技术展厅,详细了解健康&保健可穿戴设备

如今的智能手表甚至比几年前功能更强大。智能手表通常借助连接蓝牙的智能手机或直接通过Wi-Fi、4G-LTE或5G与云和流媒体服务通信。近年来,电池续航时间有所提升,一些型号的智能手表电池续航时间从几天延长到几周。有机发光二极管(OLED)和有源矩阵有机发光二极管(AMOLED)显示屏以及带有动画、语音控制和音频播放的生动图形用户界面打造了更直观的用户体验。如今的智能手表还具有更强大的内置信息安全功能,可保护个人和商业数据。

智能手表的生物识别传感功能已经变得更加成熟,超越了基本的健康/活动追踪器的功能,支持一系列健康监测功能,包括SOS紧急服务、安全区警报、接触者追踪以及生命体征监测和报告。一些智能手表还提供“设备即服务”功能,包括个人健康状况监测(即睡眠模式、心率监测、跌倒检测和血氧水平),儿童、老年人和宠物的位置监测,以及面向心脏护理、糖尿病管理和物理治疗的远程医疗保健等。

低功耗是你的超能力。可穿戴设备单次充电可使用数周。了解适合电池供电产品的i.MX RT MCU如何赋能智能可穿戴产品

许多功能齐全的智能手表设计配备了运动模式,配备虚拟教练、音乐存储播放、语音通话、本地语音控制和语音云助手,如Amazon Alexa和Google Assistant。例如,Amazfit GT3 手表的高级功能包括长达21天的电池续航时间、超高清AMOLED显示屏、24小时健康管理、150多种运动模式以及用于语音控制的Amazon Alexa等。另一个出色的产品是Garmin Venu 2 Plus,这是一款健身智能手表,专为积极运动的生活方式而打造,支持语音通话、动画手表锻炼、睡眠评分和常规健康监测。可穿戴设备也在不断发展,不仅限于腕式,还包括眼镜式,如具有照片捕捉、视频录制和音频播放功能、外形时尚的雷朋Stories智能眼镜。

使用恩智浦i.MX RT MCU系列设计续航时间长的安全智能手表

与领先的平台提供商合作,以在激烈的智能手表市场赢得竞争优势。使用经过市场验证的处理平台,您可以专注于自己最擅长的事情:设计与众不同的创新智能手表产品。恩智浦作为您的可穿戴设备技术合作伙伴,可提供广泛的低功耗微控制器(MCU)产品组合、先进的语音软件、强大的安全技术和全面的开发生态体系。

成功的智能手表设计始于优化的片上系统(SoC)平台。恩智浦的i.MX RT500i.MX RT600系列安全跨界MCU提供低功耗处理和高性能功能的理想平衡,以及丰富的集成和高级安全性。i.MX RT500/600 MCU将Arm® Cortex®-M33内核的实时功能与高性能DSP内核相结合,有助于释放智能互联可穿戴应用的潜力。

采用恩智浦的低功耗技术延长电池续航

i.MX RT 500/600 MCU提供高性能和高能效的最佳平衡。MCU可以运行频率高达300 MHz的Arm® Cortex®-M33内核、集成的Cadence® Tensilica® Fusion F1或HiFi 4 DSP内核、PowerQuad数学引擎、2D图形处理GPU和大量片上外设接口来同时运行多个任务。采用这种巧妙的多任务处理方法,可穿戴设备设计能够使用适当的任务处理工具或界面。

“恩智浦i.MX

查看i.MX RT500跨界MCU,了解更多详细信息

MCU为节能异构计算提供多种电源模式。例如,Cortex-M33处理器可以在DSP工作时保持睡眠模式。i.MX RT MCU电源架构支持动态电压和频率调节(DVFS)和多个时钟分频器,可轻松调节处理内核。内核速度可根据需要调节,可穿戴设计能使用内置低功耗时钟源,而不是更高功率的外部源。这些创新低功耗MCU可将智能手表的电池续航延长至三周。

为您的智能手表设计添加语音功能,实现语音控制操作

恩智浦的i.MX RT MCU集成了TenSilicon Fusion 1或HiFi 4 DSP,可提供高性能音频DSP功能,支持智能手表实现语音助手和语音呼叫功能。我们的语音智能技术(VIT)是一个免费的综合语音控制软件包,可作为MCUXpresso SDK中的现成库。VIT使用恩智浦的在线模型创建工具启用客户定义的唤醒词和语音命令。除了VIT,恩智浦还可提供高级语音支持和语音处理技术,包括:

  • VoiceSeeker——用于语音控制的高级音频前端信号处理,包括波束成形、高级降噪和回声消除

  • VoiceSpot——低功耗唤醒单词引擎,以可靠的方式触发语音

  • Conversa——多麦克风双向传输语音通话套件

为您的智能手表设计生动的图形和灵活的显示界面

i.MX RT500 MCU集成2D GPU以呈现生动的图形,实现现代化的人机交互界面设计,适用于低功耗应用。恩智浦全面的软件生态体系包括一系列来自合作伙伴的第三方解决方案,进一步简化了图形开发。

Zepp OS UI搭载AMETEK Crank软件,在Amazfit GT3智能手表等小巧设备中打造了类似智能手机的惊艳体验。Zepp OS基于FreeRTOS的开源代码,是目前市场上最轻的智能手表操作系统之一,搭载i.MX RT500等系列低功耗、高性能MCU,可使智能手表单次充电后运行三周。

AMETEK Crank Storyboard GUI框架可在恩智浦的MCUXpresso IDE工具包中直接获取,极大地简化了评估恩智浦MCU和创建丰富嵌入式GUI的流程。

24小时健康安全管理

如今,始终联网的智能手表持续监测健康生物识别数据,如日常活动及心率变化。睡眠监测也已成为许多智能手表设计的热门用例。为了在没有CPU干预的情况下轻松收集生物识别数据,i.MX RT MCU配备了低功耗DMA引擎和一系列低功耗传感器接口,如I2C和I3C总线。

如今的智能手表能够与远程医疗保健服务商分享生物识别数据,进行监测和诊断。因此,必须保证无线连接的安全性和私密性,以保护用户数据。确保智能手表设计的安全性需要强大且易于实施的安全框架,且框架必须基于强大的隔离和成熟的硬件安全技术。为了辅助智能手表和其他可穿戴设备抵御入侵,恩智浦i.MX RT MCU提供先进的内置安全功能,包括安全启动、唯一密钥存储以及对称和加密算法的硬件加速。

与恩智浦合作,推动下一代智能手表的发展

随着智能手表新用例的兴起,恩智浦在跨界MCU、无线连接、传感器接口、语音软件和安全技术方面的进步将继续满足可穿戴设备设计日新月异的需求。恩智浦全面的软件解决方案和第三方生态体系帮助开发人员优化其智能手表设计,在微型外形下降低成本和复杂性,并加快上市的时间。如需了解恩智浦的智能手表和其他可穿戴设备的解决方案,请访问www.nxp.com/wearables或下载我们的手册

作者:

“Eduardo
Eduardo Montanez(恩智浦半导体边缘处理事业部可穿戴设备和个人设备市场总监)

Eduardo Montañez获得了得克萨斯大学奥斯汀分校电气工程理学学士学位,主修计算机工程和集成电子技术。Eduardo拥有20多年的半导体行业工作经验,专注于物联网边缘处理器方面,担任过多个职位,涉及系统与架构、业务开发和市场营销等领域。目前,Eduardo负责恩智浦的全球市场战略和市场增长,为客户开发跟踪器、智能手表、耳机/耳机、电子阅读器、AR/VR产品以及其他可穿戴设备。

围观 10

SNVS模式是i.MX RT10XX和i.MX RT11XX系列MCU中功耗最低的状态,其标志性特点是除SNVS电源域保持供电,其余的电源域均处于断电状态。与此同时,SNVS的电流通常是uA这个数量级,对于i.MX RT10XX系列,通常是20uA左右,对于i.MX RT11XX系列,电流通常是10uA以下。正因为如此,SNVS模式在电池应用或者功耗敏感的应用场景得到了较为广泛的应用。

本文将会根据笔者支持客户时遇到的问题进行总结,涉及SNVS模式的进入,唤醒以及电流泄露(currents leakage)。

1、无法进入SNVS状态

通常进入SNVS模式有以下两种方法:

  • 长按ONOFF button 5秒以上

  • 在SNVS的LPCR寄存器位6写1

使用以上两种方法,芯片将会触发进入SNVS模式的状态机(纯硬件),在正常情况下会将PMIC_ON_REQ引脚的电平从高电平变为低电平,进而关闭除SNVS电源域以外部分的供电。

当使用上面两种方法无法使PMIC_ON_REQ引脚变为低电平时,则说明系统存在异常,进入SNVS模式的状态机流程被打断强制退出了。

A)未处理的中断

未处理的中断会影响系统进入SNVS模式。

其具体的案例是,用户使用RTC作为SNVS模式下的唤醒源,进行定时唤醒,在第一次运行时可以顺利的进入SNVS模式,接着RTC定时时间到,系统唤醒,再次使用写LPCR寄存器的方法让系统进入SNVS模式。

在此时我们就需要查看NVIC寄存器,看看是否有一些中断没有处理,比如说pending寄存器,active寄存器等。

如果发现有相关的中断没有处理,则需要先把中断进行处理后,才能顺利的进入SNVS模式。

在发现有中断没有处理后,应该检查在中断处理函数中,是否没有正确的清除标志位。比如说RTC有HP和LP两部分,定时器用的是LP部分,而用户清除的是HP部分。

B)LPCR寄存器位5

LPCR寄存器位5的作用可以理解为是权限设置,写1的时候允许用户使用软件的方法——在LPCR寄存器位6写1——关闭系统的电源。如果这个位默认是1,实际使用中,有可能因为软件的原因,比如说驱动程序,或者寄存器赋值将其清0,则会导致系统无法通过使用软件的方法让系统进入SNVS模式。

负面典型案例:用户使用RTC时需要使能校准功能,具体的校准数值也存放在LPCR寄存器中,此时查看驱动程序:

base->LPCR= SNVS_LPCR_LPCALB_VAL_MASK & (config->srtcCalValue <<SNVS_LPCR_LPCALB_VAL_SHIFT);

我们将具体的参数代入代码:

base->LPCR= 0x7C00U& (1<<10);

最后写入LPCR寄存器的数值是:0x0400

那么问题来了,位5被清0了,系统无法通过软件的方法进入SNVS模式。这个具体的函数是:

void SNVS_LP_SRTC_Init(SNVS_Type *base, const snvs_lp_srtc_config_t *config)

这行代码设想的功能,是将校准的数值放到指定寄存器位置,但是实际的功能是,将校准数值放到指定的寄存器位置,其余的寄存器清0。

正确的操作方法应该是先将相关的寄存器位清0(与非的方法清0),然后再将校准的数值写入(或的方法写入)即:

base->LPCR&= ~SNVS_LPCR_LPCALB_VAL_MASK;

base->LPCR|=  (config->srtcCalValue <<SNVS_LPCR_LPCALB_VAL_SHIFT);

2、进入SNVS模式后无法唤醒

常见的SNVS模式下的唤醒方法有:

  • 使用RTC定时器唤醒

  • 短按ON/OFF按钮

  • 使用WakeUP引脚

对于前两种方式来说,所有的i.MX RT10XX和i.MX RT11XX芯片都可以实现,但是对于第三种方法,并不是所有的芯片都可以实现。因为有些芯片没有wakeup引脚, 例如RT1010。

对于第一种和第三种方法,首先需要排除的是中断是否配置正常,可以在运行(RUN)模式下触发中断,检查中断是否被触发。

对于第二种方法,短按ON/OFF按钮, 不需要任何配置,在进入SNVS模式后短按即可唤醒芯片。

当系统顺利进入SNVS模式后,使用ON/OFF按钮也无法唤醒时,可以按照下面的步骤进行检查

a、短按ON/OFF后,PMIC_ON_REQ是否拉高

b、PMIC_ON_REQ拉高后,其所控制的DCDC是否输出了预期的输出电压

c、DCDC输出预期电压后,检查VDD_SOC_IN的电压是否输出正常,i.MX RT10XX和i.MX RT11XX系列在默认情况下应该都是1.1V左右。

d、若VDD_SOC_IN电压没有正常输出,需要检测DCDC_PSWITCH引脚在唤醒过程中的状态,是否有从低电平拉高到高电平的过程。

e、如果没有从低电平拉到高电平的状态,一直都是在高电平或者较高电压的状态,则需要考虑系统电源存在漏电情况。

对于漏电的这种情况我们需要避免,在数据手册上有所描述:

“i.MX

举个例子。例如我们某个GPIO使用了上拉电阻到3.3V,当系统进入SNVS模式后,外部上拉电阻的电源没有关闭,此时将会产生leakage(漏电)。因此在做系统整体电源设计的时候,需要考虑到这一点。

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

围观 437

业界首款基于ARM®Cortex®-M7的跨界处理器,达到3020 CoreMark得分和1284DMIPS,并可在600 MHz时提供20纳秒的中断延迟 - 现已上市,价格在同类解决方案中极具优势

恩智浦半导体(纳斯达克代码:NXPI)正式推出了i.MX RT 系列跨界解决方案,实现了高性能、高集成的同时最大限度地降低成本。随着市场对更加智能和更具“意识”的节点运算需求越来越大,节点设备对物联网(IoT)的发展愈加重要,人们希望节点设备能提供最低的成本、最高的计算性能以及更可靠的安全性及隐私保护。然而这些必需的功能,例如图形和显示支持以及无缝的连接性,不仅增加了系统级成本,而且延长了产品上市时间。

恩智浦通过构建i.MX RT跨界处理器来应对这一挑战,在提供应用处理器的高性能和功能的同时,还具有传统微控制器(MCU)的易用性和实时确定性操作。理想的应用包括音频子系统、消费和健康保健、家庭和楼宇自动化、工业计算、电机控制和电力转换。

全新的跨界处理器提供高水平的集成和丰富的用户体验(图形、显示和音频),同时降低系统级成本。i.MX RT具有大容量静态随机存取内存(SRAM)和集成DC-DC,可提供前所未有的性能,让您的每笔投入均物有所值。为外部存储器提供快速和安全的接口,不需要嵌入式闪存,从而降低了产品成本并显著降低了闪存编程成本。

“我们看到,嵌入式设计师被迫在最终产品的性能和成本之间作出权衡。i.MX RT在这两个领域实现了令人印象深刻的飞跃,这表明恩智浦的创新和对真实市场需求的理解。”EEMBC总裁Markus Levy表示。“这种独特的方法将彻底改变数千个IoT应用中的嵌入式设计。”

性能与功率比较

全新的i.MX RT1050是基于ARM Cortex-M7的最高性能设备,具有实时操作和应用处理器级功能。在600 MHz时,它比任何其他Cortex-M7产品的运行速度快50%,比现有Cortex-M4产品快两倍多。通过将这种高性能与Cortex-M7内核相结合,实现了低至20ns的中断延迟 - 是全球所有基于ARM Cortex的产品中最低的延迟时间。此外,通过集成512KB的紧耦合内存(TCM) SRAM,为实时IoT应用保持了非常高的有效内核性能。

集成的DC-DC转换器不仅消除了对外部PMIC的需求,而且使运行功率效率(每mW的CoreMark得分)比同类竞争MCU解决方案高2-4倍。基于110mA/MHz (全功能操作)的能耗表现,i.MX RT1050比基于Cortex-M7的同类竞争MCU要高2-3倍。

整合和易用性

i.MX RT1050可通过多种外部存储器接口选项实现高级GUI、增强型HMI以及更大的设计灵活性。高安全性嵌入式设计可以通过AES-128的高效加密引擎、高度安全启动(HAB)和实时QSPI闪存解密来实现。

MCU客户可以利用其当前的工具链,包括MCUXpresso软件和工具、IAR系统和ARM Keil MDK,节省时间并实现工具的重复使用。使用开源实时操作系统(包括FreeRTOS、ARM Mbed™操作系统、Zephyr™操作系统以及提供软件库、在线工具和支持的全球ARM生态系统)可以实现快速开发和简单的原型创作。使用与Arduino™硬件接口兼容的低成本评估套件(EVK),还可以进一步加快开发速度。而恩智浦即时可用的USB C型屏蔽板可通过Arduino接口与i.MX RT配合使用,进一步降低开发难度。

“RT给市场带来了巨大的变化。它使客户能够在保持现有工具链和生态系统的同时,提升到应用处理器级的性能。与各种各样多引脚封装MCU相比,对低引脚数串行闪存编程也更容易。”恩智浦微控制器资深副总裁兼总经理Geoff Lees表示。“请继续关注,GHz Cortex-M的竞赛已经开始。”

产品定价和上市时间

更为重要的是,i.MX RT系列的高性能和功率效率都建立在合理的价格之上。而且,支持使用2-4层PCB设计也可大大降低BOM成本;与对MCU片上闪存编程相比,对外部闪存编程也可实现成本节省。

i.MX RT包括以下两个系列,可实现功能、定价和封装上最大的灵活性。

• i.MX RT1050现已上市,10K数量起始价2.98美元
• i.MX RT1020将于2018年第2季度上市,10K数量定价为2.18美元

围观 287
订阅 RSS - i.MX RT