问题标签 [samd21]

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 回答
1799 浏览

arm - 如何使用任何引脚在外部中断时实现 Adafruit Feather M0 睡眠和唤醒?

我目前正在使用Adafruit Feather M0微处理器进行低功耗项目。我的项目的一个要求是能够使 CPU 休眠并使用从 MPU6050 加速度计触发的外部中断再次唤醒它。

我已经从 GitHub 测试了以下代码示例 - 它成功运行!我需要回答的问题是如何更改此示例代码以在羽毛的引脚 13 上工作,而不是在引脚 6 上工作。

根据引脚分配图和 Atmel 数据表,我正在努力找出要进行哪些更改以允许引脚 13 以与引脚 6 相同的方式工作。

爱特梅尔数据表 Feather M0 引脚图

显而易见的解决方案是更改以下几行...

由于引脚图上引脚 13 旁边的 ENINT^1,我怀疑通道 1 (WAKEUPEN1)。但这不起作用,代码引脚操作没有表现出与引脚 6 设置相同的行为。

对于如何在 Pin 13 上实现此代码的任何建议,我将不胜感激。非常感谢您的支持。

0 投票
0 回答
87 浏览

arduino - 如何控制多个SPI

我的 SAMD21 板遇到了一点问题。我有这个入门套件(原理图),我想添加更多传感器。他们使用 SPI,所以我对它们进行了编程。由于 SAMD21 每次都得到它滞后的代码,所以当代码到达时传感器开始功能。请给我一些建议,如何正确控制两个 SPI 并避免滞后。

*滞后是总滞后 - SAMD21 在达到开始功能后什么也不做。

*原理图:http: //kit.sciencein.cz/wiki/images/b/be/MainBoard_v2.0_RevB_SCH.png

*对不起代码中的错误(将长代码剪短)

*我的代码:

0 投票
2 回答
712 浏览

c++ - 如何确定 CRC16 初始校验和,因此生成的校验和为零

在 SAMD MCU 阵列之间的 SPI 通信总线上工作。

我有一个类似的传入数据包{ 0x00, 0xFF, 0x00, 0xFF }。接收器芯片对传入的数据包执行 CRC16 检查。

由于我每次都期待完全相同的数据包,因此我希望在数据包有效时具有零 CRC 校验和,而不是在传输错误时具有零校验和。

我知道我可以在发送数据包时将计算出的 CRC16 添加到数据包的末尾,并且在接收端,CRC 校验将输出 0,但在这种情况下,由于数据包是构造的,因此不可能向数据包添加 CRC16 校验和通过 SPI 线上的多个发送芯片,每个芯片只从整个数据包中填充自己的两个字节。

我需要在接收端加载初始 CRC 校验和,因此在检查传入数据包后,生成的 CRC 等于零(如果数据包完好无损)。

SO上这里的答案其实是我要找的,但是是针对CRC32格式的,我其实对代码的原理不是很了解,所以无法重写if for CRC16格式。

任何帮助将不胜感激!

问候, 尼科

0 投票
0 回答
79 浏览

c++ - 嵌入式系统:WDT / sleep fct 后声音丢失

我希望这里有一些在嵌入式系统方面有高级经验的人:我设计了一个带有 Atmel Samd21 MCU 的 PCB,它应该通过放大器 TAS5805(通过 i2s 连接)播放 .wav 文件。.wav 文件通过 DMA(来自 SD 卡的数据)运行。一切正常,我可以听到我选择的声音。但是当我开始运行看门狗定时器或睡眠功能时,之后我就听不到我的声音了,即使我之前再次禁用了 WDT。

我的问题是:初始化另一个时钟会影响 MCU 中的时钟吗?我猜 RT 时钟和 i2s 同步有一些问题。有人有类似的问题并且知道如何解决吗?我很感激每一个建议/方法。

我还附加了一个测试代码。也许这有助于理解我在说什么。

谢谢!

0 投票
0 回答
36 浏览

arm - 控制 GPIO 管脚:所有管脚一个类别还是每个管脚一个类别?

我正在为 SAMD21 编写我的第一个程序,我将创建 GPIO 类。

我想知道为所有引脚创建一个类是否更好,例如arduino:

pinMode(led, OUTPUT)

或为每个引脚创建类,例如:

led.pinMode(OUTPUT)

在专业项目中是如何完成的?

0 投票
1 回答
128 浏览

c++ - 可以测试SPI通信winhout外部模块

我有一个非常简单的问题,我想...我正在使用两个 SPI 通信(一个类 SPI 和第二个 int SPI)在 SAMD21 板上编程,我认为 int SPI 无法正常工作。如果我连接一些传感器,它不会在串行监视器上打印任何内容。我很确定,我的代码没问题,但也许会有一些错误......

