Ứng dụng của usb cp2102. Sử dụng bộ chuyển đổi usb-to-com để kết nối bộ điều khiển ECM của ô tô với PC

Lập trình các bộ điều khiển Arduino và không phải Aduino khác nhau, nhận thông tin đến máy tính từ mọi thứ có giao diện nối tiếp với logic TTL.
Tôi sử dụng nó trong các dự án của mình với Arduino Pro MIni, Gboard/Iboard và bộ điều khiển tự chế.

Nó khác với các thiết bị tương tự khác như thế nào?

  1. Một chân DTR bổ sung, có thể được kết nối trực tiếp với đầu vào RESET trên bộ điều khiển không có USB trên bo mạch. Sau đó, không cần nhấn nút RESET trong khi lập trình. Điều này rất thuận tiện cho tôi khi bộ điều khiển được giấu sâu trong thiết bị của tôi và việc truy cập vào nút có thể rất khó khăn.
  2. Hỗ trợ của nhà sản xuất, tương thích với trình điều khiển và phần mềm gốc, không giống như FTDI giả có vấn đề với trình điều khiển gốc
  3. Ví dụ: các chân bổ sung (lỗ cho danh bạ) trên bo mạch, cho phép bạn đặt USB ở chế độ tiết kiệm năng lượng.
  4. Một cơ hội thú vị là thay đổi VID, PID và văn bản mà bảng được nhận dạng, để lắp ráp trình điều khiển của riêng bạn với các tham số cần thiết, điều này khá thú vị trong các dự án thương mại. Tôi sẽ nói thêm về điều này.

Đặt hàng ở đâu?

Đặc trưng

  • Chip CP2102 của Phòng thí nghiệm Silicon
  • Tốc độ trao đổi dữ liệu qua UART 300Bit/giây - 1Mbit/giây
  • Đọc bộ đệm 576 byte, ghi 640 byte
  • Hỗ trợ USB 2.0 12Mbps
  • Hỗ trợ chế độ USB TẠM NGỪNG
  • Tích hợp bộ điều chỉnh nguồn 3.3V 100mA
  • EEPROM với thông số cấu hình 1024 byte
  • Hệ điều hành được hỗ trợ Windows 8/7/Vista/Server 2003/XP/2000, Windows CE, Mac OS-X/OS-9, Linux, Android
  • Khả năng tùy chỉnh các thông số bảng mạch và trình điều khiển cho dự án của bạn
  • Kích thước bảng 26,5 x 15,6 mm

Bảng mạch có thêm các lỗ để bạn có thể hàn các chân để điều khiển modem bổ sung và chuyển USB sang chế độ TẠM NGỪNG

Kích thước của bo mạch hơi khác so với các bộ chuyển đổi USB/UART tương tự khác

  1. Bo mạch FOCA 2.2 được sử dụng cho các dự án thương mại với bộ điều khiển Gboard/Iboard
  2. Bộ chuyển đổi FT232 giá rẻ đã qua sử dụng hiện nay
  3. Đã đánh giá CP2102

Kết nối và cài đặt CP2102

Trước khi sử dụng bo mạch, bạn phải cài đặt trình điều khiển từ trang web chính thức của Si-Labs

  • Để kết nối với bộ điều khiển bạn cần 5 dây:
  • GND - GMD
  • VCC - V5.0 (V3.3) tùy theo bo mạch được sử dụng
  • TX - RX
  • RX - TX
  • THIẾT LẬP LẠI bộ điều khiển - DTE


Bây giờ bộ điều khiển có thể được lập trình mà không cần nhấn nút RESET.

Thay đổi VID, PID và các đặc tính chuyển đổi khác

Bo mạch được hệ thống công nhận là Silicon Labs CP210X USB to UART Bridge (COM35)

Đôi khi trong các dự án thương mại cần thiết để thiết bị có tên thương mại riêng khi lập trình. Chip CP2102 và bo mạch trên đó mang lại cơ hội tuyệt vời cho việc này

Đầu tiên tải và chạy tiện ích cấu hình thông số EEPROM CP1202 (mình cũng cần tải Java Runtime để chạy tiện ích)

Bây giờ bạn có thể thay đổi các cài đặt sau:

  • ID nhà cung cấp (VID). ID nhà sản xuất. Giá trị mặc định là 10С4 (định dạng thập lục phân). Trong trường hợp này, nó thuộc về SiLabs.
  • ID sản phẩm (PID). ID sản phẩm. Giá trị mặc định là EA60 (định dạng thập lục phân). Trong trường hợp này nó đề cập đến tất cả các cầu CP210x.
  • Công suất tối đa. Mức tiêu thụ dòng điện tối đa được yêu cầu bởi cầu nối trên bus USB. Giá trị mặc định là 32 (định dạng thập lục phân). Giá trị tối đa 500mA
  • Thuộc tính sử dụng năng lượng. Ăn kiêng. Bus-Powered (nguồn bus USB) hoặc Self-Powered (nguồn từ nguồn bên ngoài).
  • Phiên bản phát hành. Số phát hành. Giá trị mặc định là 1.0. Các trường có thể lấy giá trị 1-99 ở phần toàn bộ và phần phân số.
  • Số seri. Số seri. Giá trị mặc định là “0001” (định dạng văn bản). Trường có thể chấp nhận bất kỳ giá trị văn bản nào dài tối đa 64 ký tự. Cần kết nối nhiều thiết bị với máy tính
  • Chuỗi sản phẩm. Trường có thể chấp nhận bất kỳ giá trị văn bản nào dài tối đa 126 ký tự. Mã nhận dạng này được hiển thị trong hệ điều hành khi cầu CP210x được kết nối lần đầu với máy tính và giúp người dùng chọn trình điều khiển thích hợp
  • Khóa dữ liệu tùy chỉnh. Bảo vệ dữ liệu cấu hình.

