SAM 上的 Atmel ASF - pio_configure_pin 描述错误?

Posted

技术标签:

【中文标题】SAM 上的 Atmel ASF - pio_configure_pin 描述错误?【英文标题】:Atmel ASF on SAM - pio_configure_pin wrong described? 【发布时间】:2014-07-01 18:58:13 【问题描述】:

在尝试使用 Atmel 提供的 ASF 迈出第一步时,我咬紧牙关。

似乎 ASF 在很多地方都写得很低效,而且文档似乎不准确,或者我已经筋疲力尽,无法思考。

花费我很多时间的最新问题:

pio_configure_pin() versus pio_configure_pin_group()

此处描述:http://asf.atmel.com/docs/latest/sam3u/html/group__sam__drivers__pio__group.html#ga66c09a2f5c8d11223eb107cf8fbfddb2

根据文档: configure_pin 的第一个参数:ul_pin 要配置的一个或多个引脚的位掩码 configure_pin_group 的第二个参数:ul_mask 要配置的一个或多个引脚的位掩码

实际上: configure_pin 的第一个参数不是位掩码。 如果我想配置 Pin PB 28 我必须使用值 60 !

#define PIO_PB28_IDX 60

如果我想使用组功能配置相同的 Pin,我必须使用值 2415919104

#define PIO_PB28 (1u << 28) 

错误的文档、缺少示例以及包含错误示例的论坛条目导致我浪费了很多时间。 如果我在这里错了,请告诉我,也许我错过了文档中的某些内容。 毕竟PIO驱动很可能是最重要的驱动之一,几乎任何芯片的使用都需要它。而这两个功能真的很重要。

也许 Atmel SAM 的专家可以帮助我确定是否值得继续使用 ASF? 专家将其用于他们的开发还是从头开始编写所有内容更好。

对我来说,当从 AVR 开发开始时,所有的简单性似乎都消失了,而 ASF 是 Atmels 再次使其变得更容易的方法,但是如果它有 bug 并且没有处于正确的发布状态,它可能毫无用处。

【问题讨论】:

【参考方案1】:

没关系。错误经常发生在文档中。要乐观。你现在发现了它,你是主人。说真的,这没什么大不了的。一旦你发现它放在一个宏中或使用你自己的函数来进行这种 PIO 访问。我总是更喜欢打开一个标题,看看一个宏或函数如何访问所需的位字段。那里有点聪明的魔法。它通常接近于对特定架构的深入和低层次的理解,这对开发人员来说很好。一开始就花几个小时是值得的。

【讨论】:

【参考方案2】:

我也遇到过这个功能。 参数ul_pin实际上是一个pin的序号。从函数中可以看出,它首先用于通过找出如何将 Pio 指针指向正确的 PIO 控制器该序列号中有许多基于 32 的块。

所以你是对的,这是文档中的错误。

【讨论】:

以上是关于SAM 上的 Atmel ASF - pio_configure_pin 描述错误?的主要内容,如果未能解决你的问题,请参考以下文章

atmel at91sam9g20 以太网寄存器地址

Atmel SAM4S8B:无法进入编程模式

我可以在Atmel SAM E70处理器中使用“指令”TCM来获取数据吗?

Atmel SAM v71 XPlained - 无法与端口 C 一起使用

Atmel SAM3X 双组切换不起作用

在 Atmel SAM L21 Xplained Pro 上通过 UART 发送请求和接收响应的代码问题