ไมโครคอนโทรลเลอร์ตัวใดที่สามารถเชื่อมต่อโดยตรงกับพอร์ต USB


9

โดยพื้นฐานแล้วฉันแค่ต้องส่งข้อมูลบางอย่างไปยังไมโครคอนโทรลเลอร์ผ่าน USB จากนั้นไมโครโปรเซสเซอร์จะถอดรหัสข้อมูลและขับแถบไฟ LED ซึ่งทำงานที่ 5V ฉันมีปัญหาในการหาไมโครคอนโทรลเลอร์ที่เหมาะสมสำหรับงาน

ไมโครคอนโทรลเลอร์เพียงแค่ต้องมีพอร์ตอนุกรม 2 พอร์ตสำหรับการสื่อสารแบบ USB, พอร์ตอนุกรมสองพอร์ตสำหรับการสื่อสารด้วยแถบ LED และสามารถใช้งานที่ 5V ดูเหมือนว่าไม่จำเป็นต้องมี IC เฉพาะสำหรับการสื่อสาร USB เมื่อทั้งหมดที่ฉันต้องการคือการตั้งค่าพอร์ต COM แบบอนุกรม

ตัวอย่างเช่นต่อไปนี้เป็นตัวอย่างโค้ด Arduino ที่เขียนไบต์ไปยังแถบ LPD8806:

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 Strip แผ่นข้อมูลเป็นภาษาจีนอย่างไรก็ตามมีเพียงอนุกรมในและนาฬิกาเข้าและคุณ latch โดยการส่งศูนย์ลงบรรทัด
Steve Barna

คำตอบ:


7

ฉันเดาว่าด้วย "สองพอร์ตอนุกรมออก" คุณหมายถึงหนึ่ง UART (เนื่องจากคุณยังอธิบายถึง USB เป็น 2 พอร์ต) Rocketmagmetระบุว่าสตริง LED ส่วนใหญ่ / ส่วนใหญ่ใช้ SPI แต่ต้องใช้สายอย่างน้อย 3 เส้น คุณสามารถระบุโปรโตคอลที่คุณต้องการได้หรือไม่?

โดยทั่วไปแล้ว Microchip มีตัวควบคุมขนาดเล็กที่มีราคาต่ำที่สุดในเวลานี้ และ Microchip ก็มีไมโครคอนโทรลเลอร์จำนวนมากในแพ็คเกจ DIL เช่นกันส่วนอีกหลายคนก็คิดว่า อาจมีความสำคัญสำหรับ DIY PIC18F13K50

  • มีอยู่ในแพ็คเกจ DIL-20 และ SMT
  • ทำงานที่ 5 V (สำหรับเชื่อมต่อกับแถบ LED)
  • ราคาถูกเพียงแค่ $ 2.5 (ตกลงนั่นเป็นเรื่องสัมพัทธ์ แต่คอนโทรลเลอร์ที่สามารถใช้ USB นั้นมีราคาแพงกว่าแบบพื้นฐานเล็กน้อยกว่าเล็กน้อย)
  • ปรับปรุง USART สำหรับส่วนต่อประสาน UART
  • มีอินเทอร์เฟซ SPI ในกรณีที่คุณหมายถึง
  • มีแหล่งจ่ายไฟ 25 mA และซิงค์ I / O ดังนั้นคุณสามารถขับไฟ LED สองดวงได้โดยตรงหากจำเป็น

อ่านเพิ่มเติม
ฟังก์ชั่น USB Generic บนอุปกรณ์เอ็มเบ็ดเด็ด , Microchip Application Note AN1166


เขากล่าวถึงแถบ LED ดังนั้นฉันคิดว่ามันเป็นโปรโตคอลแบบซิงโครนัส (โดยทั่วไปคือ SPI โดยไม่มีขาส่งคืนข้อมูล) PIC นั้นมีเพียง 1 พอร์ต SPI ดังนั้นจึงไม่เหมาะ แม้ว่าเขาจะกัดโปรโตคอลได้บ้าง
Rocketmagnet