Trong môi trường mà các máy tính hiện đại đang nhanh chóng mất cổng COM, bộ chuyển đổi USB<->COM là một thứ rất hữu ích và cần thiết đối với những người buôn bán radio rác. Nhưng cũng là một bộ chuyển đổi USB<->UART cũng là một thứ hữu ích và cần thiết. Đương nhiên, tôi muốn có cả hai và một thứ khác, chứ không phải tất cả đều quá đắt.

Ngày nay, việc mua hoặc lắp ráp bất kỳ thiết bị nào trong số này không phải là vấn đề. Có rất nhiều chương trình trên Internet và rất nhiều thiết bị trong các cửa hàng. Tuy nhiên, hóa ra, bạn chỉ có thể mua chúng riêng lẻ! Và điều này bất chấp thực tế là tất cả các bộ chuyển đổi USB mà tôi đã đánh giá<->COM chuyển đổi mức tín hiệu trước tiên thành TTL và chỉ sau đó thành RS-232. Tất nhiên, không có giải pháp nào trong số này phù hợp với tôi về tính linh hoạt. Tại sao tôi phải mua riêng bộ chuyển đổi USB?<->UART, nếu nó đã được bao gồm trong USB<->COM? Nghĩ theo cách này, tôi quyết định rằng mình không có thêm tiền và giải pháp tốt nhất là tự làm một bộ chuyển đổi đa năng.

Vi mạch cp2102 nổi tiếng được lấy làm cơ sở. Thứ nhất, nó cho phép bạn mô phỏng một cổng COM chính thức (tất cả các dòng, không chỉ Rx, Tx), thứ hai, nó có bộ body kit tối thiểu và cho phép bạn tạo một bo mạch có kích thước tối thiểu, và thứ ba, hóa ra là có mức giá hấp dẫn nhất. Mạch chuyển đổi thực tế không thay đổi so với bảng dữ liệu của vi mạch này; tôi chỉ cắt nó làm đôi để nếu cần, tôi có thể tách USB sang UART từ UART sang RS-232.

Mạch chuyển đổi USB sang UART:

Mạch chuyển đổi UART sang RS232:

Cuối cùng, hóa ra không phải hai (như kế hoạch ban đầu) mà là ba thiết bị trong một. Cả hai phần của thiết bị được phát triển đều có thể được sử dụng làm bộ chuyển đổi USB độc lập<->UART và UART<->RS232 (thật tiếc là cái sau cần nguồn điện bên ngoài). Bằng cách kết nối hai phần lại với nhau, chúng ta có được một bộ chuyển đổi USB<->COM. Để kết nối các bộ phận của bộ chuyển đổi, tôi đã sử dụng đầu nối IDC-14F và BH-14, với hệ thống dây điện phù hợp, được hàn rất thành công vào bảng hai mặt (bạn có thể xem chính xác cách thực hiện trong ảnh bên dưới).

Hình ảnh thiết bị đã hoàn thiện:

Thời điểm khó khăn duy nhất là hàn vi mạch cp2102, vì nó được sản xuất dưới dạng gói QFN. Bạn cần hàn nó bằng máy sấy tóc, trước đó đã hàn các điểm tiếp xúc được hàn trên vi mạch và các miếng đệm trên bo mạch. Trong trường hợp này, không cần thiết phải sử dụng bất kỳ chất trợ dung đặc biệt đắt tiền nào. Nhựa thông thông thường là đủ, nhưng nó cần được hòa tan trong rượu và sau đó bôi lên các khu vực bằng ống tiêm hoặc bàn chải đặc biệt. Nếu không có cồn, bạn có thể hòa tan nhựa thông trong rượu vodka, nhưng trong trường hợp này bạn sẽ phải đợi một chút sau khi bôi dung dịch, vì nước bay hơi kém hơn nhiều so với rượu.

Đầu nối USB được kết nối đặc biệt với bo mạch bằng dây mềm và không được hàn cứng vào bo mạch. Như thực tế cho thấy, những bộ chuyển đổi như vậy thường được sử dụng để kết nối nhiều bộ chuyển đổi khác nhau (COM sang HART, COM sang RS485, v.v.) với máy tính và khi đầu nối USB bị hàn cứng, đầu nối đó thường bị đứt nhất, không thể chịu được trọng lượng của tất cả các thiết bị kết nối với bộ chuyển đổi.

Riêng biệt, tôi muốn tập trung vào vấn đề chọn tụ điện. Bảng dữ liệu hiển thị xếp hạng tụ điện nguồn điện là 4,7 µF và 1 µF. Thông thường, để tiết kiệm không gian trên bo mạch hoặc vì một số lý do khác, các tụ điện nhỏ hơn được lắp đặt thay thế. Một lần nữa, như thực tế cho thấy, điều này có thể dẫn đến sự mất ổn định về nguồn điện của các thiết bị được kết nối với bộ chuyển đổi (không có nguồn điện bên ngoài và phải được cấp nguồn từ cổng COM) và kết quả là chúng không thể hoạt động.

6,3 USD (hiện tại là 1,43)

Tôi đã mua một Arduino Pro Mini hoàn chỉnh với bộ chuyển đổi USB-UART trên chip CP2102 cách đây 1,5 năm (giá của chúng đã giảm đáng kể kể từ đó) và chúng vẫn nằm trên kệ của tôi suốt thời gian qua. Mọi người không thể làm bất cứ điều gì trên bộ điều khiển này. Một vai trò quan trọng trong việc này là do việc flash một bản phác thảo trong Arduino Pro Mini, mặc dù không khó, nhưng khó hơn một chút so với Arduino UNO, Mega hoặc Nano.

Và vì vậy tôi quyết định sử dụng bộ điều khiển này trong một trong các dự án của mình, nó vẫn nằm im.

CHI TIẾT Arduino Pro Mini

ATmega168 hoặc 328

Điện áp hoạt động

3,35 -12 V (kiểu 3.3V) hoặc 5 - 12 V (kiểu 5V)

Chân I/O kỹ thuật số

