问题标签 [nxp-microcontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arm - lpc812 nxp mcu中的SWM枚举
lpc812 MCU中有一个SWM功能,使开发人员能够将每个外围设备(如SPI,UART & ...)分配给所需的GPIO引脚,但一些特殊的外围设备仅在默认状态下分配给一些固定引脚,在LPCOPEN中用于分配这些引脚的新外设必须首先禁用其固定引脚的功能:
其中SWM_FIXED_VDDCMP是以下枚举的成员
正如您在 ACMP1 和 ACMP2 中所做的那样,它们相当于 GPIO 0.0 和 GPIO 0.1 但对于其他例如 SWM_FIXED_VDDCMP 它是 GPIO 0.6 和枚举的第 9 个成员。如您在上面看到的示例:Chip_SWM_DisableFixedPin(SWM_FIXED_VDDCMP);
从引脚 6 禁用 VDDCMP 固定功能,然后我们可以为该引脚分配新的外设,但在数据表中 VDDCMP 是引脚 6,但在枚举中它等于 8,为什么?
c - 在 UART 接口中初始化 MFRC522 RFID 芯片
我正在使用这个arduino 库与我的 MFRC522 芯片进行初始化和通信,该库最初使用 SPI 接口在 MCU 和 RC522 之间进行通信。当我在 SPI 接口中使用它时,一切都正常且正常运行。现在我正在尝试将接口更改为 UART 模式。根据 NXP 的 MFRC522 数据表,我将引脚状态设置为 UART 模式。读写序列和 UART 帧地址也基于数据表。此外,当我读取RC522 的VersionReg寄存器时,它成功返回了 0x92,这意味着它是 V 2.0,但它无法检测到 RFID 标签的存在。SPI 和 UART 接口之间是否有任何其他差异或我必须做的任何额外设置?有没有人在UART模式下使用这个芯片的经验?
我对寄存器读写功能的更改:
microcontroller - LPC1778中的UART不工作
我正在尝试使用UART1
in发送一个字节LPC1778
(我正在使用 Keil Simulator)。
但是我无法发送字节;经过详细调试,我得出的结论是数据没有写入UART1->THR
寄存器。
这是为传输而截取的代码:
初始化代码:
arm - 如何使用带有 SPIFI 闪存的 LPC4330 实现引导加载程序
我正在考虑在未来的设计中使用 NXP LPC4330 微控制器,我们需要的功能之一是能够使用引导加载程序在现场更新闪存。过去我使用 NXP IAP 命令完成此操作,但由于 4330 使用 SPIFI 闪存,因此 IAP 不可用。
从我收集到的信息来看,我的引导加载程序应用程序似乎需要从 RAM 执行,然后我可以使用 NXP 的 SPIFI 库写入闪存。我的问题是这样的:
使用 IAR Embedded Workbench,我如何创建一个从闪存开始然后通过 RAM 开始运行的程序,以便我可以写入 SPIFI 芯片?我查看了下面的示例,但不清楚如何将其移植到 LPC4330。我相信我已在启动代码中将代码复制到 RAM 中,但不确定如何将中断向量表复制到 RAM 或如何从 RAM 开始执行。 https://www.iar.com/support/tech-notes/general/execute-in-ram-after-copying-from-flashrom-v5.20-and-later/
command-line - 如何通过命令行 CodeWarrior 更改引用?
我从引用另一个项目的存储库中下载了一个项目。我真的很想用 Codewarrior 10.4 的命令行工具来构建这个项目。但是,我的 .project 文件中的引用路径与它在我的计算机上引用的项目的位置不对应。我需要一种命令行、编程方式将参考路径更改为我机器上的正确位置。所以我尝试了
ecd -references -project project_pathName -allConfigs -remove wrongReferencePathName,然后运行 ecd -references -project project_pathName -allConfigs -add correctReferencePathName
但是第一个命令给了我一个找不到文件的错误。所以,看起来我只能删除对我系统上实际存在的项目的引用,并且无法摆脱对我文件系统上甚至不是有效位置的项目的虚假引用。
有没有办法从命令行删除一个错误的引用,一个不对应于有效项目位置的引用?如果没有,你能想到我可以解决这个问题的任何其他方式吗?
就上下文而言,我们公司通常避免此问题的方式是通过在 .wsd 文件中表示我们的项目及其引用。我们将文件拖放到 CodeWarrior GUI 中,这会自动修复所有 .project 文件中的所有引用。问题是我们无法弄清楚如何从命令行调用 wsd 文件。如果您知道这样做的任何方法,它实际上比回答我的其他问题更有帮助!
我为 wrongReferencePathName 尝试了多个选项。上面我测试了“file:/C:/Development/DSM33/DSM33_India/DSM33_FS_v02.02/AlphaBoot”,但我也尝试了“C:/Development/DSM33/DSM33_India/DSM33_FS_v02.02/AlphaBoot”和“C:\Users\罗斯\桌面\Round2\DM3\飞思卡尔\DSM33_FS_v02.02\Firmware.project”。他们都产生了同样的错误。我正在尝试的路径在我的文件系统中不存在——我的文件系统中引用的项目有不同的路径——所以我得到一个 fileNotFoundException 是有道理的。可能是引用工具在提供的引用路径中查找 .project 或 .cproject 文件,如果找不到,则会崩溃。如果这是真的,我可能会尝试在我的系统中欺骗虚假文件路径并复制 .project 文件,但这真的很痛苦。它' 也可能是我没有正确使用 referencedProjectLocation 参数——参考命令语法是 ecd -references -project path [-config name | -allConfigs] (-list | -add | -remove) 引用了ProjectLocation [buildConfigurationName]。我假设这个参数只能采用项目文件路径,但如果我错了,或者如果有不同的方法来识别这个参数的项目,我很想知道!
这是错误输出——不确定完整的回溯是否会有所帮助
非常感谢您对此的帮助!-罗斯
c - 如何在没有任何定时器复位的情况下在 LPC11CXX 系列微控制器上设置 PWM 输出
背景:我正在开发这个 LPC11C24 微控制器,它使用单个 32 位定时器来读取一个引脚上的 PWM 输入并控制另外 2 个引脚上的 PWM 输出。由于输入和输出在同一个定时器上,我不对定时器寄存器(TC)进行任何复位。特别是对于输出,我正在尝试对其进行设置,以便匹配寄存器将随着信号应该为高电平或信号分别为低电平的时间连续增加。
例子:如果我有一个10000个tick的周期,我的占空比是50%,每次得到一个中断,我想给MR0加5000,为下一个中断做准备。
初始化:
情监侦:
当我探测这个引脚时,我没有得到任何输出,所以我不确定我做错了什么。我遇到的另一个问题是我没有收到中断,除非我从一些外部代码(基本上只是设置 MR0 = TC)提供新的占空比。我认为这是因为 TC 领先于 MR0,但我不知道如何防止这种情况。太感谢了!如果我可以提供任何其他信息,请告诉我。
linux - NXP i.MX6 上的嵌入式电子
今年早些时候,我使用 Electron 框架(由 Github 制作)开发了一个应用程序,现在我想将它嵌入到我购买的 SBC 中。SBC 是 DIGI 的 ConnectCore6,基于 NXP i.MX6 处理器,并通过 HDMI 连接到屏幕。
我可以使用 Yocto 为这个 SBC 生成 linux 映像并在其上加载 GTK 和 QT 应用程序。但是,我想了解为该硬件创建兼容版本的 Electron 应用程序是否是一项简单、困难或不可能的任务。
我没有意识到 Electron 在 PC(Windows、Linux 和 OS X)上工作需要什么,应该在 SBC 上进行设置以获得相同的结果。
你能帮我解决这个问题,并可能指导我找到一种在板上执行 Electron 应用程序的方法吗?
谢谢
安托万
assembly - 将 .word 更改为 .equ 时遇到问题
我正在上这个关于微控制器的实验课(我们使用的是 FRDM-KL25Z128),但我在使用 .word 和 .equ 指令时遇到了问题。
首先,教授给我们的示例代码是为了让 FRDM 板上的红色 LED 闪烁,具体如下:http ://www.dca.fee.unicamp.br/cursos/EA871/2s2016/UW/codes/ exp2.s
在修改代码以使其同时闪烁三个 LED 并发出白光之前,我们需要回答一些问题,但这不是问题所在。
在代码的底部,所有寄存器地址都是用 .word 指令定义的(因为我们使用的是 32 位字)。问题之一是回答我们是否可以将指令 .word 替换为 .equ。
我的第一个想法是,是的,我可以用 .word 代替 .equ 因为最后一个指令是为标签分配一个常量值,并且由于我不想更改这些标签的值,所以 .equ 应该可以使用。
但是当我测试它时,通过评论这些行:
并写:
应该将值 0x40048038 分配给 SIM_SCGC5 标签。但是代码不起作用,我将在以下行中收到错误:
说:
无效偏移,值太大
所以我不确定我是否搞砸了 .equ 指令,或者默认情况下 .equ 分配的值是否占用了 LDR 无法处理的更多位。
这里有什么问题?
一些注意事项:
我开始用微控制器在汇编中编写代码,所以我仍然缺少很多信息,比如硬件限制。所以我可以在不知不觉中写一堆随机的单词。
抱歉准备了这么久。我知道长帖子不是 Stack Overflow(或一般的 Stack Exchange)的最爱,但我不想在没有上下文的情况下提出问题。
microcontroller - 微控制器中功能的时间测量
我在一个项目中使用了两个微控制器,我想借助两个微控制器的内部定时器来测量一些代码的执行时间。但是一个微控制器的定时器计数到 32 位值,第二个微控制器的定时器可以计数到 16 位值然后重新启动。我知道代码的执行时间超过 16 位值。你能建议我解决这个问题吗?(打开和关闭 GPIO 引脚不会提供有用的结果)
performance - 微控制器上代码的执行时间
在 32 位微控制器上,我想针对微控制器的不同工作频率测量代码的执行时间。首先我使用了周期性定时器(PIT),但它没有提供高分辨率,因为如果我以高频操作 PIT,那么它的计数器就会溢出。所以我转向系统定时器(STM),因为它可以在系统时钟下运行。但在微控制器的不同工作频率下,STM 给出的代码执行时间相同。你们中的任何人都可以在这件事上帮助我吗?谢谢