问题标签 [atsam3x]

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.

0 投票
1 回答
750 浏览

c++ - 将 usart 接收到的 uint8_t* 数据​​与常量字符串进行比较

我正在开发一个 Arduino Due,尝试使用 DMA 功能,因为我正在处理一个速度至关重要的项目。我发现以下函数可以通过串行接收:

因此,据我了解,此函数将作为指针写入变量bytes,只要不超过length即可接收到的内容。所以我这样称呼它:

没有将其返回值分配给变量。我认为接收到的值存储到uint8_t* data但我可能错了。

最后,我要做的是检查接收到的数据是否是某个字符来做出决定,像这样:

我怎样才能使这项工作?

0 投票
1 回答
199 浏览

arm - Atmel SAM3X8E 在硬复位后丢失 VTOR

我似乎是从这里这里重申这个问题。当我在将固件刷入对面的闪存库后重新启动系统时,VTOR 为 0(意味着它不会从闪存启动)并且我无法运行新固件。

我使用 EFC 控制器将固件二进制程序编程到第二个闪存库中。例如,活动固件位于 Flash0,位于 0x0008_0000。实施指南说 Flash1 位于 0x000C_0000。我可以看到要刷新的完整固件包含在 0x000C_0000 处,没有错误。加载并验证固件后,我切换 GPNVM 引导库:

执行此代码后,我再次检查 0xE000_ED08 处的 VTOR 寄存器,该值现在为 0x0000_0000。固件似乎没有加载,因为芯片寻找地址 0x0000_0000 来启动固件。

会不会是我错误地设置了 GPNVM 位并且它正在寻找 ROM 向量?如果是这种情况,要设置的正确 GPNVM 位是多少?根据引导加载程序文档第 33 页上的表格,GPNVM 位应为“0b110”,因此 GPNVM[1] 为 1,GPNVM[2] 为 1——这意味着固件将从 Flash Bank 1 开始。这是一个正确的解释?

0 投票
0 回答
126 浏览

c - 如何在 SAM4e 控制器中调试 CAN 总线?

我刚刚开始为 CAN 编写 SAM4e 微控制器,但遇到了一个问题。我已经实现了 USB_serial comm 来调试 CAN 进程,但没有多大帮助。CAN 配置工作正常。它还显示正在传输数据,但在其他控制器上未收到数据。我正在使用 ATSAM4e8e 控制器和 TJA1050 收发器。

0 投票
0 回答
103 浏览

dma - PWM 可以触发 Atmel SAM3X 上的 DMAC 存储器读取吗?

虽然我对嵌入式编程并不陌生,但我是 Atmel SAM3X 微控制器的新手。我试图弄清楚是否可以使用 DMA 从内存映射寄存器(在这种情况下为 GPIO 端口)以时钟速率的 1/4 (比可以完成的速度更快)周期性地将值读取到缓冲区中通过软件复制或软件触发 DMA),然后将缓冲区转到 USB DMA 以将其发送到 USB 电缆。

我看到 PWM 是可以执行 DMAC“传输”的外设之一,而且我还看到 DMA 通道寄存器具有用于源地址和源外设标识符的单独位置。地址和外设标识符是否独立且可能相互协作?您可以使用 PWM 作为源外设作为时钟分频器,然后从端口数据地址复制吗?如果是这样,这在寄存器写入方面如何实现(我要求尝试规避反复试验的需要);如果没有,是否有任何其他方式以常规高但亚时钟速度对内存位置进行采样?

0 投票
0 回答
138 浏览

arm - Atmel SAM3X / SAM3A,处理来自并行输入/输出控制器 (PIO) 的中断

我想在处理器(Atmel SAM3X / SAM3A)中启用 PA8 引脚。我已经设置了 PIOA_MDERp[7]=0 和 PIOA_MDDR[7]=0 和 PIO_OER[7]=0 和 PIO_ODR[7]=1,这样三态缓冲区将不再从引脚发送数据,并且使能引脚以接收来自环境的数据并在需要时发送中断。我还想将中断设置为上升沿,所以我也做了 PIOA_RHLSR[7]=1 和 PIOA_FELLSR[7]=0 以及 PIO_ESR[7]=1 和 PIOA_LSR[7]=0。我现在的问题是如何修改 NVIC 寄存器以启用此中断。我的意思是,在此引脚的上升沿,此引脚的状态处于挂起状态,然后我将应用于 NVIC 的更改会导致此挂起状态变为活动状态。我的中断组优先级和子组优先级都是3。我知道如何修改中断设置启用寄存器,中断清除启用寄存器,应用中断和复位控制寄存器,以及中断优先级寄存器。不过,我的问题是现在我没有任何来自这个特定引脚(PIOA8)的中断编号,所以它与我有中断编号(从 1 到 240)的时间不同,所以我可以知道哪个寄存器在 NVIC 中我应该修改。谢谢你的帮助。