14 (trong đó có 6 cung cấp đầu raPWM)

Chân đầu vào tương tự

Dòng điện một chiều trên mỗi chân I/O

16 KB (trong đó 2 KB được sử dụng bởi bootloader)

8 MHz (kiểu 3,3V) hoặc 16 MHz (kiểu 5V)

Tôi tình cờ có một model 5 volt 16 MHz trên chip ATmega 328. Hóa ra khi phân tích dữ liệu từ Internet, có những bảng điều khiển không định tuyến tín hiệu DTR. Trong trường hợp của tôi, mọi thứ đều được kết nối chính xác. Bộ sản phẩm bao gồm một bộ chuyển đổi USB-UART.

Nền tảng này chứa 14 đầu vào và đầu ra kỹ thuật số (6 trong số đó có thể được sử dụng làm đầu raPWM), 6 đầu vào analog, bộ cộng hưởng, nút đặt lại và lỗ gắn chốt. Một khối sáu chân có thể được kết nối với bảng chuyển đổi USB-UART.

Arduino Pro Mini rất giống với các đặc tính kỹ thuật và thông số của Arduino Nano. Chúng có cùng kích thước về chiều rộng, nhưng chiều dài của Arduino Pro Mini ngắn hơn khoảng 1 cm.

10mm là rất nhiều. Nhưng nếu bạn hàn các chân để kết nối USB-UART vào bo mạch, tất cả ưu điểm của bo mạch này so với Nano sẽ biến mất. Hiện tại, Arduino Pro Mini có giá thấp hơn Arduino Nano 0,25 USD. Nó phi vật chất. Không còn ưu điểm và nhược điểm nữa, chỉ có nhược điểm.

Và nhược điểm chính là việc tải các bản phác thảo phức tạp hơn.

Có một số cách để flash một bản phác thảo.

Một cách là sử dụng Arduino UNO làm USB-UART. Có rất nhiều hướng dẫn trên Internet về cách thực hiện việc này, vì vậy tôi sẽ không tập trung vào nó.

Cách thứ hai là sử dụng chính bộ chuyển đổi USB-UART. Tôi có nó và cái “đúng” nên tôi quyết định sử dụng nó. Bộ chuyển đổi hoạt động như thế nào? Arduino giao tiếp với chip chuyển đổi thông qua UART thông thường và kết nối với máy tính qua USB. Máy tính nhận dạng bộ điều hợp được kết nối là cổng COM.

Việc tải bản phác thảo lên Arduino Pro Mini, sau này hóa ra, không hề khó khăn chút nào. Bạn chỉ cần nối dây từ bộ 5 chân trên adapter và Arduino:

(Chuyển đổi)<->(Arduino)

DTR<->GRN
TXD<->RXI
RXD<->TXO
GND<->GND
5V<->VCC

Trên Arduino Pro Mini của tôi, tín hiệu DRT được gắn nhãn GRN. Thật không dễ để đoán được cái gì là cái gì, đặc biệt là vì trên một trong những trang web, một cố vấn “tốt bụng” đã viết rằng GRN cần được kết nối với GND. Chà, Internet là một bãi rác lớn và đây không phải là lần đầu tiên tôi tin rằng những người sẵn sàng đưa ra lời khuyên trên diễn đàn nhất không phải là những người thực sự hiểu chủ đề đang thảo luận. Vì vậy, GRN là DTR.

Dành cho những ai chưa biết DTR là gì:
Thiết bị đầu cuối dữ liệu đã sẵn sàng (DTR) - tín hiệu điều khiển trong giao thức dữ liệu nối tiếp, được truyền từ thiết bị đầu cuối (DTE) đến thiết bị nhậnđể chỉ ra rằng thiết bị đầu cuối đã sẵn sàng để liên lạc.

Trong Arduino, tín hiệu DTR bắt đầu tín hiệu Reset ngay khi bản phác thảo bắt đầu truyền.

Có thể thay vì kết nối DTR<->GRN kết nối bộ chuyển đổi DTR thông qua tụ điện 0,1uF để Reset Arduino Pro Mini. Nó cũng hoạt động theo cách đó, đã được thử nghiệm. Đó là thông qua tụ điện. Mặc dù thực tế là nó được viết trên các diễn đàn và nhiều trang web rằng bạn cần kết nối trực tiếp DTR và RESET, nhưng với kết nối trực tiếp, bản phác thảo sẽ không được chuyển. Ít nhất không có gì hiệu quả với tôi với kết nối trực tiếp.

Về mặt lý thuyết, khi họ viết trên Internet, bạn có thể ghi lại bản phác thảo mà không cần DTR bằng cách nhấn reset trên bảng điều khiển chính xác vào thời điểm quá trình ghi bắt đầu. Tôi đã nhiều lần cố gắng nắm bắt khoảnh khắc này nhưng không thể. Tôi đã không rèn luyện kỹ năng cố gắng đặt lại vào đúng thời điểm; việc tin tưởng vào chip chuyển đổi CP2102 sẽ dễ dàng hơn để cung cấp tín hiệu Đặt lại.

Nhưng không phải tất cả CP2102 đều được tạo ra như nhau. Có rất nhiều hàng giả giá rẻ được bán trên eBay và AliExpress mà mọi người gặp khó khăn và thường phải sửa đổi để có thể ghi lại bản phác thảo trong Arduino Pro Mini. Trong các bộ điều hợp này, tín hiệu DTR từ chân 28 của chip CP2102 không được định tuyến. Một số có dấu Rx và Tx lẫn lộn. Chính vì thế mà trên các diễn đàn trực tuyến có rất nhiều hướng dẫn trái ngược nhau và đôi khi chỉ đơn giản là đánh lừa người đọc. Tôi đã dành khoảng hai giờ để đọc những điều vô nghĩa này (tôi không muốn phát minh lại cái bánh xe, tôi nghĩ mình sẽ tiết kiệm thời gian) và cố gắng viết một bản phác thảo vào bộ điều khiển bằng cách sử dụng những hướng dẫn này. Kết quả là tất cả các hướng dẫn đều không hoạt động đối với bộ điều hợp CP2102 của tôi. Hóa ra nó là cái “đúng”, trong đó các dấu hiệu chính xác được áp dụng và tất cả các tín hiệu được định tuyến chính xác.

