USB 포트에 직접 연결할 수있는 마이크로 컨트롤러는 무엇입니까?


9

기본적으로 USB를 통해 일부 데이터를 마이크로 컨트롤러로 보내면 마이크로 프로세서가 데이터를 디코딩하고 5V에서 실행되는 LED 라이트 스트립을 구동합니다. 작업에 적합한 마이크로 컨트롤러를 찾는 데 문제가 있습니다.

마이크로 컨트롤러에는 USB 통신을위한 2 개의 직렬 입력 포트, LED 스트립과 통신하기위한 2 개의 직렬 출력 포트가 있어야하며 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); 
  }
}

데이터를 래치하려면 스트립에 0을 보냅니다.


하나의 USB 연결 (양방향)과 하나의 직렬 연결 (양방향)을 의미한다고 생각합니다. 당신이 그림에 있다면, 18f4550 가족이 일을 할 것입니다.
Scott Seidman

1
LED 스트립의 프로토콜은 무엇입니까? 스트립의 데이터 시트 또는 웹 사이트에 대한 링크를 추가 할 수 있습니까?
Rocketmagnet

@Rocketmagnet이 LED 스트립 입니다. 데이터 시트는 중국어로되어 있지만 단순히 시리얼 인과 클럭 인이 있으며 라인에 0을 보내서 래치합니다.
Steve Barna

답변:


7

"두 개의 직렬 출력 포트"는 하나의 UART를 의미한다고 생각합니다 (USB를 2 개의 포트로 설명하기 때문에). Rocketmagmet 은 많은 / 대부분의 LED 스트링이 SPI를 사용하지만 적어도 3 개의 와이어가 필요하다는 것을 나타냅니다. 필요한 프로토콜을 지정할 수 있습니까?

일반적으로 Microchip은 이번에도 가장 저렴한 마이크로 컨트롤러를 보유하고 있습니다. 그리고 Microchip은 DIL 패키지에 다수의 마이크로 컨트롤러를 보유하고 있으며 다른 많은 업체들이이를 포기했습니다. DIY에 중요 할 수 있습니다. PIC18F13K50

  • DIL-20 및 SMT 패키지 모두에 존재
  • 5V에서 작동 (LED 스트립과의 인터페이스 용)
  • 저렴한 가격으로 $ 2.5 (알 맞습니다. 그러나 USB 가능 컨트롤러 기본 유형보다 약간 비쌉니다)
  • UART 인터페이스를위한 USART 향상
  • 당신이 의미하는 경우 SPI 인터페이스를 가지고
  • 25mA 소스 및 싱크 I / O가 있으므로 필요한 경우 몇 개의 표시기 LED를 직접 구동 할 수 있습니다

또한 독서
임베디드 장치에 USB 일반 기능 , 마이크로 칩 애플리케이션 노트 AN1166


그는 LED 스트립을 언급하므로 동기 프로토콜 (데이터 반환 핀이없는 SPI)이라고 가정합니다. 해당 PIC에는 1 개의 SPI 포트만 있으므로 적합하지 않습니다. 그는 프로토콜을 비트 뱅 할 수 있지만.
Rocketmagnet

@Rocket-SPI라고하는 곳은 어디입니까? 그리고 그는 두 개의 SPI 버스가 필요하지 않습니다. SPI는 다중 슬레이브입니다. 그리고 Scott이 논평을하고 답을 시작할 때 두 포트에서 두 핀을 의미한다고 생각합니다. 그것이 UART에 대해 먼저 생각한 이유입니다.
stevenvh

아마도 PIC18F24J50? 그러나 그것은 3.3v 부품이므로 LED 스트립과 인터페이스 할 것인지 모르겠습니다.
Rocketmagnet

1
그는 그것이 SPI라고 말하지는 않지만 전에 LED 스트립을 사용해 왔으며 항상 동기식입니다. 내가 틀렸을 수도있다. 그는 내가 본 적이없는 다른 종류의 LED 스트립을 의미 할 수도 있습니다. 시계와 데이터를위한 두 개의 핀을 의미한다고 생각합니다.
Rocketmagnet

실제로, 나는 그 질문을 잘못 읽고 그가 두 개의 LED 스트립을 말했다고 생각했습니다! 그는 실제로 하나의 LED 스트립에 두 개의 핀을 말했다. 그래서, 당신은 원래 제안과 마찬가지로.
Rocketmagnet

4

LED 스트립에는 간단한 직렬 인터페이스가 있습니다. 컴퓨터로 제어하려는 경우 FTDI 칩을 사용하여 핀을 흔들 수 있습니다. http://www.ftdichip.com/Products/ICs/FT232R.htm

그런 다음 libftdi 또는 D2XX 라이브러리를 사용하여 PC 측에서 복잡성이 발생합니다 . 그러나 Arduino 예제와 비슷한 복잡성은 그리 나쁘지 않습니다.

하드웨어 제작이 마음에 들지 않으면 Mouser와 같은 FTDI 분배기 또는 Sparkfun 등에서 FTDI 칩을 사용하여 사전 제작 된 케이블을 구입할 수 있습니다. 케이블은 다른 전압 구성으로 제공되므로 신중하게 주문하십시오.

물론 프로젝트를 독립형 또는 자율적으로 유지하려는 경우 완전한 마이크로 컨트롤러 솔루션이 필요합니다.


