电子说
在微控制器的世界里,引脚资源常常十分宝贵。有时候,我们仅仅需要一两个额外的引脚,但又不想更换更大的开发板。Adafruit 的 DS2413 1-Wire GPIO 开发板就是解决这个问题的理想方案。下面就为大家详细介绍这款开发板的相关信息。
文件下载:1551.pdf
DS2413 开发板每个板子有 2 个开漏 GPIO 引脚和一个 1-Wire 接口。只用一个 Arduino 引脚,就能控制连接在 1-Wire 总线上的多个 DS2413 开发板。理论上,由于每个芯片有 48 位唯一地址,一个 Arduino 引脚最多可以控制 2 * 2^48 个引脚,但实际中,Arduino 的内存会先耗尽。
开发板出厂时已预先组装和测试好,还提供了用于面包板的可选排针。安装排针很简单,先根据需要裁剪排针长度,将其放在面包板上(长引脚朝下),再把开发板对准排针,最后焊接每个引脚以确保良好的电气连接。如果您是焊接新手,可以参考 Adafruit 的焊接指南。
DS2413 的输出是“开漏”的,即输出是 N 沟道 FET 的“漏极”,FET 的“源极”内部连接到地,漏极则是开放的。当开关打开时,FET 为电流从输出引脚流到地提供路径。由于没有内部连接到 VCC,开漏输出不像 Arduino GPIO 引脚那样输出电压,必须提供外部上拉电阻。不过,这种配置具有很大的灵活性,因为输出电压不依赖于开发板的工作电压,可以使用各种电源。DS2413 中的 FET 能够切换高达 28V 的电压和 20mA 的电流。
通过 OneWire 库的 read() 和 write() 函数对 DS2413 进行读写操作。这两个函数一次读写一个字节,因此需要使用一些二进制运算来分离对应于 2 个 GPIO 引脚的 2 位。
在示例代码中,通过交替写入 0x0 和 0x3 来闪烁两个 LED。0x3 是二进制数 B00000011 的十六进制表示,在 DS2413 中,低位(最右边的一位)对应 IOA,相邻的一位对应 IOB。写入 0x3 会将两个引脚都置为二进制的 '1',从而打开两个引脚。如果只打开 IOA,可以写入 0x1(B00000001);只打开 IOB,可以写入 0x2(B00000010)。
读取 GPIO 引脚稍微复杂一些,需要从 read() 返回的字节中分离出各个引脚的值。read() 可以返回 5 个值之一:
要提取单个引脚的状态,需要使用“按位与”运算符“&”。例如,如果 IOA 为 HIGH,代码会打印“A”;如果 IOB 为 HIGH,会打印“B”。
大家在使用这款开发板的过程中,有没有遇到什么有趣的问题或者有什么独特的应用呢?欢迎在评论区分享。
全部0条评论
快来发表一下你的评论吧 !