Truyền thông trong hệ vi điều khiển

Một phần của tài liệu Thiết kế chế tạo bộ phản hồi vị trí cho van điện ứng dụng trong cung cấp nước (Trang 36 - 41)

Ngoài các tác vụ xử lý độc lập, các vi điều khiển trong hệ vi điều khiển cần phải giao tiếp, truyền dữ liệu qua lại với nhau. Để giao tiếp giữa các vi điều khiển, người ta thường áp dụng một trong hai kiểu: truyền song song hoặc truyền nối tiếp.

Trong truyền dữ liệu song song, các bit dữ liệu được gửi đi một cách đồng thời, trong khoảng thời gian ngắn. Tốc độ truyền dữ liệu theo phương thức truyền song song lớn, phụ thuộc vào độ rộng của đường bus dữ liệu. Tuy nhiên nhược điểm của việc truyền dữ liệu song song là cần thiết lập một đường bus dữ liệu - thường cần tám đường dây dẫn trở lên, điều này dẫn đến việc thiếu hụt chân vảo/ra của vi điều khiển dùng cho các mục đích khác.

Khác với truyền thông song song, trong truyền thông nối tiếp dữ liệu được gửi đi từng bit một. Trong hệ vi điều khiển, tốc độ truyền thông kiểu nối tiếp thường không cao bằng truyền thông song song. Tuy nhiên ưu điểm của truyền thông loại này là sử dụng ít chân vào/ra.

Để đảm bảo số lượng chân vào/ra cho nhiều mục đích, đề tài sử dụng việc truyền dữ liệu nối tiếp để giao tiếp giữa hai vi điều khiển.

Một số chuẩn truyền nối tiếp có thể kể ra ở đây như:

a. Chuẩn giao tiếp một dây (1-Wire)

Chuẩn giao tiếp 1 dây (1-wire) do hãng Dallas giới thiệu. Chuẩn giao tiếp này chỉ cần 1 dây để truyền tín hiệu và làm nguồn nuôi (không tín dây mass). Đây là chuẩn giao tiếp không đồng bộ và bán song công (half-duplex). Giao tiếp này tuân theo mối liên hệ chủ/tớ (Master/Slave) một cách chặt chẽ. Trên một bus có thể gắn 1 hoặc nhiều thiết bị slave nhưng chỉ có một master.

Bus dữ liệu khi ở trạng thái rảnh (khi không có dữ liệu trên đường truyền) phải ở mức cao do vậy bus dữ liệu phải được kéo lên nguồn thông qua một điện trở. Giá trị điện trở này phụ thuộc vào đặc tính của các thiết bị slave.

Cấu trúc của bus 1 dây được mô tả như Hình 3.2.

MASTER DATA SLAVE 1 DATA SLAVE 1 DATA SLAVE 1 DATA VCC R

Hình 3.2. Giao tiếp 1 dây

Các thiết bị slave kết nối với cùng một bus được phân biệt với nhau nhờ 64 bit (8 byte) địa chỉ được chia làm ba phần chính:

- Byte đầu tiên, là mã họ thiết bị, xác định kiểu thiết bị. - 6 byte tiếp theo lưu trữ địa chỉ riêng của thiết bị.

- Byte cuối cùng là byte kiểm tra tính toàn vẹn dữ liệu CRC (cyclic redundancy check) có giá trị tương ứng với giá trị của 7 byte đầu tiên.

Với 8 byte địa chỉ tạo ra một số lượng rất lớn các địa chỉ. Do vậy vấn đề về địa chỉ không phải là vấn đề lớn trong chuẩn giao tiếp này.

Dữ liệu trên bus 1 dây được truyền dựa theo các khe thời gian 60µs do đó với master cần có bộ định thời với độ chính xác cao. Việc đảm bảo truyền thông 1 dây hoạt động tin cậy sẽ tiêu tốn khá nhiều thời gian tính toán cho vi điều khiển.

b. Chuẩn giao tiếp I2C

I2C (Inter-Integrated Circuit) được phát triển bới Philips, được rất nhiều nhà sản xuất linh kiện điện tử trên thế giới sử dụng như Texas Intrument(TI), MaximDallas, Analog Device, National Semiconductor … Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho rất nhiều loại IC khác nhau như vi điều khiển, RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tụ (DAC), IC điểu khiển LCD, LED…

Cấu trúc của một bus I2C được mô tả như Hình 3.3.

MASTER VCC SDA SCL R1 R2 SLAVE 1 SLAVE 2

Hình 3.3. Bus I2C và các thiết bị

Giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ để đồng bộ và chỉ theo một hướng.

Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện trở kéo lên. Giá trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao động trong khoảng 1KΩ đến 4.7KΩ.

Mỗi thiết bị kết nối với bus I2C sẽ được cấu hình với một địa chỉ duy nhất và được cấu hình hoặc là một master hoặc là một slave, mối quan hệ master-slave tồn tại trong suốt thời gian kết nối. Mỗi thiết bị có thể hoạt đông như là thiết bị nhận dữ liệu hay có thể vừa truyền vừa nhận.

Xung đồng hồ trên bus I2C chỉ có một hướng từ master đến slave, còn luồng dữ liệu có thể đi theo hai hướng, từ master đến slave hay ngược lại. Master giữ vai trò chủ động trong giao tiếp, tạo xung đồng hồ và quản lý địa chỉ của slave trong suốt quá trình giao tiếp.

Các bus I2C có thể hoạt động ở ba chế độ:

- Chế độ tiêu chuẩn (Standard mode) : tốc độ dữ liệu tối đa 100kbps. - Chế độ nhanh (Fast mode) : tốc độ dữ liệu tối đa 400 kbps.

- Chế độ cao tốc (High-Speed mode): tốc độ dữ liệu tối đa 3.4 Mbps.

c. Chuẩn giao tiếp SPI

SPI (Serial Peripheral Bus) là chuẩn truyền thông nối tiếp tốc độ cao do Motorola giới thiệu ở giữa những năm 1980. Ngày nay giao tiếp SPI được sử dụng phổ biến để giao tiếp với các vi điều khiển, EEPROM, IC thời gian thực...

SPI là kiểu truyền song công (full duplex), tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời. Đây là kiểu truyền thông dạng chủ/tớ (Master/Slave), trong đó có một thiết bị đóng vai trò là master phát xung đồng bộ điều phối quá trình tuyền thông. Các thiết bị slave không được định địa chỉ mà được xác định qua tín hiệu chọn chíp SS (Slave Slect).

Các tín hiệu trong giao tiếp SPI:

- SCLK: Tín hiệu xung đồng bộ để truyền nhận dữ liệu giữa master và slave. - MOSI (Master Output Slave Input.): Được sử dụng để truyền dữ liệu khi thiết bị được cấu hình là master và nhận dữ liệu khi cấu hình là slave.

- MISO (Master Input Slave Output): Được sử dụng để nhận dữ liệu khi khi thiết bị được cấu hình là master và truyền dữ liệu khi cấu hình là slave.

- SS: Tín hiệu chọn slave, được tạo bởi master để lựa chọn thiết bị slave muốn thực hiện truyền nhận.

Các kiểu kết nối trong mạng SPI được thể hiện trên Hình 3.4.

MASTER SCLK MOSI MISO SS1 SS2 SS3 SLAVE 1 SCLK MOSI MISO SS SLAVE 2 SCLK MOSI MISO SS SLAVE 3 SCLK MOSI MISO SS MASTER SCLK MOSI MISO SS1 SS2 SS3 SLAVE 1 SCLK MOSI MISO SS SLAVE 2 SCLK MOSI MISO SS SLAVE 3 SCLK MOSI MISO SS

a.Kết nối song song nhiều slave b.Kết nối daisy chain Hình 3.4. Các kiểu kết nối trong mạng SPI

Truyền dữ liệu với SPI: cả master và slave đều có thanh ghi dịch nối tiếp ở bên trong. Master bắt đầu việc trao đổi dữ liệu bằng cách truyền đi một byte vào thanh ghi dịch của nó, sau đó byte dữ liệu sẽ được đưa sang slave theo đường tín hiệu MOSI, slave sẽ truyền dữ liệu nằm trong thanh ghi dịch của chính nó ngược trở về master thông qua đường tín hiệu MISO. Bằng cách này, dữ liệu của hai thanh ghi sẽ được trao đổi với nhau. Việc đọc và ghi dữ liệu vào slave diễn ra cùng một lúc nên tốc độ trao đổi dữ liệu diễn ra rất nhanh.

So với các chuẩn giao tiếp thông dụng khác như I2C hay 1 dây, SPI là giao thức có tốc độ cao hơn nhiều, là chuẩn giao tiếp thường được sử dụng giữa các vi điều khiển. Vì vậy ở đề tài này sử dụng SPI là giao thức truyền thông nội bộ trong hệ vi điều khiển.

Một phần của tài liệu Thiết kế chế tạo bộ phản hồi vị trí cho van điện ứng dụng trong cung cấp nước (Trang 36 - 41)

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

(76 trang)