嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读

技术阅读

  • S32K314 RAM计算

    2024-06-13

        正如数据手册S32K3xx_DS_Rev7 所说, S32K314 的 RAM大小是 512K(包括 96k TCM),但是根据参考手册 S32K3xx_memory_map.xlsx 计算 RAM 大小是小于 512K,只有416K大小。    解释:S32K314是S32K324(S32K344)将其内部的 CM7_1内核,通过sBAF置于等待模式。场景:S32K314在物理上有两个内核(cortex_M7_0和cortex_F7_1),用户只能使用一个内核(cortex_F7_0),ITCM_1/DTCM_1可用,内存大小与S32K324/344相同。    S32K314 RAM 里面没有找到 ITCM_1/DTCM_1。S32K314 用户可以通过 Backdoor方式访问CM7_1 核的 ITCM/DTCM。512K = 3...

  • S32K3 ITCM 和 DTCM

    2024-06-13

       S32K3的紧耦合 RAM内存,包括指令紧耦合内存 ITCM,数据紧耦合内存 DTCM。所谓紧耦合是指该内存与内核连接紧密,有非常高的访问速度。ITCM是内核中指令传输总线,DTCM是cortex内核中数据传输总线,是内核同Flash及 RAM之间传输指令和数据的通道,指令的取址和执行及数据读写在性能及管理上存在不同,因而需要区分。    ITCM: “指令”表示该内存专用于缓存指令。DTCM: 它跟 ITCM类似,有着极高的访问速度,不过它是专门用来存储程序的数据,即代码中变量的存储位置。PRAM: 可以理解为传统 MCU 的内部 SRAM,其接在系统总线上,不像 IT...

  • 使用 S32K344项目例程调试 S32K314芯片

    2024-06-13

        使用S32 Design Studio 3.4为S32K314 MCU创建了一个新项目,并创建了 FreeRTOS项目来闪烁LED。为此,从S32K344 项目中使用 PTC25引脚输出控制 LED闪烁的示例代码。-> S32K314基本上是一个只有一个内核的S32K344,两者都有相同的外设。可以直接使用S32K344 FreeRTOS项目,按照如下的linker脚本文件,简单的做修改就可以适配到 S32K314控制器,并共享 S32K344现有 SDK代码工程。下图左边是S32K344的链接脚本,右边是 S32K312的链接脚本文件。起始主要差别是 ITCM和 DTCM大小。    并且也不需要修改包含路径之类的,按照现成的 S32K344代...

  • MPF5020CMMACES 展频功能

    2024-06-13

         和I.MXRT1170配套的车规电源芯片 PF5020 QM,对应的 Device ID 是0x50。一般情况下展频功能是不需要使能的,出现测试 EMI的问题,更多的从前级电源转换 DCDC里面找原因,看是否电感或者电容匹配的问题导致 RE或者CE超标。比如可以通过如下设计工具来检查在超标的频率点位上判断电感或者电容设计是否有过少或者过大的问题。Noise filter design support tool (murata.co.jp)    默认的 FSS_EN和 FSS_RANGE的数值都是 0,因为 OTP_FSS_EN和 OTP_FSS_RANGE的数值出厂写的默认值是 0。Ax和Bx, Cx和Dx(x代表0-F)寄存器是无法通过I2C接口写...

  • MIMXRT1176 Flexspi访问两片QSPI Flash

    2024-06-13

        MIMRT1176 MCU有两个灵活的串行外围接口-FlexSPI1和FlexSPI2。每个FlexSPI主机控制器支持两个SPI端口-A和B。每个端口最多支持两个芯片选择输出。FlexSPI2的每个端口支持单/双/四/八线模式数据传输(1/2/4/8条双向数据线),而FlexSPI1的每个端口都支持单/双/四线模式数据传送(1/2/4条双向数据线路)。FlexSPI1使用带有端口A和B的4位总线,而FlexSPI2使用带有端口B和A的8位总线。    主要功能包括:•同时支持SDR模式和DDR模式•支持单独/并行模式•HyperBus设备(HyperFlash/HHyperRAM)    有两个 FlexSPI接口端口(A端口和B端口)。...

  • 调试出现异常时,MIMXRT 目标板恢复方法

    2024-06-13

    1. 背景描述    使用NXP MIMXRT板调试代码时,有时目标板在使用IDE和调试器下载代码时会突然遇到调试连接问题。特别是对于使用带有板载默认CMSIS-DAP调试器的NXP RT EVK板的用户。甚至在尝试了很多次之后怀疑目标板坏了。调试器连接使用错误的FDCB、下载进程异常结束、错误的Flash加载程序或 Flash中的异常应用程序代码等时通常发生的问题。问题结果将类似于以下图片: 图.1 图.2    连接日志提示没有连接到芯片的调试端口;错误:Wire Ack Wait Fault线确认等待故障。下面将给出一些方法,以典型的MIMXRT1060-EVK板+MCUXpresso IDE作为...

  • S9KEAZ MCU FTMRH_FSEC[SEC] 加密位设置

    2024-06-13

        从KEA参考手册中所知,在上电复位期间,FTMRH_FSEC[SEC]从 Flash配置字段的Security字节中进行加载。因此,如果Flash配置字段没有安全加密设置,FTMRH_FSEC[SEC]也不会修改。    使用开发环境 CodeWarrior IDE 11.0, 配置 MCU S9KEAZ128,检查flash配置字段的值。通过检查Flash,SEC的内容并没有按预期写入,它总是10b,这是未加密的。设置SEC位的代码由Processor Expert生成。SEC位通过代码写入为00b,这是处理器专家生成的代码。/* Flash configuration field constants */#define CPU_FLASH_CONFIG_FIELD \/* NV_BACKKEY0: KEY=0xFF */...

  • IMXRT1176 SNVS 模式下相同硬件板卡的电流功耗异常问题分析

    2024-06-12

        进入SNVS模式有两种方式(只有运行在 SNVS 模式,SOC(微控制器将关闭),一种是按下ONOFF硬件引脚,I.MXRT 提供一个专用引脚(ONOFF)来切换SNVS模式和运行应用代码。    另一种方式是通过软件将微控制器设置为进入SNVS模式。使用以下软件方法进入 SNVS 低功耗模式。SNVS->LPCR|=SNVS_LPCR_TOP_MASK;但目标板卡的电流约为150uA,正常在 50uA左右,大约有5%左右概率的板卡功耗表现异常,而且是同一批次芯片。    可以通过查看PMIC_ON_REQ引脚来确保SNVS模式。在进入SNVS模式之前,或在退出时,此引脚应为HIGH(高)。在SNVS模式下,...

  • 从MIMXRT1170 SNVS模式下的唤醒时间过长问题分析

    2024-06-12

        从SNVS模式中醒来时,唤醒时间异常长。更改应用代码,以便在唤醒发生时立即打开指示led,但看到led一直打开到唤醒事件中PMIC_ON_REQ引脚输出高,需要15秒。通过进一步的调试,发现代码被停在地址0x00223104的循环中。    此地址用于防止I.MXRT在通过调试器复位后在不设置SP和PC的情况下继续执行:https://wiki.segger.com/i.MXRT117x。但是,无论调试器是否复位,甚至在不使用外部调试器的情况下,客户端都会在此处进入。还将power_mode_switch演示移植到了他们的目标板上,并且在SNVS唤醒后也经历了与原始应用程序相同的15秒延迟。15s的延...

  • S32K3调试模式下不能进入中断的解决办法

    2024-06-12

        有用户反馈使用 PE Micro Multilink或者JLINK V11在调试S32K3的时候无法进入调试中断的问题,但是目标板在加载固件后,脱离仿真器是可以正常运行的,只是调试时不能进中断,或者是进入Hardfault或者是跳转到非法地址等等,如下图所示。进入Hardfault的示例:不能进入中断调试的示例:跳转到非法地址的示例:  使用上述Jlink调试工具或者PE Multilink工具采用四线SWD调试都会出现可以正常下载运行,调试出现异常的情况。下面进行配置解决这些问题,从如下三个方面排查基本就可以实现。1.    GDB Server配置这里面两个位置的 JLINK Segg...

  • S32K344/S32K312 CAN0通道 CAN FD配置步骤

    2024-06-12

        FlexCAN0通道引脚设置,PTC2是S32K344 CAN0的接收引脚,设置为输入RXD,PTC3是S32K344 CAN0的发送引脚,设置为输出TXD。在 IntCtrl中断模块中使能CAN0中断。    这个部分对 S32K312来说,只有3个FlexCAN0_0, FlexCAN0_1, FlexCAN0_2三个选项。    这里如果选用S32K312的话,选择Payload size 64,则MailBox最多设置为14。Payload size选择8,16,32的话,MailBox最多可以设置为16。    FlexCAN0的时钟取自外部晶振的时钟FXOSC,16Mhz。    当然也可以选择 FlexCAN0的时钟为 AIPS_PLAT_CLK内部时钟,这样FlexCAN protocol Cloc...

  • S32K344 CAN-FD接口板调试(基于 S32DS3.4和 RTD2.0.0)

    2024-06-12

        如果使用 S32DS3.4 IDE和RTD1.0.0编译附件 CAN工程就会报上述错误,可以看到只安装了 RTD S32K3XX 1.0.0软件版本。这是因为该工程是在 RTD2.0.0环境下测试的,需要下载 S32K3 Real Time Drivers Version 2.0.0。    在官网找到RTD_4_4_2.0.0,下载完成后,点击Help菜单栏中的Install New Software,选择刚才下载的SW32K3_RTD_4.4_2.0.0_DS_updatesite_D2204.zip!    勾选 RTD S32K3XX,RTD S32K3XX 2.0.0以后进行安装。    附件RTD2.0.0下应用程序的目的是展示FlexCAN模块的使用情况,该模块配置为使用S32 RTD API使用CAN FD和...

  • S32K344 LIN 通信

    2024-06-12

        S32K344 LIN总线通信应用程序演示Lpuart Ip和Flexio Ip驱动程序的使用。这是一个简单的应用程序,它显示了S32K344在S32DS3.4 IDE上Lpuart Ip和Flexio Ip的Lin Master和Lin Slave之间的通信。对Lpuart_Ip执行Autobaud自动波特率功能。本例中,一个完整的LIN帧(标头+响应)从主机发送,并由从机接收。     LIN总线使用LIN0和LIN1端子的引脚定义如下:    Lin_SendFrame发送函数执行后,LIN线上的波形。     在环回模式下工作的基于MCAL的LIN代码和程序。请考虑以下事项:1.本项目将LPUART_5配置为主节点Master,将LPUART_7配置为...

  • MIMXRT1170 上电DCDC_PSWTICH启动异常波形分析

    2024-06-12

        在 DCDC_PSWITCH引脚电压向上提升的过程中,DCDC_PSWITCH引脚上之前的电压应低于 0.5 V。无论是上电复位,还是 SNVS低功耗唤醒复位情况下都应该保证这点。当主电源复位足够快时,DCDC_PSWITCH将不会延迟所需的最小1ms,从而导致DCDC_OUT无法正确打开。    记录一次在 SNVS低功耗模式下,外部主机端串口或者 CAN总线以1ms-100ms的间隔不间断的发送让 MIMXRT1170进入睡眠指令,MIMXRT1170收到后立刻进入 SNVS模式,进入SNVS模式后VDD_SOC_IN和DCDC_PSWITCH引脚电压跌落到0V,Wakeup 引脚被上拉到高电平,此时需通过Wakeup脚执行下降沿操作唤醒...

  • I.MX RT1170 配套PMIC PF5020使用

    2024-06-12

        I.MX RT1170将先进的电源管理模块与DC-DC和LDO集成在一起,可降低外部电源的复杂性并简化电源时序。该处理器的片上DC-DC稳压器适用于高达105°C的消费和工业应用。对于汽车应用,随着Tj增加到125°C,运行频率高于600Mhz-800Mhz,内核耗电可能超过内部DC-DC能力。在这种情况下,将i.MX RT1170与恩智浦PF5020 PMIC一起使用是非常合适的应用。    与 MIMXRT1170配套的 MPF5020CMMACES 默认出厂就内置了上电时序固件,通电就可以按照如下时序正常输出多路电压。    在 SDK2.13.1中内置了 pf5020的软件组件,如下图所示。    在如下...

  • MIMXRT1172 SNVS模式Wakeup唤醒

    2024-06-12

        当 I.MXRT1170进入 SNVS模式,所有的电源域除了 SNVS域以外都会关闭,功耗最低达到uA级,这意味着 ROM将会在唤醒后运行。ROM会使用SPI模式读命令,Octal Flash会在 OCR(Octal读)模式。在进入 SNVS模式前复位 Octal Flash芯片,或者将设置 RT1170进入SNVS模式的代码放在RAM中运行,使用 POR引脚作为复位信号复位 Octal Flash,使用BOOT ROM 去复位 Octal Flash。       WAKEUP引脚默认内部是输入上拉的,大约在 35k左右。    唤醒引脚是一个 GPIO,由 SNVS 电源域供电配置为唤醒源。唤醒引脚会将 PMIC_ON_REQ为高电平,请求主SOC...

  • S32K324 多核调试操作环境 S32DS3.4和RTD1.0.0安装

    2024-06-12

        对于一些应用需要一个核运行基础框架代码,另外一个核同时并行实时运算算法或者 UI等等一些应用需求的场景,双核是必要的。下面从安装到调试进行实际操作演示。1. 从NXP官网下载 S32DS3.4软件。    之前由于安装过 S32DS3.5环境,使用S32DS3.5的license安装S32DS3.4会报如下错误。 Software Activation Code is already used on this station for SW32_S32DS_3.5 APUCompiler 2.0解决办法:在 https://www.nxp.com/design/software/development-software/s32-design-studio-ide/s32-design-studio-for-s32-platform:S32DS-S32PLATFORM...

  • S32K344 锁步核解耦成双核 S32K324

    2024-06-12

        S32K344具有锁步内核,可以将内核解耦以与具有不同应用的两个内核一起工作。下面介绍S32K344用于多核目的,每个内核都有自己的启动文件,也有自己的链接器件,其中根据应用程序将内存映射到每个内核。如果两个内核都已启用(根据Boot配置),它们同时运行,无论是在调试模式还是独立模式,一个内核都可以为两个内核配置时钟,并为彼此启用或禁用时钟,可以在内核时钟门控部分找到更多信息。如果有S32K344,可以将其解耦,并用新配置在UTEST中的新记录再次锁定器件。DCF记录存储在UTEST存储器中,有一些DCF由TE/PE在测试 Flash中编程,用户无...

  • LPC5516JBD100 使用USB-HID ISP方式烧录固件代码

    2024-06-12

       从如下链接下载最新的blhost2.6.7软件。MCU Bootloader | NXP Semiconductors    const uint32_t port0_pin6_config = (/* Pin is configured as LED */                                         0 |/* Selects pull-up function */                                         IOCON_PIO_MODE_PULLUP |/* Standard mode, output slew rate control is enabled */                                         IOCON_PIO_SLEW_STANDARD |/* Input function is not inverted */ ...

  • I.MXRT 时钟扩频

    2024-06-12

        系统 PLL 是系统内部总线、内部处理逻辑、SDRAM 接口和 NAND/NOR 接口模块等的时钟源。而系统 PLL 时钟的频率都是窄带信号,信号强度集中,这是产生电磁辐射的主要来源,如下图所示。比如用来调整外扩 SEMC接口 SDRAM的频率等等。频谱扩展对 SDRAM 读 / 写性能影响很小, 对应用程序没有影响。    引入时钟扩频技术来降低信号能量的集中,该技术将时钟能量在一定带宽内进行频谱扩展和能量分散,从而降低电磁能量的峰值,从而更容易过EMC RE辐射发射(Radiated Emission)测试。    i.MXRT 系列的系统 PLL 支持时钟扩频,如果外设采用此 P...

  • MC56F80748 电源和上电要求

    2024-06-12

    https://www.nxp.com.cn/docs/en/data-sheet/MC56F80XXX.pdf•如果需要,将外部RC电路连接到 RESET引脚。电阻值应在4.7 kΩ–10 kΩ的范围内;电容值应在 0.1µF–4.7µF的范围内。•在高噪声环境下的正常操作中,将RESET引脚配置为GPIO输出可能有助于提高噪声瞬态抗扰度的性能。•如果JTAG调试口未连接,在 JTAG端口的TMS引脚上增加2.2 kΩ的外部上拉,以在正常操作期间保持EOnCE处于复位状态。此外,如果操作环境非常嘈杂,则将TMS、TDI、TDO和TCK配置为GPIO。•在复位期间和复位后,但在I/O初始化之前,所有GPIO引脚都处于三态。•为消除PCB线阻...

  • MCUXpresso Secure Provision 工具烧录 MIMXRT1176器件

    2024-06-12

    首先,生成 bootable image。 在工具栏中选择 Unsigned boot type。进入 Build image 界面。在 Source executable image 中选择 准备 image 中生成的 image。4. 单击 Build image 以生成 bootable image。bootable image 生成成功后:将开发板设置为串口下载模式。进入 Write image 界面。3. 勾选 Use built image。4. 单击 Write image。如果 image 烧写成功,切换启动模式与 image 配置相匹配。    按照上述 MDK中的配置操作后,在 MCUXpresso secure provision环境下加载生成的 hex文件,就不会出现错误地址的提示。    然后红色的Edit就...

  • MIMXRT1170 DCDC_MODE 引脚推荐设计

    2024-06-12

     如果要使用内部DCDC输出1.8V和1.0V,DCDC_mode引脚的建议电路设计是什么?RT1170 参考手册中 DCDC_MODE接地,DCDC_IN输入3.3v,DCDC输出 1.8v和1.0v。    在 RT1176 开发板中,DCDC_MODE 通过 4.7k欧电阻和 0.1uF 电容下拉到 GND。    如果不使用内部的 DCDC,则 DCDC_PSWITCH 和 DCDC_MODE 必须接到 GND引脚。    如果使用内部的 DC/DC, DCDC_PSWITCH 必须上拉。DCDC_MODE可以是:下拉选择正常模式(在EVK上,为正常模式),上拉以选择低功耗模式。因此,在应用模式0下使用内部 DCDC时,建议的设计是遵循RT1176 EVK Rev C1参考...

  • MIMXRT1172 VDD_SOC_IN 和 DCDC_DIG引脚外接的电容

    2024-06-12

    EMC: https://www.nxp.com.cn/docs/en/application-note/AN13202.pdfAchieving Maximum CM7 Frequency for i.MX RT117x Processor at 125 (nxp.com.cn)https://www.nxp.com.cn/docs/en/application-note/AN13533.pdfHardware Development Guide for the MIMXRT1160/1170 Processorhttps://www.nxp.com/webapp/Download?colCode=MIMXRT1170HDUG    根据硬件设计手册文档,VDD_SOC_IN~DCDC_DIG_X 最小电容要求如下:    在引脚K8附近放置一个2.2uF,参考开发板 EVK设计。    按照如下方式连接电容到 VDD_SOC_IN ~ DCDC_DIG_X 是否可以?a...

  • 使用"Complete FDCB"模式恢复擦写异常的 QSPI Flash

    2024-06-12

        当遇到片外的Flash无论如何用四线模式擦写读取都异常的时候(如下所示读出的内容始终是0xbb,也无法用四线模式擦除),可以尝试用如下方式,当然如果 ID都读不出来,那估计是芯片损坏了。这里测试的是 1Gb的Flash MX25L25645GM2I-10G 芯片。    可以采用MCU BootUtility下的Complete FDCB 模式进行恢复。如下是具体步骤:1.    设置在串行下载模式下(如上图所示),通过USB或者UART口连接目标板。在NXP MCU Boot Utility v3.5.0界面点击Boot Device Configuration。如果是MIMXRT1176芯片,需要选择i.MXRT117x选项。这里使用MIMXRT1...

  • 加密 LPC804 固件代码

    2024-06-12

        LPC804 MCU具有CRP(代码读取保护)功能。该CRP位于地址0x0000 02FC,并且存在NO_ISP/CRP1/CRP2/CRP3这些不同的安全级别。    如何将安全配置编程呢?仅可通过ISP模式么?    也可以在项目工程,如下图 MCUXpresso IDE中配置, 使能 CRP:    关于 CRP,推荐如下文档链接:https://www.nxp.com.cn/docs/en/application-note/AN11581.zip https://www.nxp.com.cn/docs/en/application-note/AN10968.pdf     在 MCUXpresso 工程里面配置 CRP。•定义设置适当的 CRP值•使用自定义脚本配置链接器以将该常量放置在CRP内存地址(...

  • 使能 S32K3XX V15电源输出

    2024-06-12

        如上图所示,如果硬件电路用 BJT方式供电,没有外部单独独立的 1.5v电源给到 V15引脚,而是通过内部的S32K3的内部 VRC_CTRL 引脚控制产生 1.5v给到 V15。此时需要配置如下步骤:添加power模块,使能 Last Mile Regulator寄存器添加#include "Power_Ip.h"头文件和初始化代码Power_Ip_Init(&Power_Ip_HwIPsConfigPB); 来使能。要在时钟初始化代码 Clock_Ip_Init(clockConfig);前执行这段代码。在 main.c程序中添加如下代码:#include "Power_Ip.h"Power_Ip_Init(&Power_Ip_HwIPsConfigPB);    在外设组件里面添加 Power,使能如下红色部分...

  • 配置 S32K116 CMU 检测时钟模块

    2024-06-12

        CMU仅适用于S32K11x系列。S32K1xx系列中的其他器件没有CMU。S32K11x有两个CMU单元:CMU0和CMU1。它监控作为系统时钟主要来源的FIRC。CMU需要通过软件启用,因为默认情况下未启用。CMU0用于时钟丢失检测时产生复位,映射到RCM_SRS[4]。当FIRC低于编程阈值时,标识时钟丢失,将IER[FHAIE]和IER[FLLAIE]以及阈值编程设置为启用复位功能。当FIRC低于或高于编程阈值限制时,CMU1用于中断生成。在CMU1中设置IER[FHIE]和IER[FLLIE]以及阈值编程,以启用中断功能。下图显示了CMU与芯片的连接:    在禁用FIRC或SIRC之前,需要禁用CMU。如果FIRC从...

  • I.MXRT FreeRTOS 环境下擦写外部 Flash

    2024-06-12

        在FreeRTOS环境下,如果外部擦写 Flash,禁用指令缓存以避免在多个任务中使用来自Flash 的分支预测和应用程序同步操作 Flash的缓存预加载指令。因为代码是XIP,所以向量表也在Flash 中。所以,当发生中断时,内核将读取此中断向量表。如果同时,Flash闪存被编程写入,读取操作将失败。用户通过禁用中断来保护关键代码,以避免这种情况。    使用 "taskENTER/EXIT_CRITICAL()" 函数,最后它会调用如下图这个函数vPortRaiseBASEPRI。该函数只能禁用优先级低于configMAX_SYSCALL_INTERRUPT_priority的中断,这可以确保系统仍然可以工作。因此...

  • MIMXRT1176 代码放在 ITCM里面运行,为什么执行速度并没有在外部Flash里面执行的快?

    2024-06-12

    __RAMFUNC(RAM)void SysTick_Ticks(uint32_t value){     g_systickCounter=value;      int addcount= 0;      while (g_systickCounter != 0U)     {         addount++;     }    PRINTF("\r\naddcount:%d\r\n",addcount);}    通过在IAR环境下添加__RAMFUNC,修改了函数SysTick_Ticks 以在ITCM中运行,实际测得的运行速度变慢,系统计数累加的次数也减少了,代码在XIPFlash里面执行的更快一些。-> 如果在应用程序中启用了I-Cache,那么无论该函数在ITCM或外部XPFlash中执行,系统计数值都应该几乎相同,但如果禁...