Chỉ cần kết nối tất cả các dây là đủ và mọi thứ đều hoạt động.

Do đó, nếu bạn cần phải ghi lại bản phác thảo trong Arduino Pro Mini qua USB-UART, trước hết, hãy kiểm tra xem tín hiệu DTR có được định tuyến trên bo mạch Arduino Pro Mini hay không. Tôi đọc được rằng có những bảng mà nó không được định tuyến. Trong trường hợp này, bạn có thể sử dụng tùy chọn kết nối tín hiệu DTR từ bo mạch bộ chuyển đổi USB-UART với chân RESET của Arduino Pro Mini thông qua tụ điện 0,1-0,15 µF.

Thứ hai, kiểm tra xem tín hiệu DTR có được kết nối với bất kỳ chân nào trên bo mạch bộ chuyển đổi USB-UART hay không. Chân này có thể và thậm chí được ký là DTR, nhưng không được kết nối với chân 28 của chip CP2102. Nếu chân 28 của vi mạch này không được kết nối ở bất kỳ đâu, bạn cần đảm bảo kết nối của nó với chân DTR. Nếu chân 28 được kết nối ở đâu đó trong mạch thì rãnh này cần được cắt và kết nối trực tiếp với chân DTR.

Tính chính xác của dấu Rx và Tx trên bảng CP2102 giả có thể được xác định bằng thực nghiệm;

Tôi cũng đọc hướng dẫn trên Internet rằng bạn cần ghi lại bản phác thảo bằng bộ chuyển đổi USB-UART CP2102 ở chế độ “Tải lên qua lập trình viên”, được cho là đây là cách duy nhất để mọi thứ hoạt động. Tôi không biết liệu tác giả của tác phẩm này có cố tình gây hiểu lầm cho người đọc hay không, hay liệu anh ta có thứ gì khác ngoài bộ chuyển đổi USB-UART CP2102 hay không, nhưng lời khuyên này SAI!

Thông qua bộ chuyển đổi USB-UART CP2102, máy tính sẽ thấy Arduino Pro Mini như thể nó được kết nối với cổng COM, nghĩa là giống như các Arduinos khác có bộ chuyển đổi USB-UART trên bo mạch.

Do đó, các bản phác thảo được tải lên Arduino Pro Mini giống như các mẫu Arduino khác. Bạn chỉ cần chọn model Pro Mini trong môi trường lập trình Arduino, sau đó ở mục bổ sung hiện ra, chọn một trong 4 loại bộ xử lý có thể có (ATmega168 hoặc 328, 3.3 hoặc 5V) và cổng COM ảo xuất hiện sau khi cài đặt Trình điều khiển bộ chuyển đổi USB-UART. Sau đó, bạn có thể sử dụng nút tải xuống hoặc Ctrl-U. Nếu mọi thứ được kết nối chính xác, loại và kiểu của bộ chuyển đổi không thành vấn đề, các bản phác thảo sẽ được tải lên qua UART. Chúng tôi chỉ cần chọn cổng COM mà bộ điều hợp được xác định.

Sau 2 giờ đọc các diễn đàn và trang web có “hướng dẫn” và “mẹo”, sai 99%, ít nhất là chúng không phù hợp với các mẫu Arduino Pro Mini và bộ chuyển đổi USB-UART CP2102 cụ thể của tôi, tôi đã kết nối được và tải lên mọi thứ vào bộ điều khiển một bản phác thảo đèn LED nhấp nháy được sửa đổi một chút. Tôi bắt anh ấy nháy mắt SOS bằng mã Morse.

Đây là bản phác thảo, trong trường hợp có ai quan tâm:

// chức năng thiết lập sẽ chạy một lần khi bạn nhấn reset hoặc cấp nguồn cho bo mạch
thiết lập void() (
// khởi tạo chân số 13 làm đầu ra.
pinMode(13, OUTPUT);
}

// hàm lặp chạy đi chạy lại mãi mãi
vòng lặp trống() (
độ trễ (100); // Chờ đợi
độ trễ (300); // Chờ đợi
digitalWrite(13, CAO); // bật đèn LED (CAO là mức điện áp)
độ trễ (100); // Chờ đợi
digitalWrite(13, THẤP); // tắt đèn LED bằng cách đặt điện áp ở mức THẤP
độ trễ (300); // Chờ đợi
digitalWrite(13, CAO); // bật đèn LED (CAO là mức điện áp)
độ trễ (100); // Chờ đợi
digitalWrite(13, THẤP); // tắt đèn LED bằng cách đặt điện áp ở mức THẤP
độ trễ (300);
digitalWrite(13, CAO); // bật đèn LED (CAO là mức điện áp)
độ trễ (300); // Chờ đợi
digitalWrite(13, THẤP); // tắt đèn LED bằng cách đặt điện áp ở mức THẤP
độ trễ (300); // Chờ đợi
digitalWrite(13, CAO); // bật đèn LED (CAO là mức điện áp)
độ trễ (300); // Chờ đợi
digitalWrite(13, THẤP); // tắt đèn LED bằng cách đặt điện áp ở mức THẤP
độ trễ (300); // Chờ đợi
digitalWrite(13, CAO); // bật đèn LED (CAO là mức điện áp)
độ trễ (300); // Chờ đợi
digitalWrite(13, THẤP); // tắt đèn LED bằng cách đặt điện áp ở mức THẤP
độ trễ (300); // Chờ đợi
digitalWrite(13, CAO); // bật đèn LED (CAO là mức điện áp)
độ trễ (100); // Chờ đợi
digitalWrite(13, THẤP); // tắt đèn LED bằng cách đặt điện áp ở mức THẤP
độ trễ (300); // Chờ đợi
digitalWrite(13, CAO); // bật đèn LED (CAO là mức điện áp)
độ trễ (100); // Chờ đợi
digitalWrite(13, THẤP); // tắt đèn LED bằng cách đặt điện áp ở mức THẤP
độ trễ (300); // Chờ đợi
digitalWrite(13, CAO); // bật đèn LED (CAO là mức điện áp)
độ trễ (100); // Chờ đợi
digitalWrite(13, THẤP); // tắt đèn LED bằng cách đặt điện áp ở mức THẤP
độ trễ (300); // Chờ đợi
độ trễ (1500); // đợi 1,5 giây.
}