USB 컨트롤러를 통해 원시 SPI 데이터를 LED 스트립으로 보내는 것을 고려해야합니다. Microchip은 USB-SPI를 만들어 자체 HID 장치로 설정하지만 FTDI 칩은 VCOM 또는 D2XX이며 아직 c ++ 프로그램에서 라이트 스트립을 실행하는 데 가장 적합한 것은 확실하지 않습니다.
Steve Barna

USB <-> UART 브리지 칩과 같은 가상 직렬 포트로 표시되는 USB <-> SPI 브리지를 인식하지 못합니다. 대신 SPI에 쉬운 비트 뱅잉 코드를 작성해야합니다.
markrages

3

PSoC3 사용을 고려하십시오 .

PSoc3

USB 및 원하는 거의 모든 주변 장치와 함께 사용할 수 있습니다. (그들은 소프트웨어로 구성되어 있습니다) 당신은 확실히 LED 스트립에 대한 두 개의 직렬 포트를 가질 수 있습니다. 원하는 경우 20을 가질 수 있습니다.

개발 환경은 또한 사용하는 기쁨입니다.

PSoC Creator


3
글쎄요, 약간 과잉 인 것 같습니다. 그러나 나는 그것을 조사 할 것이다.
Steve Barna

8
@Rocket-Digikey에서 PSOC가 언급 한 PIC의 두 배 이상이 든다는 것을 알았습니다. 16 UART와 같은 다른 마이크로 컨트롤러에서는 찾을 수없는 솔루션을 위해 구성 가능한 모든 주변 장치가 필요 하다면 금의 무게가 가치가 있다고 의심하지 않습니다 . 그러나 OP에는 USB 포트와 직렬 포트 (UART, SPI 또는 I2C) 만 있으면됩니다. 그러면 비교적 저렴한 컨트롤러를 선택하는 것이 훨씬 저렴합니다.
stevenvh

@stevenvh-PSoC는 비용이 많이들 수 있음에 동의합니다. 많은 기능을 활용할 수있을 때 생산에 가치가 있습니다. 그러나 프로토 타이핑에는 완전히 가치가 있습니다. 주변 장치를 올바르게 조합 한 특수 PIC를 찾아 갈 필요가 없으며 버튼 클릭 만으로 하드웨어 변경을 구현할 수 있습니다 !
Rocketmagnet

@Rocket- "버튼 클릭으로 하드웨어 변경 구현". 그렇습니다. Cypress 직원들이 저에게 계속 말한 것입니다. 나는 그것을 얻지 못한다 (나는 동료들과 이것에 대해 광범위하게 논의했고 그들 중 어느 것도하지 않았다) : 예를 들어 내 응용 프로그램의 타이머가 필요할 경우, 항상 필요하다가 잠시 동안 버리지 마십시오. 하드웨어와 다른 것을하고 싶기 때문입니다. 내가 ... 스크린 샷처럼, 구성 도구를 감사하고, 내가 그들의 HC05 컨트롤러에 작은 FPGA를 추가 할 (그들은 프리 스케일되기 전에)를 rhousand 시간을 모토로라 애원했지만,되지 않았 음
stevenvh

@Rocket-(계속) ... 인 애플리케이션 재구성을 위해 개발 중에 보다 유연한 컨트롤러를 사용하는 것이 었습니다 . 우리는 당시 모토로라의 큰 고객이었으며 HC05 혼란을 해결하는 방법에 대한 아이디어를 우리와상의했습니다. 수백 가지의 다른 유형이 있었으며, 다른 유형보다 더 성공했습니다. 따라서 1) FPGA 및 / 또는 2) 선택한 주변 장치를 (제한된) I / O에 연결할 수있는 크로스 포인트 스위치 어레이를 제안했습니다. 어쨌든 하드웨어는 죽었다. 모토로라는 더 이상 컨트롤러를 만들지 않습니다.
stevenvh

0

ATmega8U2 보다 간단해질 수는 없습니다 .

또한 Arduino 부트 로더와 함께 사용할 수도 있습니다 ...

데이터 시트 : http://www.atmel.com/Images/doc7799.pdf

(약간 간결해서 죄송합니다. 전화로 입력하고 있습니다)


2
다시 PC로 돌아 왔을 때 ( '앞에 있지 않아야합니까?') 정교하게 설명 할 수 있습니다. 이것이 가장 간단한 해결책은 무엇입니까? ATmega8U2가 PIC보다 50 % 더 비싸기 때문에 좋은 이야기가 될 것입니다.
stevenvh

1
빠른 프로토 타이핑을 위해 Arduino 환경을 사용할 수 있고 (포스터가 익숙합니다!) 빠른 테스트-고정주기를 허용하기 때문에 AVR 라인 (예 : ATmega)을 선호합니다. 그런 다음 코드를 수동으로 최적화하거나 Tiny2313과 같은 더 작은 AVR uC를 사용합니다 (BTW, AVR 용 소프트 USB 라이브러리가 있음). 나는 PIC를 좋아하고 싶었지만 (Arduino가 이륙하기 직전에) PIC를 살펴 보았을 때 AVR을 선택했습니다. 헝가리에서는 문서가 더 잘 지원되고 커뮤니티가 더 강력하다는 것을 알았습니다. 소량 생산에서 비용을 줄이기 위해 더 짧은 개발주기를 선택합니다.
ppeterka

1
정확한 이유는 무엇입니까? 설명 할까?
ppeterka
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.