电子说
在如今USB端口占据主导的时代,当我们需要将微控制器的日常串行数据传输到计算机时,FTDI Friend就派上用场了。它是一款经过改进的FTDI FT232RL芯片适配器,和常见的FTDI电缆一样,能为项目供电,还有4条信号线用于数据传输。但它的功能远不止于此,比如可以将信号和电源线设置为3.3V或5V,并且还提供了DTR线,满足不同的编程需求。默认情况下,它的设置与FTDI电缆相匹配,第6针是RTS,电源线为+5V,信号电平为3.3V(兼容5V,适用于大多数3.3V和5V信号系统)。
文件下载:284.pdf
如果使用的是FTDI电缆,其末端已有USB A连接器;若是FTDI适配器,则需要一根标准的mini - B电缆,常见的相机或手机数据线都可以使用。
在终端窗口中输入“ls /dev/cu.*”,会得到类似的响应,我们要找的名称是“/dev/cu.usbserial - XXXX”,其中XXXX对于每条电缆都是唯一的,将其复制粘贴到文本文件中以便后续使用。
在终端窗口中输入“ls /dev/ttyUSB*”,会看到类似“ttyUSB0”的设备文件。
通过“开始菜单” - “设置” - “控制面板”,双击“系统”,选择“硬件”选项卡,点击“设备管理器”。在“端口(COM & LPT)”下找到“USB串行端口(COM)”,COM编号可能不同,如COM3或COM4,最高可能到COM99。若未看到COM端口,需验证电缆是否插好,并检查是否安装了VCP FTDI驱动。右键点击该端口,选择“属性”,点击“端口设置”选项卡,再点击“高级...”,确保“Set RTS On Close”未被选中(在Arduino IDE版本18之前可能需要选中,现在不需要)。
编程AVR微控制器有两种方式:一种是使用AVR编程器对整个芯片进行重新编程;另一种是利用预编程在芯片上的引导加载程序让芯片自行重新编程。
这种方法无需焊接,但需要更新AVRDUDE软件并安装不同的驱动,可参考相关文档和链接。
这种方法需要对FTDI Friend进行一些操作。将FTDI Friend翻面,在左下角的DTR引脚焊上一点焊锡,再焊上一根白色导线,注意不要与右边的金色方块短路。将黑色导线接GND,蓝色导线接CTS,红色导线接VCC,橙色导线接TX,绿色导线接RTS。然后需要对avrdude.conf文件进行编辑,找到“ponyser”字符串,在其前面添加相应内容。保存文件后即可进行后续操作。不过这种方法速度较慢,适合烧录引导加载程序,不太适合日常AVR开发。
打开Arduino IDE安装目录下的“programmers.txt”文件,在底部添加以下内容:
ftdifriend.name=FTDI Friend bitbang
ftdifriend.communication=serial
ftdifriend.protocol=ftdifriend
保存文件。
启动Arduino IDE,选择FTDI Friend的COM端口,确保选择了正确的开发板,然后选择“烧录引导加载程序” - “FTDI Friend”。烧录过程非常耗时,大约需要两个小时,因为编程效率较低。烧录时,引脚13的LED会一直亮着,熄灭表示烧录完成。
如果使用Arduino IDE内的AVRdude安装程序,打开cmd终端,进入IDE安装目录下的“hardwaretoolsavr”目录,运行“binavrdude.exe -C etcavrdude.conf -c ftdifriend”。运行后可能会提示“未指定AVR部件”,这是正常的。
连接线路与编程Arduino引导加载程序时相同。通过运行“avrdude -c ftdifriend -P .COMxx -p atmega328p”来验证连接,将“.COMxx”替换为之前通过设备管理器找到的COM端口。如果使用Linux或Mac系统,COM端口应替换为“/dev/cu.usbserialXXX”或“/dev/ttyUSBx”。对于设备,这里以Atmega328p芯片为例,若使用其他芯片,需替换“-p”后面的名称。
验证连接成功后,使用“-U flash:w:”命令进行芯片编程。例如,要烧录引导加载程序,可以运行“binavrdude.exe -C etcavrdude.conf -c ftdifriend -P .COM46 -p atmega328p -U flash:w:....arduinobootloadersatmegaATmegaBOOT_168_atmega328.hex”。烧录大约每字节数据需要5分钟。
可以在GitHub上获取FTDI Friend的原理图和布局文件,其遵循CC归属/共享许可协议。还可以在Adafruit Fritzing库中找到Fritzing对象。
在使用FTDI Friend进行开发的过程中,大家是否遇到过一些独特的问题呢?欢迎在评论区分享你的经验和疑问。
全部0条评论
快来发表一下你的评论吧 !