Kết luận:

Nếu tôi không cố gắng tiết kiệm thời gian bằng cách “phát minh lại bánh xe” và không dành thời gian đọc những lời khuyên và hướng dẫn vô ích (thậm chí có hại) trên các diễn đàn và trang web, thì việc kết nối và cài đặt Arduino Pro Mini sẽ không chỉ mất 2 giờ mà còn là một tối đa 5-10 phút.

Tôi đã mua bộ Arduino Pro Mini và bộ chuyển đổi USB-UART CP2102, theo tiêu chuẩn ngày nay thì khá đắt. Sự thật là tôi được an ủi vì bộ chuyển đổi đã hoạt động chính xác và tất cả các tín hiệu đều được kết nối với nó.

Arduino Nano giống hệt về thông số và khả năng với Arduino Pro Mini, chỉ đắt hơn một chút (tối đa 25-50 xu), giảm kích thước 1 cm (và với các chân hàn, Arduino Pro Mini không hề mất gì cả), nhưng nhiều hơn thế. sử dụng thuận tiện hơn nhờ có USB-UART tích hợp và đầu nối MicroUSB thông dụng.

Arduino Pro Mini không phải là bo mạch phổ biến nhất, hãy nhập “Arduino Nano” khi tìm kiếm trên eBay và sắp xếp theo giá theo thứ tự tăng dần và bạn sẽ thấy những người Trung Quốc xảo quyệt đang bán rất rẻ rất nhiều Arduino Pro Minis trong phần này, vượt qua tắt như Nano? với hy vọng người mua sẽ không phát hiện ra và lợi dụng mức giá thấp sẽ mua những bộ điều khiển này. Họ chỉ đặt hy vọng vào những khách hàng là những kẻ ngu ngốc.

Tôi có khuyên bạn nên mua Arduino Pro Mini không? Dành cho người mới bắt đầu - không. Có - với một người biết chính xác nó là gì, nó có nhược điểm gì và liệu chúng có xứng đáng với số tiền tiết kiệm ít ỏi hay không.

Tôi nhắc lại một lần nữa rằng việc flash Arduino Pro Mini không khó, nhưng liệu việc kết nối hệ thống dây điện hoặc Arduino UNO có phức tạp không có giá trị chênh lệch từ 0,2-0,25 USD. Đặc biệt nếu bạn phải kết nối bộ điều khiển với máy tính để gỡ lỗi nhiều lần, nhưng nếu nằm trong hộp đựng thì sao? Nếu bạn nghĩ rằng việc kết nối và ngắt kết nối 5 dây từ mười đến mười lăm lần có lợi hơn việc trả 20 xu thì bộ điều khiển này là dành cho bạn.

Đó là tất cả. Tôi đã chia sẻ kinh nghiệm của mình và bày tỏ quan điểm của mình, tùy bạn quyết định.

tái bút Một thời gian trôi qua và tôi đã phần nào thay đổi quan điểm của mình về Arduino Pro Mini. Ngay cả mức tiết kiệm 25-50 xu cũng là rất nhiều, đặc biệt nếu lắp ráp một lô sản phẩm nhỏ sử dụng bộ điều khiển này. Rõ ràng là đối với một lô nhỏ, tốt hơn là nên tích hợp bộ điều khiển trực tiếp lên bo mạch thay vì sử dụng Arduino làm sẵn (đây vẫn giống một bảng gỡ lỗi hơn). Nhưng có nhiều lựa chọn khác nhau, đôi khi đã có những bảng làm sẵn và bạn có thể nâng cấp cũng như mở rộng chức năng của chúng bằng cách tích hợp Arduino. Nó sẽ rẻ hơn so với việc xây dựng bảng mới.

Và sự hiện diện của bộ chuyển đổi USB-UART trên sản phẩm được bàn giao cho người dùng là hoàn toàn không cần thiết, thậm chí có hại. Vì vậy Arduino Pro Mini có quyền sống.

Tài liệu này được xuất bản lần đầu tiên, công ty vui lòng cung cấp để đăng trên trang web của chúng tôi IC Book Labs và là tài sản độc quyền của công ty này. Việc sao chép mà không có sự cho phép bằng văn bản của người giữ bản quyền đều bị cấm.


Như đã biết, để chẩn đoán và lập trình lại hệ thống ô tô, đặc biệt là ECM, dòng chẩn đoán K-Line 12 V (ISO 9141) được sử dụng, tương thích về điện với giao diện nối tiếp RS232 được sử dụng trong máy tính cá nhân. Tuy nhiên, khi ghép nối ô tô và máy tính, một vấn đề nảy sinh do việc trao đổi với hệ thống ô tô được thực hiện ở tốc độ 200 và 10400 baud, vốn không phổ biến đối với máy tính. Bài viết này thảo luận về một giải pháp đơn giản cho vấn đề này đối với bộ điều hợp USB-to-COM sử dụng phần mềm do nhà phát triển cung cấp theo tiêu chuẩn.


Kiểm soát tốc độ truyền

Tốc độ truyền cho giao diện nối tiếp phụ thuộc vào bộ chia được cài đặt. Giá trị của số chia được xác định bởi nội dung của thanh ghi Bộ chia tốc độ Baud. Phân tích kiến ​​trúc bộ điều khiển và các phép tính đơn giản cho thấy không có trở ngại nào khi sử dụng tốc độ 200 và 10400 baud mà chúng ta quan tâm. Vậy vấn đề là gì?


Khi viết hệ điều hành, trình điều khiển và các chương trình ứng dụng khác nhau để phục vụ giao diện nối tiếp, nhằm đơn giản hóa, phạm vi tốc độ tiêu chuẩn đã trở thành truyền thống cho máy tính cá nhân đã được sử dụng: 300, 600, 1200, ..., 115200 baud. Tốc độ 200 và 10400 baud được sử dụng bởi đường chẩn đoán xe không được bao gồm trong phạm vi này.

Nhiệm vụ của chúng tôi là cung cấp hỗ trợ cho tốc độ truyền được bộ điều khiển FT232 và CP2102 hỗ trợ nhưng không được phần mềm “cổ điển” hỗ trợ. Ý tưởng là xác định lại tốc độ tiêu chuẩn bằng các giá trị mới, ví dụ thay thế 14400 baud bằng 10400 baud. Sau lần ghi đè này, yêu cầu bật chế độ 14400 baud sẽ dẫn đến việc bật chế độ 10400 baud. Vấn đề là chúng tôi đang bổ sung thêm tốc độ mới trong khi vẫn duy trì giao diện tương thích với phần mềm hiện có. Về nguyên tắc, bất kỳ tốc độ nào trong một chuỗi nhất định đều có thể được sử dụng để thay thế.

Ghi đè tốc độ cho bộ điều khiển CP2102

Chúng ta hãy xem xét thực tế việc thực hiện mô tả ý tưởng trên về khả năng tương thích của bộ điều khiển USB-to-COM CP2102 với bộ điều khiển hệ thống điều khiển động cơ điện tử (ECM) của xe. Như đã đề cập ở trên, đối với dòng chẩn đoán K-Line 12 V, tốc độ thông thường là 200 và 10400 baud.

May mắn thay, nhà sản xuất bộ điều khiển CP2102 đã cung cấp khả năng điều khiển linh hoạt các chế độ vận hành và trang bị cho thiết bị của họ tiện ích ấn định lại tỷ giá hối đoái, vì vậy ngày nay chúng ta không cần trình phân tách và gỡ lỗi, các thao tác của chúng ta sẽ rất đơn giản và sẽ giảm xuống sử dụng tiện ích tiêu chuẩn do Silicon Labs cung cấp.

Cũng lưu ý rằng kết quả hành động của chúng tôi sẽ là thay đổi nội dung của bảng lưu trữ các giá trị của bộ chia tần số cho tốc độ được hỗ trợ. Bảng này nằm trong bộ nhớ bất biến bên trong của chip CP2102 nên các thay đổi sẽ được lưu lại khi tắt nguồn hoặc thiết bị được lập trình lại được chuyển sang máy tính khác. Đối với hầu hết các ứng dụng, tùy chọn này thuận tiện hơn, chẳng hạn như thực hiện các thay đổi đối với trình điều khiển. Để đảm bảo tương thích với dòng chẩn đoán xe và phần mềm dùng để theo dõi trạng thái ECM, chúng ta cần thực hiện ghi đè sau: 14400 đến 10400 và 300 đến 200 baud.

Vì vậy, hãy khởi chạy tiện ích CP210 xBaudRateAliasConfig.exe. Cửa sổ Cấu hình tốc độ truyền CP210 x Baud xuất hiện. Nếu một số thiết bị CP2102 được kết nối, ở dòng trên cùng Thiết bị được kết nối, bạn cần chọn thiết bị mà chúng tôi sẽ lập trình lại. Nếu các thiết bị được kết nối sau khi tiện ích được khởi chạy, bạn nên sử dụng nút Làm mới để cập nhật danh sách các bộ điều hợp đã bật.

Nhấp vào nút Nhận cấu hình và nhận danh sách tốc độ truyền được hỗ trợ cho thiết bị đã chọn.

Nếu một bộ chuyển đổi USB-to-COM được sử dụng, danh sách sẽ được tạo tự động; nếu có nhiều bộ chuyển đổi thì sau khi chọn thiết bị, hãy nhớ nhấp vào nút Nhận cấu hình, nếu không, một bảng sẽ được hiển thị không tương ứng với hiện tại mà là với bộ chuyển đổi đã chọn trước đó!

Cột bên trái dưới ký hiệu # biểu thị số giới hạn tốc độ có điều kiện. Các cột Cao và Thấp trong cột Phạm vi tốc độ truyền được yêu cầu của ứng dụng chứa giới hạn trên và dưới của phạm vi tốc độ được liên kết với chế độ này. Nếu một tham số mà phần mềm yêu cầu nằm trong phạm vi này thì tham số đó sẽ được sử dụng ở chế độ hiện tại. Để hỗ trợ tốc độ mà phần mềm yêu cầu, chế độ trong phạm vi tốc độ này giảm sẽ được sử dụng. Các cột Mong muốn và Thực tế trong cột Tốc độ truyền UART hiển thị tốc độ truyền được lập trình cho chế độ này. Mong muốn - giá trị lý tưởng (thường là từ phạm vi tốc độ tiêu chuẩn). Thực tế là giá trị thực tế, do đặc điểm của sơ đồ xung nhịp của bộ điều khiển, không phải lúc nào cũng bằng giá trị lý tưởng.

Click đúp vào dòng tương ứng với chế độ đang chỉnh sửa. Nhập giá trị tỷ giá hối đoái được yêu cầu - Tốc độ truyền mong muốn. Điều này sẽ tự động cập nhật Tốc độ truyền thực tế. Từ quan điểm của tiêu chuẩn giao diện nối tiếp, độ lệch ±3% là có thể chấp nhận được. Độ chính xác cài đặt tốc độ của bộ điều khiển CP2102 đáp ứng được yêu cầu này. Chỉnh sửa dòng 19. Tốc độ baud ban đầu là 14400 baud.