0 投票
1 回答
1214 浏览

linux - 没有提供错误 - 添加新的 Yocto 层和新机器

我有一个关于在 Yocto 中添加新机器的问题。

我正在尝试在 Yocto 中添加一个新层和一台新机器。该机器基于 Atmels SAMA5D27-SOM1-EK-SD 评估板。我想为这块板启用另一个 UART。

我克隆了该板的内核源代码(linux-at91)并添加了另一个基于 at91sama5d27-som1-ek-sd.dts 文件的 DTS 文件。我进行了更改以启用 UART0。然后我将这个新的 DTS 文件添加到 linux-at91/arch/arm/boot/dts 的 Makefile 中。我做了一个补丁来保存这些更改。

我正在使用 meta-atmel 层,并按照此处概述的说明为该板构建图像。

我已经定义了另一个层,它将充当定义我的自定义机器的新 Yocto 层。我在 recipes-kernel 中添加了一些 .bbappend 文件来添加补丁(它向 linux at91 内核源代码添加了一个新的 dts 文件)并将我们的自定义机器添加为兼容机器。我的理解是,我们可以继续使用 meta-atmel 层中的定义,但在同一路径中的 meta-axon 层中添加 .bbappend 文件,这将应用我们想要的更改。

我对 recipes-bsp 目录做了同样的事情。在 meta-axon 层,recipes-bsp 中的所有 .bbappend 文件仅将我们的自定义机器添加到兼容机器列表中。但是,当我继续构建时,我收到此错误:

NOTE: Resolving any missing task queue dependencies ERROR: Nothing PROVIDES 'at91bootstrap-sam-ba' at91bootstrap-sam-ba was skipped: incompatible with machine axon-ft3-sp-machine (not in COMPATIBLE_MACHINE)

我很困惑,因为在 meta-atmel 中定义 at91bootstrap-sam-ba 的配方文件没有提到任何兼容的机器,所以我想从 meta-atmel 层使用它而不需要更改它。(已编辑)

0 投票
0 回答
68 浏览

microcontroller - 使用 ATMEL-ICE 闪烁 ATSAME51N19

我正在尝试使用 Atmel-ICE 刷新 ATSAME51N19 芯片,因为它具有旧的引导加载程序和固件。但是出现错误Verifying Flash...Failed! address=0x0000 expected=0x80 actual=0xff 并且保险丝是

我认为问题出在保险丝上,如何重置所有保险丝并进行编程?我该如何解决这个闪烁的问题。

数据表

0 投票
1 回答
78 浏览

c - 配置 ATSAM3x8e 端口输出

我在将 SAM3x8e 端口配置为输出时遇到问题,当我用万用表检查引脚时,我得到 1.5V,因此端口 A 的引脚 0 没有打开。我相信我将端口引脚配置为正确输出为输出,但我不知道,我没有调试器来查看内部发生的情况。

0 投票
1 回答
39 浏览

windows - USB 堆栈混淆/串行仿真器

我正在考虑在内置 USB 引擎的 MCU 上实现 USB 通信。基本上你可以访问管道/端点。

我现在对 USB 堆栈有点困惑。似乎驱动程序在管道/端点设置之上的另一个级别上运行,因此管道/端点就像构建驱动程序的中间层。这个对吗?

其次,我对通过 USB 模拟串行通信感兴趣。看来windows有一个预制的驱动程序,所以在计算机端我不需要对管道级别进行编程。

如何找出我需要在 MCU 上实现什么才能使其与通用串行驱动程序正确运行?

0 投票
1 回答
120 浏览

c - 变量随机变化,极其奇怪的行为

我正在经历变量随机变化的极其奇怪的行为。

我将其提炼为最简单的示例,encoder_1_position并使用函数encoder_2_position内的随机值进行更新 NVIC_SetPriority(UART_IRQn,2);。我已经对文件中的全局变量的声明进行了重新排序,我注意到它对于添加什么/是否添加垃圾会有所不同。我在链接器命令中禁用了“删除未使用的部分”,它似乎解决了问题(显然 BSS 部分被丢弃了),但我不明白为什么,特别是因为我拥有的每个全局变量都是用 volatile 声明的。

将缓冲区大小从 1000 减少到 100 似乎可以纠正编码器变量的随机变化,但我不相信这是一个实际的修复,也不应该是必需的。SAM3X8E 有 65kbytes 的内存——无论如何堆栈都不会溢出。

自述输出: