哪些微控制器可以直接连接到USB端口?


9

本质上,我只需要通过USB向微控制器发送一些数据,然后微处理器对数据进行解码并驱动LED灯条,该灯条的工作电压为5V。我很难找到适合该工作的微控制器。

该微控制器仅需要具有2个用于USB通信的串行输入端口,两个与LED灯条通信的串行输出端口,并且能够在5V电压下工作。当我需要的只是一个串行COM端口设置时,似乎不需要专用的USB通信IC。

例如,这是将一个字节写入LPD8806条的Arduino代码段:

void write8(uint8_t d) {
  for (uint8_t i=0; i<8; i++) {
    if (d & _BV(7-i))
      digitalWrite(dataPin, HIGH);
    else
      digitalWrite(dataPin, LOW);
   digitalWrite(clockPin, HIGH);
   digitalWrite(clockPin, LOW); 
  }
}

要锁存数据,请将零发送到测试条。


我认为您的意思是一个USB连接(它们是两种方式)和一个串行连接(也是两种方式)。如果您喜欢照片,则18f4550系列将完成这项工作。
Scott Seidman

1
LED灯带的协议是什么?您可以添加一个链接到测试条的数据表或网站吗?
Rocketmagnet

@Rocketmagnet这是LED灯。数据表是中文的,但是只有串行输入和时钟输入,您可以通过沿行发送零来进行锁存。
史蒂夫·巴纳

Answers:


7

我猜“两个串行输出端口”表示一个UART(因为您还将USB描述为2个端口)。Rocketmagmet指出许多/大多数LED串都使用SPI,但是这至少需要3根线。您可以指定所需的协议吗?

总的来说,这一次Microchip也拥有成本最低的微控制器。 Microchip的有DIL封装许多微控制器为好,而许多人都抛弃这一点。对于DIY可能很重要。该PIC18F13K50

  • DIL-20和SMT软件包中都存在
  • 在5 V下工作(用于与LED条连接)
  • 成本低,在$ 2.5(OK,这是相对的,但USB控制器能够超过基本类型一个有点贵)
  • 具有增强的USART用于UART接口
  • 有一个SPI接口,以防您
  • 具有25 mA的源和灌I / O,因此如果需要,您可以直接驱动几个指示灯

进一步阅读
嵌入式设备上的USB通用功能,Microchip应用笔记AN1166


他提到了LED灯带,所以我假设它是一个同步协议(基本上是SPI,没有数据返回引脚)。该PIC仅具有1个SPI端口,因此不适合。尽管他可能会违反协议。
Rocketmagnet

@Rocket-他在哪里说这是SPI?而且他不需要两条SPI总线:SPI是多从机。就像斯科特(Scott)所说的,我在回答之初也说过,我认为通过两个端口,他意味着两个引脚,这就是为什么我首先考虑UART的原因。
stevenvh 2012年

也许是PIC18F24J50?但这是3.3v的一部分,所以我不知道它是否会与LED灯条接口。
Rocketmagnet

1
他没有说这是SPI,但是我以前使用过LED灯带,它们一直都是同步的。我可能是错的。他可能意味着我从未见过的另一种LED灯条。我认为他的意思是时钟和数据的两个引脚。
Rocketmagnet

实际上,我误解了问题,以为他说了两个LED灯带!他实际上说一个LED灯带有两个引脚。所以,呃,就像您最初的建议一样。
Rocketmagnet

4

您的LED灯带具有简单的串行接口。如果您只是想通过计算机来控制它,则可以使用FTDI芯片摆动引脚:http : //www.ftdichip.com/Products/ICs/FT232R.htm

然后,复杂性在PC端使用libftdiD2XX库。但这还不错,类似于您的Arduino示例的复杂性。

如果您不想制造硬件,则可以从FTDI分销商(例如Mouser)或Sparkfun等公司购买带有FTDI芯片的预制电缆。电缆有不同的电压配置,因此请谨慎订购。

当然,如果您希望项目以某种方式独立或自治,则将需要完整的微控制器解决方案。


我应该考虑通过USB控制器将原始SPI数据发送到LED灯带。Microchip制作了一个USB-to-SPI并将其设置为HID设备,而FTDI芯片是VCOM或D2XX,我不确定哪一个最适合从c ++程序运行灯带。
史蒂夫·巴纳

我不知道像USB <-> UART桥芯片那样显示为虚拟串行端口的USB <-> SPI桥。取而代之的是,您将不得不编写位撞代码,这对于SPI很容易。
2012年

3

考虑使用PSoC3

PSoc3

它们可通过USB以及几乎所需的所有外围设备使用。(它们是通过软件配置的)您当然可以为LED灯带提供两个串行端口。如果需要,您可能可以拥有20个。

开发环境也是一种使用乐趣。

PSoC Creator


3
好吧,这似乎有点矫kill过正。但我会调查一下。
史蒂夫·巴纳

8
@Rocket-我在Digikey上看到PSOC的成本是我提到的PIC的两倍以上。我毫不怀疑,如果您需要所有这些可配置的外围设备,那么对于在其他任何微控制器(例如16 UART左右)上找不到的解决方案,它们就象是金币一样值得。但是OP似乎只需要一个USB端口和一个串行端口(UART,SPI或I2C),那么选择具有此功能的相对低端的控制器便宜得多。
stevenvh 2012年

@stevenvh-我同意,PSoC可能会非常昂贵。只有当您可以利用它们的许多功能时,它们才真正值得生产。但是对于原型来说,他们完全值得。您永远不必去寻找那种只有外设正确组合的特殊PIC,您只需单击一个按钮就可以实现硬件更改!
Rocketmagnet 2012年

@Rocket-“单击按钮即可实施硬件更改”。是的,那正是赛普拉斯人不断告诉我的。我不了解(我与同事进行了广泛的讨论,他们也没有这样):如果我在应用程序中需要一个计时器,则可能是我一直都需要它,而不是一时扔掉因为我想对硬件做一些不同的事情。我非常感谢您在屏幕截图中所展示的配置工具,并且我恳求摩托罗拉(在成为飞思卡尔之前)向其HC05控制器添加小型FPGA,但这并不是...
stevenvh 2012年

@Rocket-(继续)...用于应用程序内重新配置,即在开发过程中具有更灵活的控制器。当时我们是Motorola的大客户,他们向我们咨询了如何清理HC05混乱的想法。有数百种不同的类型,其中一些比其他类型更成功。所以我建议1)FPGA,和/或2)交叉点开关阵列,让您将选定的外设连接到(有限的)I / O;无论如何,硬件已经死了。两者均未发生,摩托罗拉不再制造控制器...
stevenvh 2012年

0

没有比这更简单的了:ATmega8U2

最重要的是,您甚至可以将其与Arduino bootloader一起使用...

数据表:http//www.atmel.com/Images/doc7799.pdf

(很抱歉,我正在用手机打字)


2
当您回到PC后面(难道不是在“ PC前面”?)时,您可以详细说明一下:这是最简单的解决方案吗?这一定是个好故事:-),因为ATmega8U2比PIC贵50%。
stevenvh 2012年

1
我赞成AVR产品线(尤其是ATmega),因为可以使用Arduino环境进行快速原型制作(海报很熟悉!),并允许快速的测试-修复周期。然后,我手动优化代码,甚至使用较小的AVR uC,例如Tiny2313(顺便说一句,有用于AVR的软USB库)。我想喜欢PIC,但是当我看着它们时(就在Arduino起飞之前),我选择了AVR:我发现他们的文档更好,社区更强大-尽管在匈牙利,PIC在历史上得到了更多的支持。我会选择较短的dev.cycle以降低小批量生产的成本。
ppeterka '10

1
究竟为什么要投反对票?介意解释吗?
ppeterka
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.