Nhập giá trị mới - 10400 baud, nhấp vào OK và ghi đè được đặt!


Chỉnh sửa dòng 28. Tốc độ baud ban đầu là 300 baud.


Nhập giá trị mới - 200 baud, nhấp vào OK và ghi đè được đặt.

Sau khi tất cả các thay đổi đã được thực hiện, đừng quên nhấp vào nút Set Configuration trong cửa sổ CP210 x Baud Rate Configuration và kiểm tra xem các giá trị Desired vàActual trong các dòng đã chỉnh sửa đã thay đổi chưa.

Sử dụng các tiện ích chẩn đoán cổng nối tiếp, bạn có thể kiểm tra kết quả của các hành động được thực hiện bằng cách đặt tỷ giá hối đoái tương ứng với tỷ giá được ghi đè và so sánh tỷ giá đã đặt và tỷ giá đo được.

Ngoài ra, chúng tôi lưu ý rằng nút Nâng cao cho phép bạn tinh chỉnh các thông số. Để ghi đè, bạn phải chọn hộp kiểm Ghi đè đề xuất.

Các thông số Prescaler (hệ số chia cho prescaler) và Reload (giá trị cần nạp vào bộ đếm của bộ chia tần chính) xác định Baud Rate theo công thức sau:

Tốc độ truyền = ( 24.000.000 /Bộ đếm trước) / (65536 -Tải lại)

Lưu ý rằng bộ điều khiển CP2102 hỗ trợ tốc độ lên tới 1.000.000 baud ở chế độ dữ liệu 7 và 8 bit và 921.600 baud ở chế độ dữ liệu 5 và 6 bit, để trao đổi song công hoàn toàn. Nếu tốc độ được đặt trên giới hạn đã chỉ định, bộ điều khiển có thể gặp trục trặc.

Thời gian chờ khi trao đổi dữ liệu qua USB được kiểm soát bằng cách chỉnh sửa thông số USB Accept Timeout. Giá trị thời gian chờ tính bằng giây được xác định theo công thức:

Hết thời gian = ( 65536 – Nạp lại) / 500.000

Thời gian chờ đã chỉ định được sử dụng khi truyền dữ liệu nhận được qua giao diện nối tiếp qua USB sang máy tính. Nó xác định lượng thời gian bộ điều khiển chờ dữ liệu đầu vào. Nếu không nhận được dữ liệu trong khoảng thời gian xác định, bộ điều khiển sẽ kết thúc quá trình truyền USB. Giá trị thời gian chờ điển hình là 1 ms. Quản lý thời gian chờ cho phép bạn thiết lập sự thỏa hiệp khi đạt được hai tiêu chí mâu thuẫn lẫn nhau:

1 . Giảm thiểu độ trễ trong việc bảo trì thiết bị USB bằng máy tính, trong trường hợp này sẽ tăng tốc độ phản hồi của chương trình chẩn đoán đối với các sự kiện trong đối tượng được chẩn đoán.

2. Giảm thiểu tải cho máy tính bằng cách truyền các gói dữ liệu trống qua USB, việc này diễn ra khi không có dữ liệu nào được nhận qua giao diện nối tiếp. Hiệu suất tổng thể phụ thuộc vào điều này.
Thời gian chờ càng lớn thì thiết bị “không ngủ” khi không có dữ liệu càng lâu, tức là để cải thiện tiêu chí đầu tiên thì thời gian chờ phải tăng lên và đối với tiêu chí thứ hai thì giảm xuống.

Ghi đè tốc độ cho bộ điều khiển FT232

Hãy xem xét việc giải quyết vấn đề tương tự cho một trong những sản phẩm cạnh tranh - bộ điều khiển FT232 Công ty FTDI. Khác với ví dụ trên, ở đây chúng ta sẽ phải chỉnh sửa file cấu hình driver cổng nối tiếp FTDIPORT.INF. Cấu trúc của tệp này được mô tả trong, quy trình chỉnh sửa các trường đặt tốc độ truyền cho cổng nối tiếp được mô tả trong. Do đó, để thu gọn cách trình bày, trong phần mô tả của chúng tôi chỉ tập trung vào những tham số cần thay đổi. Cũng lưu ý rằng ví dụ này tương ứng với một trong một số tùy chọn để biểu diễn các tham số; tất cả các tùy chọn có thể có đều được liệt kê trong , .

Chúng tôi tìm thấy mục sau trong tệp FTDIPORT.INF:


HKR“Dữ liệu cấu hình”, 1 .01 .00 .3 F.3 F.10 .27 .88 .13 .C4 .09 .E2 .04 .71 .02 .38 .41 .9 c.80 .4 E.C0 .34 .00 , 1 A.00 .0 D.00 .06 .40 .03 .80 .00 .00 ,d0 .80

Chuỗi, bắt đầu với tham số thứ sáu, chứa các cặp byte, mỗi byte đặt hệ số phân chia tần số cho bộ chia xác định tỷ giá hối đoái qua giao diện nối tiếp. Mỗi cặp tương ứng với một tốc độ cụ thể. Hãy xem xét cặp tham số đầu tiên 10 giờ sáng, 27 giờ tối.

1 . Vì hai byte liền kề của một từ 16 bit được viết bắt đầu bằng byte có trọng số nhỏ nhất nên để có được số 16 bit, chúng cần được hoán đổi: 10 , 27 tương ứng 27 giờ 10 phút, h - nghĩa là số được viết theo hệ thập lục phân.

2. Chúng ta chuyển đổi số 16-ary 2710 h sang hệ nhị phân.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0
2 7 1 0

3. Chúng tôi giải thích giá trị nhị phân kết quả. Hai bit có ý nghĩa nhất của số 16 bit là bit 15, 14 xác định phần phân số của hệ số phân chia tần số theo bảng sau:

