Là tần số hỗn hợp I2C có thể?


12

Giả sử chúng ta có một bus 400 kHz I 2 C. Có một chủ và một loạt các thiết bị nô lệ. Chúng tôi muốn giới thiệu thêm một thiết bị nô lệ, nhưng thật không may, nó chỉ đạt mức 100 kHz.

Rõ ràng, các lựa chọn thiết kế vững chắc là:

  • chỉ cần chạy xe buýt đó ở 100 kHz
  • sử dụng các bus riêng cho các thiết bị ngoại vi 400 kHz và 100 kHz

Nhưng câu hỏi chỉ là về một vụ hack: nếu chúng ta sử dụng một bus và giải quyết các thiết bị 400 kHz ở 400 kHz và chuyển bus thành 100 kHz khi nói chuyện với nô lệ 100 kHz thì sao?

Hoặc có thể nô lệ chậm hoạt động sai khi phản ứng với hàm băm 400 kHz mà nó nhìn thấy trên các dòng I 2 C vì nó nhầm tưởng rằng nó đang được xử lý?

Chúng ta có thể phụ thuộc vào các thiết bị 100 kHz để vẫn có thể xử lý tín hiệu 400 kHz I 2 C đủ tốt để bỏ qua các tin nhắn được gửi đến các nô lệ khác không?


4
Về câu cuối cùng của bạn, tôi không nghĩ bạn có thể phụ thuộc vào các thiết bị 100kHz có thể xử lý tín hiệu 400kHz.
gbmhunter

Tuy nhiên, đó chính xác là những gì chúng tôi phụ thuộc vào nếu chúng tôi thực hiện một vụ hack như vậy, vì vậy về cơ bản là không có vấn đề gì.
Kaz

Câu trả lời:


5

Như bạn đề xuất, làm như vậy không phải là một thực hành kỹ thuật tốt. Mặc dù một số thiết bị sẽ bỏ qua lưu lượng truy cập mà chúng không thể nhận (dưới mẫu), các thiết bị khác có thể làm lộn xộn xe buýt với các khung sai.

Do đó, câu trả lời bạn đang tìm kiếm phụ thuộc vào chi tiết cụ thể của ứng dụng của bạn, chẳng hạn như:

  • độ dài kết nối I2C của bạn
  • giá trị điện trở kéo lên
  • tương thích thiết bị

Tất nhiên, thật khó để dự đoán điều gì sẽ xảy ra với một thiết bị hoạt động bên ngoài thông số kỹ thuật của nó vài năm sau.

Một tùy chọn khác là chạy một dòng tắt máy cho các thiết bị chậm hoặc vượt qua dòng đồng hồ (miễn là chúng không thể tạo tín hiệu đồng hồ) thông qua cổng AND.


9

Một tùy chọn khác, nếu bạn không có thêm một bus I2C ra khỏi chủ của mình là sử dụng bộ chuyển đổi I2C, chẳng hạn như PCA9543A / 43B . Đặt các nô lệ 400kHz trên một nhánh và các nô lệ 100kHz trên nhánh kia và chuyển nó khi cần thiết.


Nếu bạn nhìn vào những gì Philips (người khởi tạo) nói, thì đó chính xác là cái này. Chúng không tương thích, và chuyển đổi xe buýt là biện pháp khắc phục được khuyến nghị. (Đó là trong một ghi chú ứng dụng).
gbarry

5

Không có gì đảm bảo rằng thiết bị 100kHz sẽ không hoạt động sai khi tiếp xúc với lưu lượng 400kHz - mọi thứ từ NACK đến treo xe buýt đều có thể.

Bạn nên chạy toàn bộ xe buýt ở tốc độ 100kHz hoặc có một xe buýt tốc độ thấp riêng cho thiết bị ngoại vi chậm của bạn.


3

Sự lựa chọn khác. Thay vì có hai bus, bạn có thể đơn giản sử dụng thêm một dòng (Dễ dàng hơn với phần mềm / bitbanged I 2 C). Một dòng đồng hồ riêng biệt, hoặc một dòng dữ liệu riêng biệt. Hoặc sử dụng một tôi 2 C đệm hoặc tôi 2 C chuyển sang đặt rằng chip 100MHz duy nhất trên đó là phân khúc riêng, mà không cần phải bất cứ điều gì thay đổi khác.

Hoặc chỉ kiểm tra nó trên một chiếc xe buýt. Rất có thể chip 100kHz sẽ ảnh hưởng đến đường truyền. Nó có thể đọc từng bit thứ 4 và cuối cùng nghĩ rằng nó đã được xử lý. Nhưng nó sẽ phải xem một điều kiện bắt đầu hợp lệ, và sau đó đọc từng bit thứ 4 trong số 32 bit tiếp theo là địa chỉ chính xác, sau đó nó sẽ phải cố gắng đọc vài byte tiếp theo dưới dạng thông tin hợp lệ để ghi vào các thanh ghi của nó hoặc cố gắng để đồng hồ dữ liệu. Tôi không nghĩ đó là một tình huống. Đặt cược tốt nhất là đơn giản nối nó trong một mạch thử nghiệm và kiểm tra xem nó ra.

Hai điều cần lưu ý, nếu đây là một mạch tắt, hoặc bạn chỉ thực hiện một số ít, đủ dễ để mạo hiểm hoặc thay đổi nó. Nếu đó là một mặt hàng được sản xuất hàng loạt, bạn có thể chỉ muốn có chiếc xe buýt thứ hai. Mặt khác, là bạn phải xem xét rằng chip 100kHz được sản xuất đơn giản cho thông số I 2 C ban đầu và rất có thể hỗ trợ tốc độ xung nhịp cao hơn. Nó chỉ chưa được thử nghiệm với thông số 400kHz tốc độ cao hơn.


2

Thiết kế của bus I2C là như vậy -

  1. khi một cạnh rơi xảy ra trên SCL, điều đó có thể khiến một thiết bị nô lệ ngay lập tức xác nhận SDA, mà không có bất kỳ độ trễ tối thiểu cụ thể nào;
  2. thứ tự tương đối của các cạnh tăng và giảm có tầm quan trọng quan trọng.

Do sự khác biệt về cường độ trình điều khiển và điện dung đường truyền, về mặt lý thuyết, một thiết bị có thể phản ứng với tốc độ giảm chậm trên SCL bằng cách điều khiển SDA nhanh đến mức một thiết bị khác sẽ thấy SDA rơi trước.

Có thể xác định nhiều ngưỡng logic trên SCL và chỉ định rằng đối với cạnh giảm trên SCL được coi là xuất hiện sau cạnh trên SDA, nó vẫn phải cao hơn 2/3 VDD khi phát hiện cạnh trên SDA, nhưng một thiết bị có thể không khẳng định SDA để đáp ứng với lợi thế của SCL cho đến khi nó giảm xuống dưới 1/3 VDD, nhưng thông số kỹ thuật không được viết theo các điều khoản như vậy.

Thay vào đó, các thiết bị nhìn thấy các cạnh rơi gần như đồng thời trên SDA và SCL thường sẽ coi cạnh trên SCL là đã xảy ra trước trừ khi nó thực sự đi trước cạnh trên SDA. Một số triển khai I2C xử lý việc này bằng cách đồng bộ hóa SCL và SDA với một số đồng hồ bên ngoài và yêu cầu rằng một cạnh của SDA phải được quan sát hai giai đoạn trước SCL để được coi là có trước. Nếu tốc độ hoạt động trên SCL và SDA quá nhanh so với đồng hồ đồng bộ hóa, các thiết bị có thể nhận thấy các chuỗi tín hiệu cao và thấp tùy ý trên SCL và SDA; nếu một trong những chuỗi đó trông giống như nó đang xử lý thiết bị chậm, nó có thể phản ứng tương ứng, đè bẹp bất kỳ thông tin liên lạc nào khác có thể xảy ra.

Không có lý do cụ thể nào mà các thiết bị trên xe buýt I2C phải dựa vào đồng bộ hóa với đồng hồ hệ thống (có thể cảm nhận hai ngưỡng riêng biệt trên SCL sẽ tốt hơn), nhưng thực tế là một số thiết bị trên thực tế hoạt động theo cách đó. Lưu ý rằng ngay cả khi một thiết bị bị giới hạn ở tốc độ chậm trong nội bộ muốn cùng tồn tại với một chiếc xe buýt nhanh, thì nó có thể sẽ phải sử dụng tối thiểu đồng hồ kéo dài bất cứ khi nào có điều gì đó xảy ra mà nó có thể quan tâm.

Điều này sẽ khiến một số giao tiếp xảy ra chậm hơn so với những gì chúng có thể xảy ra, nhưng sự suy giảm tốc độ có thể sẽ không tệ đến mức như yêu cầu với thiết kế đồng bộ hóa (số lượng thực tế mà thiết bị chậm kéo dài đồng hồ có thể sẽ không tệ đến mức số lượng đồng hồ phải bị chậm lại để tránh những trường hợp xấu nhất xảy ra trong các đơn vị đồng hồ được đồng bộ hóa).

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.