Mạch mở rộng giao tiếp I2C

Một phần của tài liệu Nghiên cứu, chế tạo hệ thống giám sát và thu thập dữ liệu trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 62 - 65)

Trong giao tiếp I2C, mỗi thiết bị Slave được gán một địa chỉ duy nhất dùng trong giao tiếp I2C. Nếu có bất kì hai thiết bị nào giống nhau (cùng địa chỉ) sẽ xảy ra lỗi trong quá trình giao tiếp gọi là lỗi “xung đột địa chỉ”. Đây cũng là một hạn chế lớn trong phương thức giao tiếp I2C. Trong mô hình của nhóm chúng em, việc sử dụng bốn cảm biến MPU- 6050 có địa chỉ trong giao tiếp I2C là b110100X (X =1 nếu chân AD0 ở mức HIGH, X=0 nếu chân AD0 ở mức LOW) đã làm xuất hiện vấn đề xung đột địa chỉ theo cách truyền dữ liệu thông thường.

Hình 3.12. Xung đột địa chỉ trong giao tiếp I2C

Để giải quyết vấn đề trên, giải pháp được đưa ra là sử dụng một mạch mở rộng giao tiếp I2C để không còn tình trạng xung đột địa chỉ nữa. Và thiết bị được nhóm chúng em sử dụng là module TCA9548A.

Hình 3.13. Module mở rộng giao tiếp I2C TCA9548A

Module TCA9548A là thiết bị với 8 công tắc dịch chuyển hai chiều được điều khiển bằng bus I2C. Cặp dây SCL/SDA được chia đến 8 kênh (channels) của thiết bị. Bất kì thiết bị nào với giao tiếp I2C khi kết nối đến kênh SCn/SDn sẽ được lựa chọn thông qua chương trình do người lập trình quyết định. Những kênh này sẽ giải quyết vấn đề xung đột địa chỉ trong giao tiếp I2C. Ví dụ, chúng ta có thể kết nối 8 cảm biến gia tốc cùng loại đến 8 kênh của thiết bị SCn/SDn [21].

54 Trong trường hợp bị sự cố Time-out hay thiết bị hoặc động không đúng thì tín hiệu đầu vào của chân RESET được kéo về mức LOW. Tương tự như vậy, việc thiết lập lại nguồn sẽ bỏ chọn tất cả các kênh và chạy thiết bị ở trạng thái I2C/SMBUS. Việc RESET sẽ gây ra hiện tượng thiết lập lại và khởi tạo xảy ra mà không cần nguồn. Điều này cho phép phục hồi khi một trong các kênh bị kẹt ở mức LOW.

Các cổng thông qua của các công tắt được xây dựng để có thể sử dụng chân VCC để hạn chế điện áp cao tối đa-điện áp đi qua TCA9548A. Giới hạn điện áp cao tối đa cho phép sử dụng các điện áp bus khác nhau trên mỗi cặp, do đó các phần 1.8V, 2.5V, 3V có thể giao tiếp với các phần 5V mà không cần bảo vệ chúng. Các điện trở pullup bên ngoài kéo điện áp lên mức mong muốn. Tất cả các chân I/O đều chịu được mức điện áp 5V.

Hình 3.14. Sơ đồ ứng dụng đơn giản hóa của TCA9548A

Bảng 3.2. Chức năng các chân trên TCA9548A

Tên chân Loại Mô tả

A0 I Đầu vào địa chỉ 0. Kết nối trực tiếp với VCC hoặc Ground

A1 I Đầu vào địa chỉ 1. Kết nối trực tiếp với VCC hoặc Ground

A2 I Đầu vào địa chỉ 2. Kết nối trực tiếp với VCC hoặc Ground

GND — Chân nối đất

RESET I Đầu vào thiết lập lại. Kết nối với VCC hoặc VDPUM bằng điện

trở kéo lên

SDn I/O Dữ liệu Serial kênh n. Kết nối với VDPUM thông qua điện trở

kéo lên

SCn I/O Đồng hồ nhịp xung kênh n. Kết nối trực tiếp với VDPUM thông

55

SCL I/O Dữ liệu Serial. Kết nối trực tiếp với VDPUM thông qua điện

trở kéo lên

SDA I/O Đồng hồ nhịp xung. Kết nối trực tiếp với VDPUM thông qua

điện trỡ kéo lên

VCC Power Nguồn cung cấp

Cấu trúc địa chỉ I2C của module TCA9548A được thể hiện ở hình 3.16 bên dưới.

Hình 3.15 Các thành phần trong byte địa chỉ của TCA9548A

Trong đó, các giá trị A2, A1, A0 có thể thay đổi tùy theo người lập trình để định địa chỉ khác nhau cho các Slave. Bit cuối cùng của địa chỉ Slave quyết định thao tác (đọc hoặc ghi) được thực hiện.

Bảng 3.3. Các địa chỉ khác nhau của TCA9548A

Inputs Địa chỉ Slave A2 A1 A0 L L L 112 (decimal), 70 (hexadecimal) L L H 113 (decimal), 71 (hexadecimal) L H L 114 (decimal), 72 (hexadecimal) L H H 115 (decimal), 73 (hexadecimal) H L L 116 (decimal), 74 (hexadecimal) H L H 117 (decimal), 75 (hexadecimal) H H L 118 (decimal), 76 (hexadecimal) H H H 119 (decimal), 77 (hexadecimal)

Sau khi xác nhận thành công byte địa chỉ, bus master sẽ gửi một byte lệnh được lưu trong thanh ghi điều khiển của TCA9548A, được gọi là tác vụ kiểm soát đăng kí. Việc đăng kí này được viết hoặc đọc thông qua bus I2C. mỗi bit trong byte lệnh sẽ tương ứng với một kênh SCn/SDn và mức HIGH để lựa chọn kênh đó. Có thể lựa chọn nhiều kênh

56 SCn/SDn cùng một lúc. Sau khi một kênh được lựa chọn, kênh này sẽ được kích hoạt sau điều kiện dùng (Stop Condition) trên bus I2C. Điều này đảm bảo tất cả các kênh luôn trong trạng thái mức HIGH khi kích hoạt, do đó sẽ không có điều kiện nào bị lỗi tại thời điểm kết nối. Luôn xảy ra điều kiện dừng ngay sau chu kì xác nhận. Nếu TCA9548A nhận được nhiều byte, nó sẽ lưu byte cuối cùng nhận được.

Một phần của tài liệu Nghiên cứu, chế tạo hệ thống giám sát và thu thập dữ liệu trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 62 - 65)

Tải bản đầy đủ (PDF)

(97 trang)