Chút 15 Chút 14 Phần phân số của số chia
0 0 0
0 1 0 .5
1 0 0 .25
1 1 0 .125

Trong trường hợp của chúng tôi, phần phân số của số chia bằng 0. Trường bit 13 –0 của số 16 bit có giá trị bằng phần nguyên của số chia, hãy chuyển từ hệ thập lục phân sang thập phân 2710 h = 10 .000.

4 . Tần số xung nhịp ở đầu vào bộ chia là 3 MHz = 3.000.000 Hz. Tốc độ truyền sẽ bằng tần số chia đầu vào chia cho hệ số chia.

Tốc độ Baud = 3.000.000 / 10.000 = 300 baud.

Vì vậy, cặp giá trị đầu tiên đặt tốc độ thành 300 baud. Giả sử chúng ta cần xác định lại tốc độ này thành 10400 baud. Hãy tính hệ số chia cần thiết (Divisor):

Số chia = 3 .000 .000 / 10 .400 = 288 ,46

Giá trị sẵn có gần nhất là 288,5. Chúng ta cần đặt phần nguyên của số chia bằng 288 , phân số bằng nhau 0 ,5 . Theo bảng 2 thì các bit 15,14 sẽ bằng 01 b, b nghĩa là số được ghi dưới hệ nhị phân. Hãy chuyển đổi 288 thành thập lục phân: 288 =120 h. Giá trị này phải được đặt trong trường bit 13–0. Chúng tôi kết hợp các bit 15 –14 và 13 –0, chúng tôi nhận được 4120 giờ.

Để xác định lại tốc độ từ 300 baud đến 10400 baud, mục nhập sẽ như sau:


HKR“Dữ liệu cấu hình”, 1 .01 .00 .3 F.3 F.20 .41 .88 .13 .C4 .09 .E2 .04 .71 .02 .38 .41 .9 c.80 .4 E.C0 .34 .00 , 1 A.00 .0 D.00 .06 .40 .03 .80 .00 .00 ,d0 .80

Hãy để chúng tôi nhắc bạn rằng nếu trình điều khiển thiết bị FT232 đã được cài đặt, để các thay đổi có hiệu lực, phần mềm thiết bị phải được gỡ cài đặt hoàn toàn và cài đặt lại từ thư mục chứa tệp INF đã chỉnh sửa. Do tính chất của hệ điều hành, chức năng cập nhật trình điều khiển hoặc xóa thiết bị trong trình quản lý thiết bị có thể không mang lại kết quả.

Nguồn thông tin.

Tiếp nối chủ đề “Lập trình viên AVR910”, về một thiết bị nhỏ, tôi xin giới thiệu với các bạn “thiết bị” tiếp theo của tôi.
Có một lần, khi bắt đầu thành thạo vi điều khiển, tôi có mục tiêu trao đổi dữ liệu với máy tính sử dụng nó.

Bộ điều khiển ATmega16 có UART (RS-232) hay nói đơn giản hơn là cổng COM, chỉ với mức 5 Volt.
Để “đưa” nó vào máy tính, bạn cần tăng các mức này lên 10 Volts.
Hoạt động này chủ yếu được thực hiện bởi chip MAX232.

Nó có thể được sử dụng khi sử dụng cổng COM trên máy tính (phần cứng).
Nhưng tôi muốn sử dụng cổng USB. Tôi đến cửa hàng và mua một sợi cáp dữ liệu đơn giản cho điện thoại di động của mình.
Đúng như tôi nghĩ, tất cả các dây cáp đều giống nhau và các chân trong đó là RX và TX.
Tôi đã nhầm... Các loại cáp tôi gặp được làm trên chip PL2303, không cung cấp cổng COM đầy đủ.
Trong số ba sợi cáp đã mua, tôi có một sợi, như người ta nói, hoạt động “rất hiệu quả”.
Nó dựa trên một con chip CP-2102. Cái này USB-RS232 bộ chuyển đổi.

Tìm thấy mạch chuyển đổi dựa trên con chip này trên Internet, tôi bắt đầu lắp ráp thiết bị. Con chip này có thể được lập trình với dữ liệu của bạn (Nhà sản xuất, số sê-ri, tên thiết bị, nếu bạn muốn kết nối thiết bị của mình với máy tính). Mọi thứ đều có trong file đính kèm.

Đề án của nó cực kỳ đơn giản.
Hơn nữa, bộ điều khiển có thể được kết nối ngay lập tức mà không cần thay đổi mức (5-10 Volt).
Việc thực hiện, như mọi khi, là siêu thu nhỏ.

Đã loại trừ mảnh vỡ. Tạp chí của chúng tôi tồn tại nhờ sự đóng góp của độc giả. Phiên bản đầy đủ của bài viết này chỉ có sẵn

Các tập tin

Mẫu trình điều khiển
🕗 13/12/08 ⚖️ 3,23 Mb ⇣ 435 Xin chào, độc giả!

--
Cám ơn vì sự quan tâm của bạn!

Chương trình tạo trình điều khiển của riêng bạn
🕗 13/12/08 ⚖️ 238,88 Kb ⇣ 416 Xin chào, độc giả! Tên tôi là Igor, tôi 45 tuổi, tôi là người Siberia và là một kỹ sư điện tử nghiệp dư đầy nhiệt huyết. Tôi đã nghĩ ra, tạo ra và duy trì trang web tuyệt vời này từ năm 2006.
Trong hơn 10 năm, tạp chí của chúng tôi chỉ tồn tại bằng chi phí của tôi.

Tốt! Phần thưởng miễn phí đã kết thúc. Nếu bạn muốn các tập tin và bài viết hữu ích, hãy giúp tôi!

--
Cám ơn vì sự quan tâm của bạn!
Igor Kotov, tổng biên tập tạp chí Datagor

Đề án và chữ ký
🕗 13/12/08 ⚖️ 41.22 Kb ⇣ 461