所以我需要知道,是否有某种方法可以测试将外部设备连接到电路板的 SPI winhout。请不要讨厌代码太长,我使用的 SPI 传感器的代码标有“//SPI”。

PS:对不起,我删除了 SMUART 和 MICS6814 的测量和校准功能,只使用了 30 000 个字符。完整代码在这里:https ://mega.nz/file/2QxG0ayZ#4UpEU17ogXnm2NK22zAowlDDRrXzksPzzs05zbuq23o

//SPI

0 投票
2 回答
611 浏览

c++ - SAMD21如何使用TCC设置PWM?

我正在编程 SAMD21,我需要 PWM 当我选择具有 F 功能 TCC0 输出的引脚时:PA22 - TCC0/WO[4] PA23 - TCC0/WO[5]

我成功配置了 TCC0 基本计数器:

但问题是如何配置比较通道 - SAMD21 只有 4 个比较通道 (CC),但我希望输出到 WO[4] 和 WO[5]。

如何将给定的比较通道连接到 WO[x] 引脚?

感谢您的回答

编辑:

我还将引脚配置为多路复用(不确定是否正确):

0 投票
0 回答
147 浏览

microcontroller - Atmel SAMD21 DMAC 写回失败?

我在 Atmel SAMD21G18A(在 Arduino MKR1000 中)中使用多个 DMA 通道,我看到一些明显不正确的行为。

DMA 通道 2 和 3 为 SERCOM SPI 通道提供服务,使用带有完成中断的单块传输。DMA 通道 0 连续向 DAC 写入一系列值,由 TCC 通道触发。它对块使用单个描述符,该描述符链接到自身,以便以 TCC 确定的速率连续运行(每拍 10us,但改变这一点并不能防止问题发生)。

我看到的问题是,在运行一段时间后,通常在 5 秒到几分钟之间,通道 0 停止 - 表示没有错误,只是 TCMPL(传输完成)。如果我启用 TCMPL 中断,则在通道停止时发出中断 - 但不是在此之前,而它正在愉快地重复。在 DMAC ISR 中摆动 GPIO 表明故障总是发生在通道 2 或 3 完成块传输之后。

当我检查描述符写回数组时,我发现通道 0 的通道数据已写入通道 2 或通道 3 的确切通道数据——这表示传输完成,导致通道 0 停用。周围的内存都没有受到影响,如果我分配不同的 DMA 通道,也会出现同样的问题。

我知道Silicon Errata中的第 1.7.2 项,但我通过确保启用的新通道(即通道 2 或 3)的通道号大于其他通道号(通道 0)来应用指定的解决方法)。

我假设我做错了其他事情-我怀疑自链接与它有关-但是当我正在制作一个最小的示例来分享时,我想知道是否有人遇到过类似的问题?

0 投票
1 回答
221 浏览

uart - 为什么 samd21 将 modbus 自己的响应作为主请求读取?

我正在将通过 RS-485(通过芯片 ADM2587EBRWZ)的从属 MODBUS RTU 通信添加到 SAMD21 现有程序中。只实现了读取保持寄存器和写入单个寄存器命令,因为我不需要更多。

为了测试它,我使用 Microcom 的 PLC 作为主机。我让它运行了几个小时,但日志显示了一些 -3333 值(Microcom 使用 -3333 来显示读取该寄存器时发生错误)。检查 plc 终端,我注意到如果应答消息以“00 00 CRC_lo 00”结尾,则下一个请求是错误的。如果在 Atmelstudio 上调试,ATSAMD21 会读取相同的答案并将其检测为请求,从而向 PLC 提供非法数据地址响应。

回答后我在端口上做了一个 usart_reset 并清理了消息数组,知道它是什么吗?

2 注释:我对 C 编程很陌生,英语不是我的第一语言。

编辑:添加更多代码,如果需要其他任何内容,我可以发布它。这部分在主循环上:

第一个功能是:

最后一个:

ReadCommand_MODBUS 功能:

0 投票
0 回答
40 浏览

c++ - 断开设备与 PC 后如何避免睡眠模式问题?

我的卫星项目有问题。当我断开我的设备与 PC 的连接时,睡眠模式不起作用 - 我想这是因为我在代码中的某处具有功能if,其中包括(Serial.available()). 但我不确定,也就是说,为什么我需要你的帮助。我再次告诉你,如果设备连接到 PC 一切正常,从 PC 断开后就会开始出现问题。

谢谢您的回答!

PS:如果您不理解代码 - 比如如果您错过了什么,请不要担心,我只删除了设备进入睡眠状态时不使用的部分。如果您有问题,请向这些“超聪明-霍金甚至无法与他们的智慧相提并论”的版主投诉。

这是代码: