Đối với bus CAN, có thể hoán đổi các dòng CANH và CANL không?


7

Tương tự như câu hỏi Trong cáp USB, bạn có thể trao đổi dây D + và D- không? , có ổn không nếu chúng ta kết nối các dòng CAN-H và CAN-L?

CAN là một giao thức khác biệt. Có phải rằng các bit chiếm ưu thế và thoái biến không là gì ngoài sự khác biệt điện áp trên các đường dây này?

Thông tin về các giao thức khác biệt cũng sẽ hữu ích.


Tôi nghĩ rằng sẽ có hai sự khác biệt: hoán đổi ưu tiên H / L và dữ liệu được đảo ngược theo chiều bit. Nhưng tôi không biết đủ về CAN để trả lời một cách tự tin.
travisbartley

1
Số Không @ trav1s Số Lưu ý rằng chênh lệch điện áp có cực tính được chỉ định và điều đó có nghĩa là không có chênh lệch điện áp.
starblue

Câu trả lời:


12

Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào đưa ra một câu trả lời dứt khoát. Nhưng nhìn vào một vài datasheets, tôi không nghĩ vậy. USB đang xem xét sự hiện diện hay vắng mặt của sự thay đổi điện áp. Trong khi đó CANBus đang nhìn vào điện áp.

Dưới đây là một ví dụ về truyền USB:

USB NRZ

Những cái và số không được mã hóa tùy thuộc vào việc có hay không có sự chuyển đổi.

Trái ngược với CANBus có sự khác biệt về các mức điện áp như trong ứng dụng này lưu ý :

Vi sai CANBus

Nếu chúng ta nhìn vào một biểu dữ liệu cho bộ thu phát CANBus, ví dụ MCP2551 , chúng ta sẽ thấy một cái gì đó dọc theo dòng:

  Sym                  Characteristic                   Min     Max  Units
VDIFF(r)(i)    Recessive differential input voltage    -1.0    +0.5    V
VDIFF(d)(i)    Dominant differential input voltage      0.9     5.0    V

Vì một điện áp âm được đề cập, điều này khiến tôi tin rằng cực tính là quan trọng và chúng không lấy giá trị tuyệt đối của điện áp vi sai.

Vì vậy, nếu chúng ta có:

CANH=2.5V
CANL=2.5V

Thông thường bộ thu phát sẽ làm:

CANHCANL=2.5V2.5V=0.0V=Recessive

Nếu bạn hoán đổi các dòng nó sẽ làm:

CANLCANH=2.5V2.5V=0.0V=Recessive

Càng xa càng tốt. Vấn đề xảy ra khi chúng ta có:

CANH=3.5V
CANL=1.5V

Ở đây, bộ thu phát thường sẽ làm:

CANHCANL=3.5V1.5V=2.0V=Dominant

Nếu bạn hoán đổi các dòng nó sẽ làm:

CANLCANH=1.5V3.5V=2.0V=Recessive(out of spec)

Vì vậy, kết thúc nhận của bạn sẽ không thấy gì ngoài các bit recessive.


3
Aah ... Thú vị .... và và 7 bit lặn liên tiếp không gì khác ngoài điều kiện Lỗi ... Các nhà thiết kế thông số kỹ thuật thông minh như thế nào! :)
Swanand

Nghi ngờ: Tại sao -2V sẽ được coi là Recessive ??
Swanand


1
@Swanand Bảng dữ liệu cho chip cụ thể đó nói rằng điện áp trong khoảng -1.0V đến + 0.5V là hồi quy. Như tôi đã lưu ý ở trên, chip có thể sẽ thấy điện áp -2.0V là một bit lặn, mặc dù nó nằm ngoài thông số kỹ thuật. Mặc dù về mặt kỹ thuật, giá trị này không xác định giống như điện áp 0,7V (nằm giữa phần lõm và trội) và do đó, nó có thể là một trong hai. Vận hành thiết bị điện tử ngoài thông số kỹ thuật là con mèo của Schrödinger, vì vậy tốt nhất không nên làm điều đó nếu bạn không muốn đau đầu.
embedded.kyle

1
@Swanand - 7 bit recessive không phải là một điều kiện lỗi, nó xảy ra mọi lúc trên một xe buýt nhàn rỗi. Và khung lỗi được biểu thị bằng các bit trội.
Martin Thompson

2

Hoán đổi các dòng CAN-High và CAN-Low không hoạt động. Điều này là đủ dễ dàng để thiết lập theo kinh nghiệm. Tôi và đồng nghiệp của tôi đôi khi trao đổi các dòng một cách tình cờ, và rõ ràng là nó không hoạt động.


@ embed.kyle 'câu trả lời giải thích tại sao điều này xảy ra.
Swanand

1

Tất cả mọi thứ phụ thuộc vào mô hình chuyển mã. Chúng có tính linh hoạt nhất định đối với giá trị của CAN_H và CAN_L nhưng tôi nghĩ rằng giá trị của CAN_H phải cao hơn trong mọi trường hợp (ít nhất là đối với tất cả các mô hình mà tôi đã thấy).

Nếu bạn chỉ thay đổi chân cáp, ngay khi tất cả CAN_L được kết nối với nhau và CAN_H cũng vậy, nó sẽ hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.