android - DTR/RTS 发送到基于 FTDI 的 Arduino 板后会发生什么?

标签 android upload usb arduino ftdi

我正在研究 sketch启用从 Android 设备上传到 Arduino 板,它适用于 Duemilanove (基于 FTDI 的)和 Arduino Uno (基于 ATmega 的)使用 rxtx 测试 PC/Arduino 时(纯 Java)。

但是在使用the USB-Android library时不起作用因为 setDTR/setRTS 方法尚未实现。

FTDI Android drivers允许发送 setDTR/setRTS 信号,但在它之后发送/读取数据失败。

所以问题出在 Android USB API 上,我不知道出了什么问题..

切换 DTR/RTS 后基于 FTDI 的 Arduino 板会发生什么情况?

我认为设备已重置并等待引导加载程序命令 (STK500) 约 50-250 毫秒。我说得对吗?

最佳答案

你是对的。原因是名为 Bootloader 的东西。

在最准系统的状态下,Arduinos 所基于的微 Controller (以下称为 uC)可以通过系统内编程 (ISP) 方法进行编程,这是 SPI protocol 的特定实现。 .我们唯一需要知道的是这不是串口或 USB。

为了使 AVR 芯片(和 Arduino 板)能够通过串行/USB 进行编程,我们将名为Bootloader 的程序(通过 ISP)加载到芯片上。引导加载程序通过串行链路读取您的程序数据并将其写入闪存。如果没有要加载的程序,引导加载程序会将控制权交给加载的程序。因此引导加载程序只能在打开或重置后激活:之后它运行您加载的程序并且永远不会再次激活。

大多数引导加载程序都设置为仅在重置后才查找编程数据,原因是等待串行数据涉及超时:您必须等待一段时间(比如 1/3/5/10 秒)查看是否有正在上传的程序,如果正在发送则加载程序。如果引导加载程序在每次打开 Arduino 时都查找编程数据,那么您的 Arduino 只会延迟激活,这被认为是不可取的。因此引导加载程序仅在重置后激活。

强制用户在每次想要对 Arduino 进行编程之前都必须按下复位引脚可能会很烦人,此外,在复位后立即开始发送串行数据(否则他们可能会错过超时窗口) ,所以Arduino的聪明人想出了一个技巧:使用DTS信号触发复位,然后发送数据。因此,您的 Arduino(如果不是很古老的话)设置为在接收到 DTS 信号时重置。

关于android - DTR/RTS 发送到基于 FTDI 的 Arduino 板后会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15499447/

相关文章:

android - 在自己的进程上运行的 Android 服务可以访问应用程序的/data/data/<package> 文件夹吗?

android - 从 Android 崩溃应用程序上传大视频到 PHP 服务器

java - 从android简单上传到S3

android - Nexus 5x 未显示在 Win7 上的 adb 中

Android 外部摄像头选项 - 覆盖在视频流之上,没有中间人服务器/路由器

java - 我怎样才能压缩我的 XML 和 Java 代码以使我的应用程序运行更流畅

java - 在 Android Studio 中安装并集成 Apache OpenNLP

javascript - JQuery 上传、预览、裁剪

javascript - 从匿名用户使用javascript将文件上传到Google驱动器

c# - 使用 Microsoft SDK 或 ManagementObjectSearcher 确定 Kinect 是否已插入