@Rocket - เขาบอกว่า SPI อยู่ที่ไหน และเขาไม่ต้องการรถบัส SPI สองคัน: SPI นั้นเป็นทาสหลายคน และอย่างที่สกอตต์แสดงความคิดเห็นและฉันก็พูดตอนเริ่มตอบฉันคิดว่าสองพอร์ตเขาหมายถึงสองพินนั่นคือสาเหตุที่ฉันคิดถึง 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ห้องสมุด แต่มันก็ไม่ได้เลวร้ายนักซับซ้อนคล้ายกับตัวอย่าง Arduino ของคุณ

หากคุณไม่รู้สึกอยากทำฮาร์ดแวร์คุณสามารถซื้อสาย premade ด้วยชิป FTDI จากตัวแทนจำหน่าย FTDI เช่น Mouser หรือจาก Sparkfun เป็นต้นสายเคเบิลมีให้เลือกในการกำหนดค่าแรงดันไฟฟ้าที่แตกต่างกันดังนั้นสั่งซื้ออย่างระมัดระวัง

แน่นอนถ้าคุณต้องการให้โครงการเป็นแบบสแตนด์อโลนหรือแบบอิสระคุณจะต้องการโซลูชันไมโครคอนโทรลเลอร์แบบเต็ม


ฉันควรพิจารณาส่งข้อมูล SPI แบบดิบไปยังแถบ LED ผ่านตัวควบคุม USB Microchip สร้าง USB เป็น SPI ซึ่งตั้งค่าตัวเองเป็นอุปกรณ์ HID ในขณะที่ชิป FTDI เป็น VCOM หรือ D2XX และฉันไม่แน่ใจว่าจะเหมาะกับการใช้งานแถบไฟจากโปรแกรม c ++ ได้ดีที่สุด
Steve Barna

ฉันไม่รู้จัก USB <-> SPI bridge ที่แสดงเป็นพอร์ตอนุกรมเสมือนเช่น USB <-> UART bridge chips แต่คุณจะต้องเขียนรหัสการโจมตีบิตซึ่งเป็นเรื่องง่ายสำหรับ SPI
เครื่องหมาย

3

พิจารณาใช้PSoC3

PSoc3

สามารถใช้งานได้กับ USB และอุปกรณ์ต่อพ่วงเกือบทุกชนิดที่คุณต้องการ (มีการกำหนดค่าในซอฟต์แวร์) คุณจะสามารถมีพอร์ตอนุกรมสองพอร์ตสำหรับแถบ LED ได้ คุณอาจจะมี 20 ถ้าคุณต้องการ

สภาพแวดล้อมการพัฒนายังเป็นความสุขที่จะใช้

ผู้สร้าง PSoC


3
ดูเหมือนจะเกินความจริงไปหน่อย แต่ฉันจะดูมัน
Steve Barna

8
@Rocket - ฉันเห็น Digikey ว่า PSOC มีราคาสูงกว่า PIC ที่ฉันพูดถึงสองเท่า ฉันไม่สงสัยเลยว่าพวกเขามีค่าน้ำหนักของพวกเขาในทองคำ (เป็นรูปคำพูด) ถ้าคุณต้องการอุปกรณ์ต่อพ่วงที่กำหนดค่าได้ทั้งหมดสำหรับการแก้ปัญหาที่คุณจะไม่พบในไมโครคอนโทรลเลอร์ตัวอื่นเช่น 16 UART หรือมากกว่านั้น แต่ OP ดูเหมือนจะต้องการเพียงแค่พอร์ต USB และพอร์ตอนุกรม (UART, SPI หรือ I2C) แล้วมันก็ถูกกว่ามากที่จะเลือกคอนโทรลเลอร์ที่ค่อนข้างต่ำซึ่งมีเพียงนั้น
stevenvh

@stevenvh - ฉันเห็นด้วย PSoCs อาจมีราคาแพงอย่างเจ็บปวด มันคุ้มค่าจริงๆสำหรับการผลิตเมื่อคุณสามารถใช้ประโยชน์จากฟังก์ชั่นมากมายของพวกเขา แต่สำหรับการสร้างต้นแบบพวกเขามีค่าทั้งหมด คุณไม่จำเป็นต้องไปหา PIC พิเศษที่มีเพียงแค่การผสมผสานที่ถูกต้องของอุปกรณ์ต่อพ่วงและคุณสามารถใช้การเปลี่ยนแปลงฮาร์ดแวร์ที่คลิกปุ่ม!
Rocketmagnet

