首先从IAR官网(www.iar.com)下载最新的软件版本。IAR Systems Product Updates 在IAR Embedded Workbench for Arm | IAR Systems 找到Download图标进行下载。 在S32K3xxDRV_r1.4 软件包种提供了各种外设的配置例程。 以eMIOS为例,此示例使用增强型模块化输入/输出子系统(eMIOS)生成PWM信号。PWM信号使用在OPWMB模式下运行的eMIOSO_CH[9]通道生成。PWM通道的时基由MCB递增计数模式下运行的eMIOS0_CH[8]通道设置。输出 PWM信号可在引脚PTA1上测量到。/* emios_pwm_test.c*/#include "drivers.h"uint16_t dutyArray...
移植 S32K144 软件复位代码到 S32K344 如下:void SystemSoftwareReset(void){uint32 regValue;/* 读取中断和复位控制寄存器 */regValue = S32_SCB->AIRCR;/* 清除寄存器 */regValue &= ~( SCB_AIRCR_VECTKEYSTAT_Msk);/* 配置系统复位请求位 */regValue |=(((uint32)(((uint32)(0x05FAU))<<SCB_AIRCR_VECTKEYSTAT_Pos))&SCB_AIRCR_VECTKEYSTAT_Msk);regValue |=(((uint32)(((uint32)(0x1U))<<SCB_AIRCR_SYSRESETREQ_Pos))&SCB_AIRCR_SYSRESETREQ_Msk);/* 写寄存器数值 */S32_SCB->AIRCR = regValue;} 但却工作不正常。检查 Contex M...
FlexIO 支持 1/2/4/8/16/32位并行传输,参考寄存器 SHIFTCFT[PWIDTH]进行设置。 FLEXIO1 和 FLEXIO2/3 参数不是完全相同,FLEXIO1有16个引脚,而 FLEXIO2/3 有 32个引脚。在i.MX RT1060用户手册中,DMA MUX映射没有FLEXIO3,只有FLEXIO1和FLEXIO2。DMA外设无法访问FlexIO3模块,因此,如果需要DMA功能,只能使用FlexIO1和FlexIO2。 为此 SDK提供了 Flexio和 Flexio3的例程。 如果没有可用的 Flexio实现SPI,可以使用硬件的 LPSPI接口,支持dma,可以降低CPU运行的负荷。LPSPI的时钟 Fsck速率只有 15Mhz。 FlexIO ...
- OSR 最小值是 4,因此24Mhz时钟模式下,LPUART最大波特率是 24/5 = 4.8Mbps,手册中硬件的 LPUART最大的波特率是 80Mhz/4=20Mbps。80/13= 6.15Mbps波特率,这样相对于 6Mhz就有 2.5%的误差。 那如果用 FlexIO外设实现 UART波特率可以达到 6Mbps么? 将FlexIO用于UART RX时,RM参考手册的注意事项:“FlexIO数据只在每个位的中间采样一次。可以使用另一个定时器对传入数据进行毛刺过滤”。保持FlexIO时钟与RM参考手册中的波特率的倍数相同。RM参考手册中的UART接收和UART发射配置表将所使用的每个FlexIO定时器的TIMCMP...
JN5189:AES和USART/SPI DMA有冲突,使用USART/SPI的DMA传输,会影响AES,Zigbee会用到加解密引擎,DMA传输的时候,若对数据进行硬件AES加解密,导致加解密失败。Errata for JN5189 JN5189T JN5188 JN5188T (nxp.com.cn)
使用LPC55S28的I2C从机接口,比如实现 24LC系列的从机EEPROM 。可以提供以下操作,如字节写入、页面写入、当前地址读取、随机读取和顺序读取。接下来,使用Byte Write和Random Read作为示例来说明。首先明确需要判断的状态,包括以下内容:数据和地址-- 用于确定接收到的地址或数据。起始位-- 用于判断是否接收到起始位。读写-- 用于判断是写状态还是读状态。 随机读取如果从设备生成kI2C_SlaveAddressMatchEvent,则表示从设备检测到主设备发送的启动或重复启动。可以在程序中设置一个变量,记录它是启动还是重复启动,并根据传输情况合理设...
在MIMXRT1021CAG4B使用中,当系统上电后,发现不同的端口在通电后具有不同的值。例如,现在使用GPIO_EMC_39和唤醒引脚,两者结果是不同的。从GPIO数据手册中,GPIO DATA寄存器的复位值为0x00000000。但对于唤醒引脚,复位后状态后为高电平。-> GPIO引脚默认为输入功能,而非输出功能。因此,它由上拉和下拉配置决定。对于唤醒PIN,可以检查以下寄存器: 默认情况下,使能了内部100K上拉,因此上电复位后,GPIO口是高电平。针对 GPIO_EMC_39 也是一样的,如果添加DCD将配置SDRAM SEMC端口,它将由SEMC配置结果决定。在从QSPI加载应用...
MIMXRT 有类似Kinetis FlexBUS的接口用于外接FPGA或者并口的液晶屏或者并口采集芯片。可以参考如下的应用笔记,有两种方式: Flexio方式以及SEMC的DBI总线并口连接方式。1. 采用FlexIO方式AN12174: Using FlexIO to emulate communications and timing peripherals – Application Note (nxp.com.cn)Emulating 8080 Bus with the FlexIO on RT1050 (nxp.com.cn) 硬件上连接D0-D15, WR,RD引脚信号。RS和CS用普通的GPIO引脚就可以替代。 Kinetis 中Flexbus连接方式,配置为16位总线形式:Using FlexBus Interface for Kinetis Mic...
应用笔记AN12077 解释了如何通过应用程序启动代码中的软件重新分配FlexRAM。下面将进一步详细说明进行这些修改的方法。https://www.nxp.com.cn/docs/en/application-note/AN12077.pdfRT Internal SRAMFlexRAMRT1010Up to 128 KBUp to 128 KBRT1015Up to 128 KBUp to 128 KBRT1020Up to 256 KBUp to 256 KBRT1050Up to 512 KBUp to 512 KBRT1060Up to 1MB Up to 512 KBRT1064Up to 1MBUp to 512 KB 对于RT106x系列,1MB的内部SRAM中只有512 KB可以通过FlexRAM重新分配为DTCM、ITCM和OCRAM。剩余的512 KB来自OCRAM,无法...
IEC 60730安全标准定义了确保针对家用电器的嵌入式控制硬件和软件安全运行的测试和诊断方法。为了实现功能安全,有必要消除系统故障导致的所有危险。 IEC 60730标准将适用设备分为三类:A类:不用于设备安全;B类:防止受控设备的不安全操作;C类:防止特殊危险 NXP提供IEC 60730安全B级库,帮助家电市场的自动控制制造商满足IEC 60730 B级规范,测试通过VDE和UL认证。MCU自检包括: CPU寄存器和程序计数器-检查卡滞状态 模拟I/O测试-检查模拟参考(GND、VREF和带隙)的转换值 数字I/O测试-检查数字I/O功能...
根据上表,MIMXRT1062CVL5B和MIMXRT1062XVN5B的区别主要是工业级温度范围,封装大小。 除此之外,和MIMXRT1060相比,MIMXR1062X具有FlexSPI2接口,更多的GPIO引脚以及更高的Tj温度。与MIMXRT1060(添加到GPIO10)相比,MIMXR1062X增加了22个GPIO引脚,为系统设计提供了更大的灵活性。这些添加的GPIO也可以配置为FlexSPI功能,以连接不同的存储器接口。 MIMXRT1060(BGA196)仅限于通过gpio_sd_xx(FlexSPI1)使用外部的XIP Flash,并且只能通过gpio_semc_xx(FlexSPI2)扩展133 MHz HyperRAM,因为它无法通过gpio.semc_xx使用...
FreeRTOS有很多很酷的功能,其中一个是它可以报告每个任务中花费的CPU百分比。 需要在FreeRTOSConfig.h中配置一些#定义:#define configGENERATE_RUN_TIME_STATS 1/* 1: generate runtime statistics; 0: no runtime statistics */ 可以使用Systick计时器,但这不会给精确的结果,因此我们该计时器。#define configGENERATE_RUN_TIME_STATS_USE_TICKS 0/* 1: Use the RTOS tick counter as runtime counter. 0: use extra timer */ 接下来,需要配置如何使用计时器:为此,指定计时器配置函数的名...
MIMXRT1021和MIMXRT1024(内置4MB Flash) 都有两组独立的ADC模块,每组ADC都有16路通道,但是两组ADC模块ADC1和ADC2通道有复用相同的引脚,使用时 IMXRT1021CAG4B的ADC通道选择,有19路独立的ADC引脚,如下所示。 可以使用MCUConfigTool配置工具对引脚进行选择,如下设置供参考。MIMXRT1024CAG4B 的ADC通道选择,有14路独立的 ADC引脚。 可以使用MCUConfigTool配置工具对引脚进行选择,如下设置供参考。备注:ADC输入信号连接到GPIO。GPIO默认配置是使能 Keeper,它会影响ADC功能的使用。为避免此问题,请在启动ADC之前禁用ke...
设计将使用FlexSPI1 接外部的 HyperRAM,FlexSPI2 接QSPI Flash存储器芯片作为RT1176 引导设备。当代码在内部RAM里面执行的时候是正常的,遇到了从外部Flash启动的问题,如果用FlexSPI2作为引导接口,应该如何配置呢?-> MCUBoot 工具(https://github.com/JayHeng/NXP-MCUBootUtility)可以识别 FlexSPI2 区域,需要设置 'FlexSPI XIP Region' 选项为 1,默认情况下, "Tools/FlexSPI XIP Region"是0。XIP 区域0 - 0x3000_0000 代表 FlexSPI1XIP 区域1 - 0x6000_0000 代表 FlexSPI2 每个 FlexSPI 都包含两组 pinmux group 选项...
对于IOT 物联网的应用,对于功耗要求越来越高,因此如果有软件工具能集成功耗分析,对于代码优化以及产品性能提升是有极大帮助,在MCUXpresso IDE 11.6.0里面就集成了功耗分析。 有关详细信息,请查看MCU Link Pro-UM用户手册文档,测量精度上,基本上50mA以内到400uA测量范围的分辨率为5uA,然后是400uA到50mA测量范围的分辨率是200nA。 测试LPC55S36JBD100 MCU其低功耗模式,用不同的测试工具Joulescope对比功耗。发现MCU-Link调试工具测试精度和上述描述是移植的。 MCUXpressso 安装下载链接如下:https://www.nxp.c...
大家好,我是蓝蓝。今天又大了一岁了,给自己说声生日快乐啦!就不多说这段时间干啥去了吧,期间和很多的同学聊了天,有的童鞋已经开始工作,聊了聊工作上的事儿。有的是今年即将毕业的童鞋,有着自己的小目标,有的想尝试互联网,所以现在基本上都快进行二轮的复习了,有的同学备战公务员,凭着年轻这股劲儿向往自己理想的生活状态,无论怎么样,长路漫漫,走一步,算一步,每一步都算数。今天分享的这篇文章是 Linux 相关的基础知识,深一点的内容基本上没有,不过对于刚需小伙伴来说,也就够了,有时间的话,最好按照这些命令去试一试,敲一敲,...
个人信息个人信息:浙大硕士,本硕专业都是高分子材料,0基础转行互联网(生化环材专业转行上岸)转行方向:后端开发工程师秋招offer:腾讯,字节跳动,阿里,快手,美团,京东,华为,oppo,vivo等厂的后端开发工程师offer公众号更名为“天坑转码小助手”的第一篇文章,文章也增加了留言功能,欢迎大家留言区评论呀 也欢迎大家点赞、在看、转发支持公众号 星标一下,不错过任何一篇文章~搜集正确的信息 对于天坑专业的小伙伴来说,信息的搜集显得尤为重要,毕设和研究生入学后认识了很多学长学姐,入学时恰逢秋招季,于是我亲眼见到了就业情况...
之前有老哥让我写一下考研经验分享,但是距离我考研已经好几年了,记忆有些模糊,所以就邀请了一位跨考浙大计算机并成功上岸的学弟为大家分享。如果你身边有人想要考研,可以转发给他看看,希望对准备考研的学弟学妹有一丢丢帮助。以下为学弟的分享作者:阿杰 整理排版:袁厨先说明一下自己的情况,南开材料跨考浙大计算机学硕,初试411分,已经拟录取,接受厨子老哥的邀请,分享一下自己关于考研的一点点经验主要分三个部分来说吧,择校,初试科目复习以及整个过程中的心态。 择校说来惭愧,择校这个事情,我好...
大家好,我是鱼皮。前两天我学编程的老弟小阿巴过生日,我问他想要什么礼物。本来以为他会要什么游戏机、Q 币卡、鼠标键盘啥的,结果小阿巴说:我想要一台服务器。鱼皮听了,不禁称赞道:真是个学编程的好苗子啊。行,我就送你一台最低配的 Linux 服务器吧!1 核 1 G 的那种。小阿巴(感动):我焯,谢谢哥,但为什么送我最低配的呢?鱼皮:对初学 Linux 的同学来说,一般不会部署特别大的项目,1 核 1 G 的服务器,无论是用来学习 Linux 命令,还是用来部署个人博客和小项目都已经足够了。后续如果需要用到更高的配置,再升级即可。小阿巴:原来如...
在团队开发中,我们每天都在敲 git clone、add、commit、push 这些命令,其实它们涉及到一个底层命令。这个命令你每天都在用,每天都能看到它的输出,但你却不知道你用到了这个命令。那这个命令是啥呢?git 存储内容是通过 object 的形式,文件内容是 blob 的 object,目录是 tree 的 object,commit 就是 commit 的 object。这三种 object 串联起来就是 git 存储的内容了。然后 branch 和 tag 都是指向 commit 对象的指针。也就是这样:这就是 git 的存储原理。在 .git 目录下可以看到所有这些 object:你 git clone 和 push 的时候,其实也就是下...
大家好,我是鱼 ????,今天给大家分享一点儿好玩的骚操作~还记得我学编程的大二老弟小阿巴么?他最近刚刚找到了一家创业公司的暑期实习工作。要说这家创业公司,属实是有点 “坑”。还没到暑假,公司就提前联系到了小阿巴,让他提前调研一下新项目的技术选型。这着实让老弟头大:最后我给老弟耐心讲解了一番,才帮他搞定了技术选型,具体可以看这篇文章:本来觉得搞定了这个难题,老弟可以松口气,专注于学业了。结果没想到,他前两天又跑来向我诉苦了。。。小阿巴:鱼皮 gie gie,前段时间多亏了你,我已经帮公司的新项目确认了技术选型,老板也夸...
祝大家开工大吉。大家的年终奖还有多久要发呢?今年的年终奖,应该是有喜有忧,互联网没有年终奖的情况,可能也会上演。汇总了截止 1 月 27 日的最新爆料,给大家分享一下,如果有求职、跳槽的打算,也可以作为参考信息。一些公司还没有发年终奖,但是也有领导的预沟通,属于提前爆料信息,也是有一定的参考价值。1、字节、北京、抖音、前端、年终奖总额40万(8个月年终)、8年工作经验2、字节、北京、抖音、运营、年终奖总额30万(5.5个月年终)、6年工作经验3、字节、北京、火山、后端、年终奖总额16.7万(3.5个月年终)、6年工作经验4、腾讯、上...
来自公众号:Java建设者1. 操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。2. shell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。在过去,它是类似 Unix 的系统上唯一可用的用户界面。如今,除了命令行界面(CLI)外,我们还具有图形用户界面(GUI)。3. GUI (Graphical User Interface):是一种...
引言说到预编译,大家立刻就能想到#define、#if、#ifdef和#ifndef等熟悉的预编译命令。其实#include,我们通常放在源文件用来包含头文件,它也是预编译命令。当然这不是这篇文章的重点。这篇文章主要讲解下#error预编译命令,对于什么是预编译,预编译的作用等基础知识点不再讲解,不懂的同学请自行百度。在MCU的开发中,我们经常需要用到Flash存储一些参数,且通常情况下有很多参数需要存储。☛☛ 必读☛ 必读
必读☛☛☛ 必读
引言》中有如下示例代码:void main(){ int data[4] = {0, 1, 2, 3}; int *p; p = data +2; printf("p[-1] is %d\n",p[-1]); printf("*(p-1) is %d\n",*(p-1));}运行结果如下》)C语言很难检查下标合法性的。如果C语言检查数组是否越界,因为当数组出现在表达式中的时候,它会立刻被解读成指针。此外,使用其他的指针变量也可以指向数组的任意元素,并且这个指针可以随意进行加减运算。引用数组元素的时候,虽然你可以写成a[i],但是它只不过是*(a+i)的一种表达,C语言本身的语法是无法检查的,只能通过编译器检查。那么编译...
回调函数》已经详解讲解过了,这个文章不再讲解,不太懂的同学请看之前的文章《》。在之前讲解回调函数中就使用串口作为示例,使用回调函数可以方便封装通讯库,芯片/模块厂家的SDK和部分开源库经常这样做,这样可以实现模块间的解耦,模块化编程。这篇文章主要讲解回调函数在命令解析中的应用,一般命令中都会有功能码,用于区分这条命令到底执行的什么动作,命令字后面的数据的意义。在这种场景中,使用回调函数是一个不错的选择。经典写法☛ 必读☛☛ 必读
指针函数》。》,数组指针和指针数组的概念更有效帮你理解函数指针和指针函数。函数指针说的就是一个指针,但这个指针指向的函数,不是普通的基本数据类型或者类对象。函数指针定义如下:int (*f)(int a,int b);//声明函数指针》的同学,先看一下。在教材和资料中,都会讲到数组名就是指向数组第一个数据的常量指针。从上面例子看到,函数名貌似也是“常量指针”。数组中,可以将数组名赋给一个指针,然后通过指针访问数组中的内容,那么我们就可以定义一个函数指针,将函数名赋给函数指针,通过这个函数指针调用函数。#include <stdio.h>void MyFun...