@Rocket - "ใช้การเปลี่ยนแปลงฮาร์ดแวร์ที่คลิกปุ่ม" ใช่นั่นคือสิ่งที่พวก Cypress บอกกับฉันตลอดเวลา ฉันไม่เข้าใจ (ฉันพูดถึงเรื่องนี้อย่างกว้างขวางกับเพื่อนร่วมงานของฉันและพวกเขาก็ไม่ทำเช่นนั้น): ถ้าฉันต้องการอินสแตนซ์ของตัวจับเวลาในแอปพลิเคชันของฉันมีโอกาสที่ฉันต้องการมันตลอดเวลา เพราะฉันต้องการทำสิ่งที่แตกต่างกับฮาร์ดแวร์ ฉันทำขอบคุณเครื่องมือการกำหนดค่าเช่นในภาพของคุณและผมได้ขอร้องให้โมโตโรล่า (ก่อนที่พวกเขากลายเป็น Freescale) ครั้ง rhousand เพื่อเพิ่ม FPGA ขนาดเล็กเพื่อควบคุม HC05 ของพวกเขา แต่ที่ไม่ได้ ...
stevenvh

@Rocket - (ต่อเนื่อง) ... สำหรับ reconfiguring ในแอพลิเคชันที่กำลังจะมีตัวควบคุมความยืดหยุ่นมากขึ้นในระหว่างการพัฒนา เราเป็นลูกค้าโมโตโรล่าครั้งใหญ่และพวกเขาปรึกษากับเราเพื่อหาแนวคิดในการทำความสะอาดระเบียบ HC05 มีหลายร้อยประเภทที่แตกต่างกันบางประสบความสำเร็จมากกว่าคนอื่น ๆ ดังนั้นฉันจึงแนะนำ 1) FPGA และ / หรือ 2) อาเรย์สลับจุดตัดเพื่อให้คุณเชื่อมต่ออุปกรณ์ต่อพ่วงที่เลือกกับ (จำกัด ) I / O; ฮาร์ดแวร์อยู่บนความตายอยู่ดี ไม่เกิดขึ้นและโมโตโรล่าไม่ได้ทำตัวควบคุมอีกต่อไป ...
stevenvh

0

ไม่สามารถรับได้ง่ายกว่านี้: ATmega8U2

ยิ่งไปกว่านั้นคุณสามารถใช้งานร่วมกับ Arduino bootloader ...

แผ่นข้อมูล: http://www.atmel.com/Images/doc7799.pdf

(ขออภัยที่กระชับเล็กน้อยฉันกำลังพิมพ์จากโทรศัพท์)


2
เมื่อคุณกลับมาด้านหลังพีซีของคุณ (ไม่ควร "อยู่หน้า" หรือไม่) คุณสามารถทำอย่างละเอียดได้: นี่เป็นวิธีแก้ปัญหาที่ง่ายที่สุดได้อย่างไร มันจะต้องเป็นเรื่องที่ดี :-) เนื่องจาก ATmega8U2 นั้นแพงกว่า PIC ถึง 50%
stevenvh

1
ฉันชอบสาย AVR (โดยเฉพาะ ATmega) เพราะสามารถใช้สภาพแวดล้อม Arduino สำหรับการสร้างต้นแบบอย่างรวดเร็ว (โปสเตอร์คุ้นเคยกับสิ่งนั้น!) และช่วยให้รอบการทดสอบการทดสอบได้อย่างรวดเร็ว จากนั้นฉันก็ปรับรหัสให้เหมาะสมด้วยตนเองหรือแม้กระทั่งใช้ AVR uC ที่เล็กลงเช่น Tiny2313 (BTW มี soft-USB libs สำหรับ AVRs) ฉันอยากจะชอบ PICs แต่เมื่อฉันมองพวกเขา (ก่อนที่ Arduino จะถอดออก) ฉันเลือก AVRs: ฉันพบว่าเอกสารของพวกเขาดีขึ้นและชุมชนเข้มแข็งขึ้น - แม้ว่าที่นี่ในฮังการี PICs ได้รับการสนับสนุนในอดีตมากกว่า ฉันจะเลือกนักพัฒนาที่สั้นลงเพื่อลดต้นทุนในการผลิตในปริมาณน้อย
ppeterka

1
ทำไมต้อง downvote สนใจที่จะอธิบาย?
ppeterka
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.